From 66f22ab371d8f01afce39b1841d466cc5c6c520b Mon Sep 17 00:00:00 2001 From: mytonwalletorg Date: Sun, 28 Aug 2022 03:16:52 +0200 Subject: [PATCH] Initial --- .babelrc | 18 + .browserslistrc | 1 + .editorconfig | 12 + .env.example | 9 + .eslintignore | 8 + .eslintrc | 106 + .fantasticonrc.js | 12 + .gitattributes | 25 + .gitignore | 12 + .husky/pre-commit | 4 + .stylelintrc.json | 52 + LICENSE | 674 + README.md | 17 + deploy/copy_to_dist.sh | 6 + jest.config.js | 18 + package-lock.json | 56152 ++++++++++++++++ package.json | 119 + playwright.config.ts | 38 + plugins/brilliant-icons.css.hbs | 28 + plugins/wholePixel.js | 82 + postcss.config.js | 5 + public/apple-touch-icon.png | Bin 0 -> 8759 bytes public/browserconfig.xml | 9 + public/favicon.ico | Bin 0 -> 29472 bytes public/icon-128x128.png | Bin 0 -> 8187 bytes public/icon-192x192.png | Bin 0 -> 12975 bytes public/icon-384x384.png | Bin 0 -> 32234 bytes public/icon-512x512.png | Bin 0 -> 53238 bytes public/icon.png | Bin 0 -> 193404 bytes public/logo.svg | 1 + public/mstile-150x150.png | Bin 0 -> 9860 bytes public/site.webmanifest | 26 + src/@types/global.d.ts | 130 + src/@types/teact.d.ts | 3 + src/api/blockchains/index.ts | 5 + src/api/blockchains/ton/address.ts | 26 + src/api/blockchains/ton/auth.ts | 112 + src/api/blockchains/ton/constants.ts | 2 + src/api/blockchains/ton/index.ts | 28 + src/api/blockchains/ton/nfts.ts | 14 + src/api/blockchains/ton/tokens.ts | 132 + src/api/blockchains/ton/transactions.ts | 302 + src/api/blockchains/ton/util/tonapiio.ts | 58 + src/api/blockchains/ton/util/tonweb.ts | 42 + src/api/blockchains/ton/wallet.ts | 113 + src/api/common/dappPromises.ts | 51 + src/api/common/txCallbacks.ts | 15 + src/api/common/utils.ts | 28 + src/api/dappMethods/index.ts | 181 + src/api/dappMethods/types.ts | 5 + src/api/dappMethods/window.ts | 105 + src/api/index.ts | 3 + src/api/methods/auth.ts | 94 + src/api/methods/extension.ts | 50 + src/api/methods/helpers.ts | 21 + src/api/methods/index.ts | 6 + src/api/methods/init.ts | 19 + src/api/methods/nfts.ts | 18 + src/api/methods/tokens.ts | 46 + src/api/methods/transactions.ts | 90 + src/api/methods/types.ts | 5 + src/api/methods/wallet.ts | 107 + src/api/providers/base.ts | 17 + src/api/providers/direct/index.ts | 17 + .../extension/extensionForContentScript.ts | 25 + .../providers/extension/extensionForPopup.ts | 17 + src/api/providers/extension/index.ts | 32 + src/api/providers/worker/index.ts | 33 + src/api/providers/worker/worker.ts | 18 + src/api/storages/idb.ts | 9 + src/api/storages/index.ts | 8 + src/api/storages/localStorage.ts | 12 + src/api/storages/types.ts | 14 + src/api/types/dappUpdates.ts | 18 + src/api/types/index.ts | 2 + src/api/types/misc.ts | 45 + src/api/types/updates.ts | 68 + src/assets/arrow-right-white.svg | 1 + src/assets/arrow-right.svg | 1 + src/assets/card.jpg | Bin 0 -> 2009 bytes src/assets/card@2x.jpg | Bin 0 -> 7841 bytes src/assets/close.svg | 1 + src/assets/coins/btc.png | Bin 0 -> 13736 bytes src/assets/coins/ton.png | Bin 0 -> 4902 bytes src/assets/icons/arrow-right.svg | 1 + src/assets/icons/close.svg | 1 + src/assets/icons/copy.svg | 1 + src/assets/icons/eye-closed.svg | 1 + src/assets/icons/eye.svg | 1 + src/assets/icons/menu.svg | 1 + src/assets/icons/paste.svg | 1 + src/assets/icons/qrcode.svg | 1 + src/assets/icons/receive-alt.svg | 1 + src/assets/icons/receive.svg | 1 + src/assets/icons/search.svg | 1 + src/assets/icons/send-alt.svg | 1 + src/assets/icons/send.svg | 1 + src/assets/icons/share.svg | 1 + src/assets/icons/tonscan.svg | 1 + src/assets/logo.svg | 1 + src/assets/lottie/duck_bill.tgs | Bin 0 -> 45317 bytes src/assets/lottie/duck_guard.tgs | Bin 0 -> 39162 bytes src/assets/lottie/duck_happy.tgs | Bin 0 -> 39799 bytes src/assets/lottie/duck_hello.tgs | Bin 0 -> 32614 bytes src/assets/lottie/duck_no-data.tgs | Bin 0 -> 38173 bytes src/assets/lottie/duck_snitch.tgs | Bin 0 -> 34345 bytes src/assets/lottie/duck_stonks.tgs | Bin 0 -> 18344 bytes src/assets/lottie/duck_thumb.tgs | Bin 0 -> 51304 bytes src/assets/lottie/duck_ton.tgs | Bin 0 -> 33431 bytes src/assets/sale.png | Bin 0 -> 4587 bytes src/components/App.module.scss | 39 + src/components/App.tsx | 59 + src/components/auth/Auth.module.scss | 296 + src/components/auth/Auth.tsx | 72 + src/components/auth/AuthCreateBackup.tsx | 156 + src/components/auth/AuthCreatePassword.tsx | 216 + src/components/auth/AuthCreatingWallet.tsx | 53 + src/components/auth/AuthImportMnemonic.tsx | 113 + src/components/auth/AuthStart.tsx | 61 + src/components/auth/MnemonicCheck.tsx | 103 + src/components/auth/MnemonicList.tsx | 44 + src/components/auth/SafetyRules.tsx | 77 + src/components/main/Activity.module.scss | 50 + src/components/main/Activity.tsx | 153 + src/components/main/Assets.module.scss | 48 + src/components/main/Assets.tsx | 71 + src/components/main/BackupModal.module.scss | 7 + src/components/main/BackupModal.tsx | 164 + src/components/main/BackupWarning.module.scss | 27 + src/components/main/BackupWarning.tsx | 51 + src/components/main/Card.module.scss | 152 + src/components/main/Card.tsx | 98 + src/components/main/Dialogs.module.scss | 13 + src/components/main/Dialogs.tsx | 58 + src/components/main/Header.module.scss | 85 + src/components/main/Header.tsx | 186 + src/components/main/Main.module.scss | 185 + src/components/main/Main.tsx | 110 + src/components/main/Nft.module.scss | 121 + src/components/main/Nfts.tsx | 84 + src/components/main/Notifications.tsx | 37 + src/components/main/Receive.module.scss | 152 + src/components/main/Receive.tsx | 262 + .../main/SignatureModal.module.scss | 29 + src/components/main/SignatureModal.tsx | 177 + src/components/main/Token.module.scss | 106 + src/components/main/Token.tsx | 65 + src/components/main/Transaction.module.scss | 154 + src/components/main/Transaction.tsx | 93 + .../main/TransactionModal.module.scss | 66 + src/components/main/TransactionModal.tsx | 200 + src/components/transfer/Transfer.module.scss | 197 + src/components/transfer/TransferInitial.tsx | 272 + src/components/transfer/TransferModal.tsx | 277 + src/components/ui/AnimatedIcon.tsx | 70 + src/components/ui/AnimatedSticker.tsx | 239 + src/components/ui/Button.module.scss | 199 + src/components/ui/Button.tsx | 90 + src/components/ui/Checkbox.module.scss | 63 + src/components/ui/Checkbox.tsx | 41 + src/components/ui/Image.tsx | 43 + src/components/ui/Input.module.scss | 279 + src/components/ui/Input.tsx | 114 + src/components/ui/InputMnemonic.module.scss | 71 + src/components/ui/InputMnemonic.tsx | 163 + src/components/ui/InputNumber.tsx | 56 + src/components/ui/InputNumberRich.tsx | 156 + src/components/ui/Loading.module.scss | 80 + src/components/ui/Loading.tsx | 27 + src/components/ui/Menu.module.scss | 64 + src/components/ui/Menu.tsx | 105 + src/components/ui/MenuItem.module.scss | 60 + src/components/ui/MenuItem.tsx | 79 + src/components/ui/Modal.module.scss | 249 + src/components/ui/Modal.tsx | 147 + src/components/ui/ModalHeader.tsx | 30 + src/components/ui/Notification.module.scss | 43 + src/components/ui/Notification.tsx | 78 + src/components/ui/PasswordForm.module.scss | 52 + src/components/ui/PasswordForm.tsx | 113 + src/components/ui/Portal.ts | 38 + src/components/ui/SearchBar.module.scss | 33 + src/components/ui/SearchBar.tsx | 22 + src/components/ui/SuggestionsList.module.scss | 60 + src/components/ui/SuggestionsList.tsx | 50 + src/components/ui/Switcher.module.scss | 64 + src/components/ui/Switcher.tsx | 54 + src/components/ui/Tab.module.scss | 84 + src/components/ui/Tab.tsx | 76 + src/components/ui/TabList.module.scss | 38 + src/components/ui/TabList.tsx | 85 + src/components/ui/Transition.scss | 721 + src/components/ui/Transition.tsx | 365 + src/components/ui/helpers/animatedAssets.ts | 21 + src/components/ui/helpers/assetLogos.ts | 7 + src/config.ts | 64 + src/extension/config.ts | 3 + src/extension/contentScript.ts | 53 + src/extension/manifest.json | 51 + src/extension/provider.ts | 79 + src/extension/provider/tonMagic.ts | 122 + src/extension/serviceWorker.ts | 2 + src/global/actions/api/auth.ts | 102 + src/global/actions/api/initial.ts | 6 + src/global/actions/api/wallet.ts | 248 + src/global/actions/apiUpdates/dapp.ts | 84 + src/global/actions/apiUpdates/initial.ts | 29 + src/global/actions/apiUpdates/transactions.ts | 21 + src/global/actions/index.ts | 9 + src/global/actions/ui/initial.ts | 162 + src/global/cache.ts | 129 + src/global/helpers/index.ts | 14 + src/global/index.ts | 10 + src/global/init.ts | 19 + src/global/initialState.ts | 25 + src/global/reducers/index.ts | 2 + src/global/reducers/misc.ts | 84 + src/global/reducers/wallet.ts | 58 + src/global/selectors/index.ts | 51 + src/global/types.ts | 163 + src/hooks/useBackgroundMode.ts | 30 + src/hooks/useBrowserUiColor.ts | 32 + src/hooks/useCurrentOrPrev.ts | 10 + src/hooks/useEffectWithPrevDeps.ts | 14 + src/hooks/useFlag.ts | 17 + src/hooks/useFocusAfterAnimation.tsx | 31 + src/hooks/useForceUpdate.ts | 11 + src/hooks/useHeavyAnimationCheck.ts | 67 + src/hooks/useHorizontalScroll.ts | 24 + src/hooks/useInfinityLoader.ts | 34 + src/hooks/useMediaTransition.ts | 8 + src/hooks/usePasswordValidation.ts | 29 + src/hooks/usePrevious.ts | 16 + src/hooks/useShowTransition.ts | 66 + src/hooks/useTimeout.ts | 19 + src/hooks/useVirtualBackdrop.ts | 41 + src/index.html | 50 + src/index.tsx | 42 + src/lib/rlottie/RLottie.ts | 476 + src/lib/rlottie/__mocks__/RLottie.ts | 2 + src/lib/rlottie/rlottie-wasm.js | 1 + src/lib/rlottie/rlottie-wasm.wasm | Bin 0 -> 317584 bytes src/lib/rlottie/rlottie.worker.ts | 141 + src/lib/teact/dom-events.ts | 188 + src/lib/teact/teact-dom.ts | 661 + src/lib/teact/teact.ts | 683 + src/lib/teact/teactn.tsx | 321 + src/styles/_variables.scss | 168 + src/styles/brilliant-icons.css | 61 + src/styles/brilliant-icons.woff | Bin 0 -> 2600 bytes src/styles/brilliant-icons.woff2 | Bin 0 -> 2052 bytes src/styles/index.scss | 153 + src/styles/reboot.css | 348 + src/util/PostMessageConnector.ts | 234 + src/util/animation.ts | 95 + src/util/areDeepEqual.ts | 35 + src/util/arePropsShallowEqual.ts | 44 + src/util/buildClassName.ts | 28 + src/util/buildStyle.ts | 5 + src/util/callbacks.ts | 66 + src/util/captureEscKeyListener.ts | 7 + src/util/captureKeyboardListeners.ts | 88 + src/util/clipboard.ts | 65 + src/util/createPostMessageInterface.ts | 172 + src/util/cssAnimationEndListeners.ts | 40 + src/util/cycleRestrict.ts | 3 + src/util/dateFormat.ts | 65 + src/util/environment.ts | 42 + src/util/fastSmoothScrollHorizontal.ts | 54 + src/util/forceReflow.ts | 5 + src/util/formatNumber.ts | 29 + src/util/generateIdFor.ts | 11 + src/util/handleError.ts | 30 + src/util/iteratees.ts | 152 + src/util/memoized.ts | 19 + src/util/round.ts | 3 + src/util/saveCaretPosition.ts | 41 + src/util/schedulers.ts | 192 + src/util/shortenAddress.ts | 9 + src/util/trapFocus.ts | 39 + src/util/windowSize.ts | 20 + src/util/withCache.ts | 24 + tests/init.js | 58 + tests/initApp.tsx | 23 + tests/staticFileMock.js | 2 + tsconfig.json | 29 + webpack.config.js | 220 + 287 files changed, 76350 insertions(+) create mode 100644 .babelrc create mode 100644 .browserslistrc create mode 100644 .editorconfig create mode 100644 .env.example create mode 100644 .eslintignore create mode 100644 .eslintrc create mode 100644 .fantasticonrc.js create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100755 .husky/pre-commit create mode 100644 .stylelintrc.json create mode 100644 LICENSE create mode 100644 README.md create mode 100755 deploy/copy_to_dist.sh create mode 100644 jest.config.js create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 playwright.config.ts create mode 100644 plugins/brilliant-icons.css.hbs create mode 100644 plugins/wholePixel.js create mode 100644 postcss.config.js create mode 100644 public/apple-touch-icon.png create mode 100644 public/browserconfig.xml create mode 100644 public/favicon.ico create mode 100644 public/icon-128x128.png create mode 100644 public/icon-192x192.png create mode 100644 public/icon-384x384.png create mode 100644 public/icon-512x512.png create mode 100644 public/icon.png create mode 100644 public/logo.svg create mode 100644 public/mstile-150x150.png create mode 100644 public/site.webmanifest create mode 100644 src/@types/global.d.ts create mode 100644 src/@types/teact.d.ts create mode 100644 src/api/blockchains/index.ts create mode 100644 src/api/blockchains/ton/address.ts create mode 100644 src/api/blockchains/ton/auth.ts create mode 100644 src/api/blockchains/ton/constants.ts create mode 100644 src/api/blockchains/ton/index.ts create mode 100644 src/api/blockchains/ton/nfts.ts create mode 100644 src/api/blockchains/ton/tokens.ts create mode 100644 src/api/blockchains/ton/transactions.ts create mode 100644 src/api/blockchains/ton/util/tonapiio.ts create mode 100644 src/api/blockchains/ton/util/tonweb.ts create mode 100644 src/api/blockchains/ton/wallet.ts create mode 100644 src/api/common/dappPromises.ts create mode 100644 src/api/common/txCallbacks.ts create mode 100644 src/api/common/utils.ts create mode 100644 src/api/dappMethods/index.ts create mode 100644 src/api/dappMethods/types.ts create mode 100644 src/api/dappMethods/window.ts create mode 100644 src/api/index.ts create mode 100644 src/api/methods/auth.ts create mode 100644 src/api/methods/extension.ts create mode 100644 src/api/methods/helpers.ts create mode 100644 src/api/methods/index.ts create mode 100644 src/api/methods/init.ts create mode 100644 src/api/methods/nfts.ts create mode 100644 src/api/methods/tokens.ts create mode 100644 src/api/methods/transactions.ts create mode 100644 src/api/methods/types.ts create mode 100644 src/api/methods/wallet.ts create mode 100644 src/api/providers/base.ts create mode 100644 src/api/providers/direct/index.ts create mode 100644 src/api/providers/extension/extensionForContentScript.ts create mode 100644 src/api/providers/extension/extensionForPopup.ts create mode 100644 src/api/providers/extension/index.ts create mode 100644 src/api/providers/worker/index.ts create mode 100644 src/api/providers/worker/worker.ts create mode 100644 src/api/storages/idb.ts create mode 100644 src/api/storages/index.ts create mode 100644 src/api/storages/localStorage.ts create mode 100644 src/api/storages/types.ts create mode 100644 src/api/types/dappUpdates.ts create mode 100644 src/api/types/index.ts create mode 100644 src/api/types/misc.ts create mode 100644 src/api/types/updates.ts create mode 100644 src/assets/arrow-right-white.svg create mode 100644 src/assets/arrow-right.svg create mode 100644 src/assets/card.jpg create mode 100644 src/assets/card@2x.jpg create mode 100644 src/assets/close.svg create mode 100644 src/assets/coins/btc.png create mode 100644 src/assets/coins/ton.png create mode 100644 src/assets/icons/arrow-right.svg create mode 100644 src/assets/icons/close.svg create mode 100644 src/assets/icons/copy.svg create mode 100644 src/assets/icons/eye-closed.svg create mode 100644 src/assets/icons/eye.svg create mode 100644 src/assets/icons/menu.svg create mode 100644 src/assets/icons/paste.svg create mode 100644 src/assets/icons/qrcode.svg create mode 100644 src/assets/icons/receive-alt.svg create mode 100644 src/assets/icons/receive.svg create mode 100644 src/assets/icons/search.svg create mode 100644 src/assets/icons/send-alt.svg create mode 100644 src/assets/icons/send.svg create mode 100644 src/assets/icons/share.svg create mode 100644 src/assets/icons/tonscan.svg create mode 100644 src/assets/logo.svg create mode 100644 src/assets/lottie/duck_bill.tgs create mode 100644 src/assets/lottie/duck_guard.tgs create mode 100644 src/assets/lottie/duck_happy.tgs create mode 100644 src/assets/lottie/duck_hello.tgs create mode 100644 src/assets/lottie/duck_no-data.tgs create mode 100644 src/assets/lottie/duck_snitch.tgs create mode 100644 src/assets/lottie/duck_stonks.tgs create mode 100644 src/assets/lottie/duck_thumb.tgs create mode 100644 src/assets/lottie/duck_ton.tgs create mode 100644 src/assets/sale.png create mode 100644 src/components/App.module.scss create mode 100644 src/components/App.tsx create mode 100644 src/components/auth/Auth.module.scss create mode 100644 src/components/auth/Auth.tsx create mode 100644 src/components/auth/AuthCreateBackup.tsx create mode 100644 src/components/auth/AuthCreatePassword.tsx create mode 100644 src/components/auth/AuthCreatingWallet.tsx create mode 100644 src/components/auth/AuthImportMnemonic.tsx create mode 100644 src/components/auth/AuthStart.tsx create mode 100644 src/components/auth/MnemonicCheck.tsx create mode 100644 src/components/auth/MnemonicList.tsx create mode 100644 src/components/auth/SafetyRules.tsx create mode 100644 src/components/main/Activity.module.scss create mode 100644 src/components/main/Activity.tsx create mode 100644 src/components/main/Assets.module.scss create mode 100644 src/components/main/Assets.tsx create mode 100644 src/components/main/BackupModal.module.scss create mode 100644 src/components/main/BackupModal.tsx create mode 100644 src/components/main/BackupWarning.module.scss create mode 100644 src/components/main/BackupWarning.tsx create mode 100644 src/components/main/Card.module.scss create mode 100644 src/components/main/Card.tsx create mode 100644 src/components/main/Dialogs.module.scss create mode 100644 src/components/main/Dialogs.tsx create mode 100644 src/components/main/Header.module.scss create mode 100644 src/components/main/Header.tsx create mode 100644 src/components/main/Main.module.scss create mode 100644 src/components/main/Main.tsx create mode 100644 src/components/main/Nft.module.scss create mode 100644 src/components/main/Nfts.tsx create mode 100644 src/components/main/Notifications.tsx create mode 100644 src/components/main/Receive.module.scss create mode 100644 src/components/main/Receive.tsx create mode 100644 src/components/main/SignatureModal.module.scss create mode 100644 src/components/main/SignatureModal.tsx create mode 100644 src/components/main/Token.module.scss create mode 100644 src/components/main/Token.tsx create mode 100644 src/components/main/Transaction.module.scss create mode 100644 src/components/main/Transaction.tsx create mode 100644 src/components/main/TransactionModal.module.scss create mode 100644 src/components/main/TransactionModal.tsx create mode 100644 src/components/transfer/Transfer.module.scss create mode 100644 src/components/transfer/TransferInitial.tsx create mode 100644 src/components/transfer/TransferModal.tsx create mode 100644 src/components/ui/AnimatedIcon.tsx create mode 100644 src/components/ui/AnimatedSticker.tsx create mode 100644 src/components/ui/Button.module.scss create mode 100644 src/components/ui/Button.tsx create mode 100644 src/components/ui/Checkbox.module.scss create mode 100644 src/components/ui/Checkbox.tsx create mode 100644 src/components/ui/Image.tsx create mode 100644 src/components/ui/Input.module.scss create mode 100644 src/components/ui/Input.tsx create mode 100644 src/components/ui/InputMnemonic.module.scss create mode 100644 src/components/ui/InputMnemonic.tsx create mode 100644 src/components/ui/InputNumber.tsx create mode 100644 src/components/ui/InputNumberRich.tsx create mode 100644 src/components/ui/Loading.module.scss create mode 100644 src/components/ui/Loading.tsx create mode 100644 src/components/ui/Menu.module.scss create mode 100644 src/components/ui/Menu.tsx create mode 100644 src/components/ui/MenuItem.module.scss create mode 100644 src/components/ui/MenuItem.tsx create mode 100644 src/components/ui/Modal.module.scss create mode 100644 src/components/ui/Modal.tsx create mode 100644 src/components/ui/ModalHeader.tsx create mode 100644 src/components/ui/Notification.module.scss create mode 100644 src/components/ui/Notification.tsx create mode 100644 src/components/ui/PasswordForm.module.scss create mode 100644 src/components/ui/PasswordForm.tsx create mode 100644 src/components/ui/Portal.ts create mode 100644 src/components/ui/SearchBar.module.scss create mode 100644 src/components/ui/SearchBar.tsx create mode 100644 src/components/ui/SuggestionsList.module.scss create mode 100644 src/components/ui/SuggestionsList.tsx create mode 100644 src/components/ui/Switcher.module.scss create mode 100644 src/components/ui/Switcher.tsx create mode 100644 src/components/ui/Tab.module.scss create mode 100644 src/components/ui/Tab.tsx create mode 100644 src/components/ui/TabList.module.scss create mode 100644 src/components/ui/TabList.tsx create mode 100644 src/components/ui/Transition.scss create mode 100644 src/components/ui/Transition.tsx create mode 100644 src/components/ui/helpers/animatedAssets.ts create mode 100644 src/components/ui/helpers/assetLogos.ts create mode 100644 src/config.ts create mode 100644 src/extension/config.ts create mode 100644 src/extension/contentScript.ts create mode 100644 src/extension/manifest.json create mode 100644 src/extension/provider.ts create mode 100644 src/extension/provider/tonMagic.ts create mode 100644 src/extension/serviceWorker.ts create mode 100644 src/global/actions/api/auth.ts create mode 100644 src/global/actions/api/initial.ts create mode 100644 src/global/actions/api/wallet.ts create mode 100644 src/global/actions/apiUpdates/dapp.ts create mode 100644 src/global/actions/apiUpdates/initial.ts create mode 100644 src/global/actions/apiUpdates/transactions.ts create mode 100644 src/global/actions/index.ts create mode 100644 src/global/actions/ui/initial.ts create mode 100644 src/global/cache.ts create mode 100644 src/global/helpers/index.ts create mode 100644 src/global/index.ts create mode 100644 src/global/init.ts create mode 100644 src/global/initialState.ts create mode 100644 src/global/reducers/index.ts create mode 100644 src/global/reducers/misc.ts create mode 100644 src/global/reducers/wallet.ts create mode 100644 src/global/selectors/index.ts create mode 100644 src/global/types.ts create mode 100644 src/hooks/useBackgroundMode.ts create mode 100644 src/hooks/useBrowserUiColor.ts create mode 100644 src/hooks/useCurrentOrPrev.ts create mode 100644 src/hooks/useEffectWithPrevDeps.ts create mode 100644 src/hooks/useFlag.ts create mode 100644 src/hooks/useFocusAfterAnimation.tsx create mode 100644 src/hooks/useForceUpdate.ts create mode 100644 src/hooks/useHeavyAnimationCheck.ts create mode 100644 src/hooks/useHorizontalScroll.ts create mode 100644 src/hooks/useInfinityLoader.ts create mode 100644 src/hooks/useMediaTransition.ts create mode 100644 src/hooks/usePasswordValidation.ts create mode 100644 src/hooks/usePrevious.ts create mode 100644 src/hooks/useShowTransition.ts create mode 100644 src/hooks/useTimeout.ts create mode 100644 src/hooks/useVirtualBackdrop.ts create mode 100644 src/index.html create mode 100644 src/index.tsx create mode 100644 src/lib/rlottie/RLottie.ts create mode 100644 src/lib/rlottie/__mocks__/RLottie.ts create mode 100644 src/lib/rlottie/rlottie-wasm.js create mode 100644 src/lib/rlottie/rlottie-wasm.wasm create mode 100644 src/lib/rlottie/rlottie.worker.ts create mode 100644 src/lib/teact/dom-events.ts create mode 100644 src/lib/teact/teact-dom.ts create mode 100644 src/lib/teact/teact.ts create mode 100644 src/lib/teact/teactn.tsx create mode 100644 src/styles/_variables.scss create mode 100644 src/styles/brilliant-icons.css create mode 100644 src/styles/brilliant-icons.woff create mode 100644 src/styles/brilliant-icons.woff2 create mode 100644 src/styles/index.scss create mode 100644 src/styles/reboot.css create mode 100644 src/util/PostMessageConnector.ts create mode 100644 src/util/animation.ts create mode 100644 src/util/areDeepEqual.ts create mode 100644 src/util/arePropsShallowEqual.ts create mode 100644 src/util/buildClassName.ts create mode 100644 src/util/buildStyle.ts create mode 100644 src/util/callbacks.ts create mode 100644 src/util/captureEscKeyListener.ts create mode 100644 src/util/captureKeyboardListeners.ts create mode 100644 src/util/clipboard.ts create mode 100644 src/util/createPostMessageInterface.ts create mode 100644 src/util/cssAnimationEndListeners.ts create mode 100644 src/util/cycleRestrict.ts create mode 100644 src/util/dateFormat.ts create mode 100644 src/util/environment.ts create mode 100644 src/util/fastSmoothScrollHorizontal.ts create mode 100644 src/util/forceReflow.ts create mode 100644 src/util/formatNumber.ts create mode 100644 src/util/generateIdFor.ts create mode 100644 src/util/handleError.ts create mode 100644 src/util/iteratees.ts create mode 100644 src/util/memoized.ts create mode 100644 src/util/round.ts create mode 100644 src/util/saveCaretPosition.ts create mode 100644 src/util/schedulers.ts create mode 100644 src/util/shortenAddress.ts create mode 100644 src/util/trapFocus.ts create mode 100644 src/util/windowSize.ts create mode 100644 src/util/withCache.ts create mode 100644 tests/init.js create mode 100644 tests/initApp.tsx create mode 100644 tests/staticFileMock.js create mode 100644 tsconfig.json create mode 100644 webpack.config.js diff --git a/.babelrc b/.babelrc new file mode 100644 index 00000000..95f20716 --- /dev/null +++ b/.babelrc @@ -0,0 +1,18 @@ +{ + "presets": [ + [ + "@babel/typescript" + ], + [ + "@babel/preset-env" + ], + [ + "@babel/preset-react" + ] + ], + "plugins": [ + "@babel/plugin-proposal-class-properties", + "@babel/plugin-proposal-nullish-coalescing-operator", + "@babel/plugin-syntax-nullish-coalescing-operator" + ] +} diff --git a/.browserslistrc b/.browserslistrc new file mode 100644 index 00000000..addefdf5 --- /dev/null +++ b/.browserslistrc @@ -0,0 +1 @@ +> 0.75%, not op_mini all, not and_uc > 0 diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..88b016a8 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,12 @@ +# EditorConfig is awesome: http://EditorConfig.org + +# top-most EditorConfig file +root = true + +[*] +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true +charset = utf-8 +indent_style = space +indent_size = 2 diff --git a/.env.example b/.env.example new file mode 100644 index 00000000..ed4c9d26 --- /dev/null +++ b/.env.example @@ -0,0 +1,9 @@ +NODE_ENV=development + +TONWEB_API_KEY= +TONWEB_TESTNET_API_KEY= +TONWEB_MAINNET_API_URL= +TONWEB_TESTNET_API_URL= +BRILLIANT_API_BASE_URL= +TONAPIIO_BASE_URL= +TONAPIIO_SERVER_KEY= diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 00000000..bfc848d6 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,8 @@ +dev + +src/lib/rlottie/rlottie-wasm.js + +webpack.config.js +jest.config.js +playwright.config.ts +postcss.config.js diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 00000000..2c72e268 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,106 @@ +{ + "extends": [ + "react-app", + "plugin:teactn/recommended", + "airbnb", + "airbnb-typescript" + ], + "plugins": [ + "no-async-without-await", + "teactn", + "no-null" + ], + "rules": { + "indent": [ + "error", + 2, + { + "SwitchCase": 1 + } + ], + "max-len": [ + "error", + 120 + ], + "array-bracket-newline": [ + 2, + "consistent" + ], + "no-null/no-null": 2, + "no-console": "error", + "semi": "error", + "no-implicit-coercion": "error", + "react-hooks/exhaustive-deps": "error", + "arrow-body-style": "off", + "no-else-return": "off", + "no-plusplus": "off", + "no-void": "off", + "no-continue": "off", + "default-case": "off", + "no-param-reassign": "off", + "no-prototype-builtins": "off", + "no-await-in-loop": "off", + "no-nested-ternary": "off", + "function-paren-newline": ["error", "consistent"], + "prefer-destructuring": "off", + // Allow for...of. Edited from: + // https://github.com/airbnb/javascript/blob/b4377fb03089dd7f08955242695860d47f9caab4/packages/eslint-config-airbnb-base/rules/style.js#L333 + "no-restricted-syntax": [ + "error", + { + "selector": "ForInStatement", + "message": "for..in loops iterate over the entire prototype chain, which is virtually never what you want. Use Object.{keys,values,entries}, and iterate over the resulting array." + }, + { + "selector": "LabeledStatement", + "message": "Labels are a form of GOTO; using them makes code confusing and hard to maintain and understand." + }, + { + "selector": "WithStatement", + "message": "`with` is disallowed in strict mode because it makes code impossible to predict and optimize." + } + ], + "import/no-extraneous-dependencies": "off", + "import/prefer-default-export": "off", + "import/named": "off", + "import/no-webpack-loader-syntax": "off", + "react/prop-types": "off", + "react/jsx-one-expression-per-line": "off", + "react/button-has-type": "off", + "react/require-default-props": "off", + "react/function-component-definition": "off", + // Teact feature + "react/style-prop-object": "off", + "react/jsx-no-bind": ["error", { + "ignoreRefs": true, + "allowArrowFunctions": false, + "allowFunctions": false, + "allowBind": false, + "ignoreDOMComponents": true + }], + "jsx-a11y/click-events-have-key-events": "off", + "jsx-a11y/no-static-element-interactions": "off", + "jsx-a11y/label-has-associated-control": "off", + "jsx-a11y/anchor-is-valid": "off", + "jsx-a11y/no-noninteractive-element-to-interactive-role": "off", + "jsx-a11y/media-has-caption": "off", + "no-async-without-await/no-async-without-await": 1, + "@typescript-eslint/no-use-before-define": [ + "error", + { + "functions": false + } + ], + "@typescript-eslint/camelcase": "off", + "@typescript-eslint/member-delimiter-style": "error", + "@typescript-eslint/default-param-last": "off", + "@typescript-eslint/return-await": ["error", "in-try-catch"], + "teactn/prefer-separate-component-file": "off" + }, + "settings": { + "import/resolver": "webpack" + }, + "parserOptions": { + "project": "./tsconfig.json" + } +} diff --git a/.fantasticonrc.js b/.fantasticonrc.js new file mode 100644 index 00000000..c745a763 --- /dev/null +++ b/.fantasticonrc.js @@ -0,0 +1,12 @@ +module.exports = { + inputDir: './src/assets/icons', + outputDir: './src/styles', + name: 'brilliant-icons', + fontTypes: ['woff', 'woff2'], + assetTypes: ['css'], + tag: '', + // Use a custom Handlebars template + templates: { + css: './plugins/brilliant-icons.css.hbs' + }, +}; diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..4f87d330 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,25 @@ +# Set the default behavior, in case people don't have core.autocrlf set. +* text=auto + +# Declare files that will always have LF line endings on checkout. +.htaccess text eol=lf +*.html text eol=lf +*.css text eol=lf +*.scss text eol=lf +*.js text eol=lf +*.ts text eol=lf +*.tsx text eol=lf +*.json text eol=lf +*.map text eol=lf +*.md text eol=lf +*.mo text eol=lf +*.svg text eol=lf +*.sh text eol=lf + +# Denote all files that are truly binary and should not be modified. +*.gif binary +*.ico binary +*.jpeg binary +*.jpg binary +*.png binary +*.wav binary diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..0a53ea33 --- /dev/null +++ b/.gitignore @@ -0,0 +1,12 @@ +node_modules +dist +MyTonWallet.zip +.cache +.env* +!.env.example +.idea +*.iml +dev/perf/screenshot* +.DS_store +test-results +trash/ diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 00000000..77ff5eb6 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npx tsc && npx lint-staged diff --git a/.stylelintrc.json b/.stylelintrc.json new file mode 100644 index 00000000..85fc6dbe --- /dev/null +++ b/.stylelintrc.json @@ -0,0 +1,52 @@ +{ + "extends": [ + "stylelint-config-recommended-scss", + "stylelint-config-clean-order" + ], + "ignoreFiles": [ + "dist/*.css", + "src/styles/brilliant-icons.css" + ], + "plugins": [ + "stylelint-declaration-block-no-ignored-properties", + "stylelint-high-performance-animation", + "stylelint-group-selectors", + "stylelint-order", + "./plugins/wholePixel.js" + ], + "rules": { + "number-leading-zero": "always", + "selector-attribute-quotes": "always", + "scss/operator-no-unspaced": null, + "no-descending-specificity": null, + "selector-pseudo-class-no-unknown": [ + true, + { + "ignorePseudoClasses": [ + "global" + ] + } + ], + "plugin/declaration-block-no-ignored-properties": true, + "plugin/no-low-performance-animation-properties": [ + true, + { + "ignore": "paint-properties" + } + ], + "plugin/stylelint-group-selectors": [ + true, + { + "severity": "warning" + } + ], + "plugin/whole-pixel": [ + true, + { + "ignoreList": [ + "letter-spacing" + ] + } + ] + } +} diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..ef7e7efc --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ +GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {one line to give the program's name and a brief idea of what it does.} + Copyright (C) {year} {name of author} + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + {project} Copyright (C) {year} {fullname} + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/README.md b/README.md new file mode 100644 index 00000000..5d6fe091 --- /dev/null +++ b/README.md @@ -0,0 +1,17 @@ +# MyTonWallet + +MyTonWallet is a wallet. + +## Local setup + +```sh +mv .env.example .env + +npm i +``` + +## Dev mode + +```sh +npm run dev +``` diff --git a/deploy/copy_to_dist.sh b/deploy/copy_to_dist.sh new file mode 100755 index 00000000..f22d8d0c --- /dev/null +++ b/deploy/copy_to_dist.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +cp -R ./public/* ${1:-"dist"} + +cp ./src/lib/rlottie/rlottie-wasm.js ${1:-"dist"} +cp ./src/lib/rlottie/rlottie-wasm.wasm ${1:-"dist"} diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 00000000..fc7a1712 --- /dev/null +++ b/jest.config.js @@ -0,0 +1,18 @@ +module.exports = { + setupFilesAfterEnv: ['./tests/init.js'], + moduleNameMapper: { + '\\.(css|scss|jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga|tgs)$': + '/tests/staticFileMock.js', + }, + testPathIgnorePatterns: [ + '/tests/playwright/', + '/node_modules/', + '/legacy_notes_and_workbook/', + '/client/src/stylesheets/', + ], + testEnvironment: 'jsdom', + transform: { + '\\.(jsx?|tsx?)$': 'babel-jest', + '\\.txt$': 'jest-raw-loader', + }, +}; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..046f78e6 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,56152 @@ +{ + "name": "mytonwallet", + "version": "1.0.2", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "mytonwallet", + "version": "1.0.2", + "license": "GPL-3.0-or-later", + "dependencies": { + "idb-keyval": "^6.1.0", + "pako": "^2.0.4", + "qr-code-styling": "github:zubiden/qr-code-styling#10f7cf3", + "tonapi-sdk-js": "^0.12.0", + "tonweb": "^0.0.54", + "tonweb-mnemonic": "^1.0.1", + "tweetnacl": "^1.0.3" + }, + "devDependencies": { + "@babel/core": "^7.17.10", + "@babel/plugin-proposal-class-properties": "^7.16.7", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/preset-env": "^7.17.10", + "@babel/preset-react": "^7.16.7", + "@babel/preset-typescript": "^7.16.7", + "@peculiar/webcrypto": "^1.3.2", + "@playwright/test": "^1.22.0", + "@testing-library/jest-dom": "^5.16.4", + "@types/chrome": "^0.0.191", + "@types/croppie": "^2.6.1", + "@types/jest": "^27.5.1", + "@types/react": "^18.0.9", + "@types/react-dom": "^18.0.4", + "@types/wicg-mediasession": "^1.1.3", + "@typescript-eslint/eslint-plugin": "^5.23.0", + "@typescript-eslint/parser": "^5.23.0", + "@webpack-cli/serve": "^1.6.1", + "autoprefixer": "^10.4.7", + "babel-loader": "^8.2.5", + "browserlist": "^1.0.1", + "copy-webpack-plugin": "^11.0.0", + "cross-env": "^7.0.3", + "css-loader": "^6.7.1", + "css-minimizer-webpack-plugin": "^3.4.1", + "dotenv": "^16.0.1", + "eslint": "^8.15.0", + "eslint-config-airbnb": "^19.0.4", + "eslint-config-airbnb-typescript": "^16.1.1", + "eslint-config-react-app": "^7.0.1", + "eslint-import-resolver-webpack": "^0.13.2", + "eslint-plugin-flowtype": "^8.0.3", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-no-async-without-await": "^1.2.0", + "eslint-plugin-no-null": "^1.0.2", + "eslint-plugin-react": "^7.29.3", + "eslint-plugin-react-hooks": "^4.5.0", + "eslint-plugin-teactn": "git+https://github.com/korenskoy/eslint-plugin-teactn#c2c39dd005d58c07c24c4361de804dce1c6261b5", + "fantasticon": "^1.2.3", + "git-revision-webpack-plugin": "^5.0.0", + "html-webpack-plugin": "^5.5.0", + "husky": "^7.0.4", + "jest": "^27.5.1", + "jest-raw-loader": "^1.0.1", + "lint-staged": "^12.4.1", + "mini-css-extract-plugin": "^2.6.0", + "postcss": "^8.4.14", + "postcss-loader": "^7.0.0", + "postcss-modules": "^4.3.1", + "react": "^18.1.0", + "replace-in-file": "^6.3.2", + "sass": "^1.53.0", + "sass-loader": "^13.0.2", + "serve": "^13.0.2", + "style-loader": "^3.3.1", + "stylelint": "^14.9.1", + "stylelint-config-clean-order": "^0.8.0", + "stylelint-config-recommended-scss": "^6.0.0", + "stylelint-declaration-block-no-ignored-properties": "^2.5.0", + "stylelint-group-selectors": "^1.0.8", + "stylelint-high-performance-animation": "^1.6.0", + "stylelint-order": "^5.0.0", + "typescript": "^4.6.4", + "webpack": "^5.72.1", + "webpack-bundle-analyzer": "^4.5.0", + "webpack-cli": "^4.9.2", + "webpack-dev-server": "^4.9.0", + "webpack-merge": "^5.8.0" + }, + "engines": { + "node": "^16.13", + "npm": "^8.5.2" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", + "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", + "devOptional": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "devOptional": true, + "dependencies": { + "@babel/highlight": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", + "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==", + "devOptional": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.10.tgz", + "integrity": "sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA==", + "devOptional": true, + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.10", + "@babel/helper-compilation-targets": "^7.17.10", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helpers": "^7.17.9", + "@babel/parser": "^7.17.10", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.10", + "@babel/types": "^7.17.10", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/eslint-parser": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.17.0.tgz", + "integrity": "sha512-PUEJ7ZBXbRkbq3qqM/jZ2nIuakUBqCYc7Qf52Lj7dlZ6zERnqisdHioL0l4wwQZnmskMeasqUNzLBFKs3nylXA==", + "dev": true, + "dependencies": { + "eslint-scope": "^5.1.1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.11.0", + "eslint": "^7.5.0 || ^8.0.0" + } + }, + "node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@babel/generator": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.10.tgz", + "integrity": "sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.17.10", + "@jridgewell/gen-mapping": "^0.1.0", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", + "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", + "devOptional": true, + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz", + "integrity": "sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ==", + "devOptional": true, + "dependencies": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.20.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz", + "integrity": "sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==", + "devOptional": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz", + "integrity": "sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==", + "devOptional": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "regexpu-core": "^5.0.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", + "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", + "devOptional": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", + "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "devOptional": true, + "dependencies": { + "@babel/template": "^7.16.7", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", + "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", + "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", + "devOptional": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "devOptional": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", + "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", + "devOptional": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-wrap-function": "^7.16.8", + "@babel/types": "^7.16.8" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "devOptional": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "devOptional": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "devOptional": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", + "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", + "devOptional": true, + "dependencies": { + "@babel/helper-function-name": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.8", + "@babel/types": "^7.16.8" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", + "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", + "devOptional": true, + "dependencies": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "devOptional": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.10.tgz", + "integrity": "sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ==", + "devOptional": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz", + "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", + "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", + "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", + "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", + "devOptional": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz", + "integrity": "sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==", + "devOptional": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.17.6", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.8.tgz", + "integrity": "sha512-U69odN4Umyyx1xO1rTII0IDkAEC+RNlcKXtqOblfpzqy1C+aOplb76BQNq0+XdpVkOaPlpEDwd++joY8FNFJKA==", + "devOptional": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.17.6", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/plugin-syntax-decorators": "^7.17.0", + "charcodes": "^0.2.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", + "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-default-from": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.16.7.tgz", + "integrity": "sha512-+cENpW1rgIjExn+o5c8Jw/4BuH4eGKKYvkMB8/0ZxFQ9mC0t4z09VsPIwNg6waF69QYC81zxGeAsREGuqQoKeg==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-export-default-from": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", + "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", + "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", + "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", + "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", + "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz", + "integrity": "sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==", + "devOptional": true, + "dependencies": { + "@babel/compat-data": "^7.17.0", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", + "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", + "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", + "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", + "devOptional": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.10", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", + "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", + "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", + "devOptional": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.0.tgz", + "integrity": "sha512-qWe85yCXsvDEluNP0OyeQjH63DlhAR3W7K9BxxU1MvbDb48tgBG+Ao6IJJ6smPDrrVzSQZrbF6donpkFBMcs3A==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-default-from": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.16.7.tgz", + "integrity": "sha512-4C3E4NsrLOgftKaTYTULhHsuQrGv3FHrBzOMDiS7UYKIpgGBkAdawg4h+EI8zPeK9M0fiIIh72hIwsI24K7MbA==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-flow": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.16.7.tgz", + "integrity": "sha512-UDo3YGQO0jH6ytzVwgSLv9i/CzMcUjbKenL67dTrAZPPv6GFAtDhe6jqnvmoKzC/7htNTohhos+onPtDMqJwaQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz", + "integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz", + "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", + "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", + "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", + "devOptional": true, + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", + "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", + "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", + "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", + "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz", + "integrity": "sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", + "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", + "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", + "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", + "devOptional": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-flow-strip-types": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.16.7.tgz", + "integrity": "sha512-mzmCq3cNsDpZZu9FADYYyfZJIOrSONmHcop2XEKPdBNMa4PDC4eEvcOvzZaCNcjKu72v0XQlA5y1g58aLRXdYg==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-flow": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", + "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", + "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", + "devOptional": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", + "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", + "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", + "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", + "devOptional": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz", + "integrity": "sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw==", + "devOptional": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz", + "integrity": "sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==", + "devOptional": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", + "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.10.tgz", + "integrity": "sha512-v54O6yLaJySCs6mGzaVOUw9T967GnH38T6CQSAtnzdNPwu84l2qAjssKzo/WSO8Yi7NF+7ekm5cVbF/5qiIgNA==", + "devOptional": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", + "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-assign": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.16.7.tgz", + "integrity": "sha512-R8mawvm3x0COTJtveuoqZIjNypn2FjfvXZr4pSQ8VhEFBuQGBz4XhHasZtHXjgXU4XptZ4HtGof3NoYc93ZH9Q==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", + "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", + "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", + "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz", + "integrity": "sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz", + "integrity": "sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-jsx": "^7.16.7", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz", + "integrity": "sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==", + "dev": true, + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.16.7.tgz", + "integrity": "sha512-oe5VuWs7J9ilH3BCCApGoYjHoSO48vkjX2CbA5bFVhIuO2HKxA3vyF7rleA4o6/4rTDbk6r8hBW7Ul8E+UZrpA==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.16.7.tgz", + "integrity": "sha512-rONFiQz9vgbsnaMtQlZCjIRwhJvlrPET8TabIUK2hzlXw9B9s2Ieaxte1SCOOXMbWRHodbKixNf3BLcWVOQ8Bw==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz", + "integrity": "sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz", + "integrity": "sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ==", + "devOptional": true, + "dependencies": { + "regenerator-transform": "^0.15.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", + "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.0.tgz", + "integrity": "sha512-fr7zPWnKXNc1xoHfrIU9mN/4XKX4VLZ45Q+oMhfsYIaHvg7mHgmhfOy/ckRWqDK7XF3QDigRpkh5DKq6+clE8A==", + "devOptional": true, + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", + "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", + "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", + "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", + "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", + "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz", + "integrity": "sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-typescript": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", + "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", + "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", + "devOptional": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.17.10.tgz", + "integrity": "sha512-YNgyBHZQpeoBSRBg0xixsZzfT58Ze1iZrajvv0lJc70qDDGuGfonEnMGfWeSY0mQ3JTuCWFbMkzFRVafOyJx4g==", + "devOptional": true, + "dependencies": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-compilation-targets": "^7.17.10", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-async-generator-functions": "^7.16.8", + "@babel/plugin-proposal-class-properties": "^7.16.7", + "@babel/plugin-proposal-class-static-block": "^7.17.6", + "@babel/plugin-proposal-dynamic-import": "^7.16.7", + "@babel/plugin-proposal-export-namespace-from": "^7.16.7", + "@babel/plugin-proposal-json-strings": "^7.16.7", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", + "@babel/plugin-proposal-numeric-separator": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.17.3", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-private-methods": "^7.16.11", + "@babel/plugin-proposal-private-property-in-object": "^7.16.7", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.7", + "@babel/plugin-transform-async-to-generator": "^7.16.8", + "@babel/plugin-transform-block-scoped-functions": "^7.16.7", + "@babel/plugin-transform-block-scoping": "^7.16.7", + "@babel/plugin-transform-classes": "^7.16.7", + "@babel/plugin-transform-computed-properties": "^7.16.7", + "@babel/plugin-transform-destructuring": "^7.17.7", + "@babel/plugin-transform-dotall-regex": "^7.16.7", + "@babel/plugin-transform-duplicate-keys": "^7.16.7", + "@babel/plugin-transform-exponentiation-operator": "^7.16.7", + "@babel/plugin-transform-for-of": "^7.16.7", + "@babel/plugin-transform-function-name": "^7.16.7", + "@babel/plugin-transform-literals": "^7.16.7", + "@babel/plugin-transform-member-expression-literals": "^7.16.7", + "@babel/plugin-transform-modules-amd": "^7.16.7", + "@babel/plugin-transform-modules-commonjs": "^7.17.9", + "@babel/plugin-transform-modules-systemjs": "^7.17.8", + "@babel/plugin-transform-modules-umd": "^7.16.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.17.10", + "@babel/plugin-transform-new-target": "^7.16.7", + "@babel/plugin-transform-object-super": "^7.16.7", + "@babel/plugin-transform-parameters": "^7.16.7", + "@babel/plugin-transform-property-literals": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.17.9", + "@babel/plugin-transform-reserved-words": "^7.16.7", + "@babel/plugin-transform-shorthand-properties": "^7.16.7", + "@babel/plugin-transform-spread": "^7.16.7", + "@babel/plugin-transform-sticky-regex": "^7.16.7", + "@babel/plugin-transform-template-literals": "^7.16.7", + "@babel/plugin-transform-typeof-symbol": "^7.16.7", + "@babel/plugin-transform-unicode-escapes": "^7.16.7", + "@babel/plugin-transform-unicode-regex": "^7.16.7", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.17.10", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.22.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-flow": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.16.7.tgz", + "integrity": "sha512-6ceP7IyZdUYQ3wUVqyRSQXztd1YmFHWI4Xv11MIqAlE4WqxBSd/FZ61V9k+TS5Gd4mkHOtQtPp9ymRpxH4y1Ug==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-flow-strip-types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.7.tgz", + "integrity": "sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-react-display-name": "^7.16.7", + "@babel/plugin-transform-react-jsx": "^7.16.7", + "@babel/plugin-transform-react-jsx-development": "^7.16.7", + "@babel/plugin-transform-react-pure-annotations": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz", + "integrity": "sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-typescript": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/register": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.17.7.tgz", + "integrity": "sha512-fg56SwvXRifootQEDQAu1mKdjh5uthPzdO0N6t358FktfL4XjAVXuH58ULoiW8mesxiOgNIrxiImqEwv0+hRRA==", + "optional": true, + "peer": true, + "dependencies": { + "clone-deep": "^4.0.1", + "find-cache-dir": "^2.0.0", + "make-dir": "^2.1.0", + "pirates": "^4.0.5", + "source-map-support": "^0.5.16" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/register/node_modules/find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "optional": true, + "peer": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/register/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "optional": true, + "peer": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/register/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "optional": true, + "peer": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/register/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "optional": true, + "peer": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/register/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==", + "optional": true, + "peer": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@babel/register/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "optional": true, + "peer": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/register/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/register/node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "optional": true, + "peer": true, + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/register/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "optional": true, + "peer": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@babel/runtime": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.8.tgz", + "integrity": "sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA==", + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime-corejs3": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.17.8.tgz", + "integrity": "sha512-ZbYSUvoSF6dXZmMl/CYTMOvzIFnbGfv4W3SEHYgMvNsFTeLaF2gkGAF4K2ddmtSK4Emej+0aYcnSC6N5dPCXUQ==", + "dev": true, + "dependencies": { + "core-js-pure": "^3.20.2", + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "devOptional": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.10.tgz", + "integrity": "sha512-VmbrTHQteIdUUQNTb+zE12SHS/xQVIShmBPhlNP12hD5poF2pbITW1Z4172d03HegaQWhLffdkRJYtAzp0AGcw==", + "devOptional": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.10", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.10", + "@babel/types": "^7.17.10", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.10.tgz", + "integrity": "sha512-9O26jG0mBYfGkUYCYZRnBwbVLd1UZOICEr2Em6InB6jVfsAv1GKgwXHmrSg+WFWDmeKTA6vyTZiN8tCSM5Oo3A==", + "devOptional": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@csstools/selector-specificity": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz", + "integrity": "sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==", + "dev": true, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2", + "postcss-selector-parser": "^6.0.10" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.3.tgz", + "integrity": "sha512-uGo44hIwoLGNyduRpjdEpovcbMdd+Nv7amtmJxnKmI8xj6yd5LncmSwDa5NgX/41lIFJtkjD6YdVfgEzPfJ5UA==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.3.2", + "globals": "^13.9.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" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", + "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/eslintrc/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/@expo/bunyan": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@expo/bunyan/-/bunyan-4.0.0.tgz", + "integrity": "sha512-Ydf4LidRB/EBI+YrB+cVLqIseiRfjUI/AeHBgjGMtq3GroraDu81OV7zqophRgupngoL3iS3JUMDMnxO7g39qA==", + "engines": [ + "node >=0.10.0" + ], + "optional": true, + "peer": true, + "dependencies": { + "uuid": "^8.0.0" + }, + "optionalDependencies": { + "mv": "~2", + "safe-json-stringify": "~1" + } + }, + "node_modules/@expo/cli": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-0.1.4.tgz", + "integrity": "sha512-A9yq0+3ntqc7eNot4QfhAtAqx8bT50uleeQfTwhCiBPlArQ+zL2sHJVR5Vy79o80PJLQ0KoP3sxsCs1nkZ6rWw==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.14.0", + "@expo/code-signing-certificates": "^0.0.2", + "@expo/config": "~6.0.23", + "@expo/config-plugins": "~4.1.4", + "@expo/dev-server": "~0.1.110", + "@expo/devcert": "^1.0.0", + "@expo/json-file": "^8.2.35", + "@expo/metro-config": "~0.3.16", + "@expo/osascript": "^2.0.31", + "@expo/package-manager": "~0.0.52", + "@expo/plist": "^0.0.18", + "@expo/prebuild-config": "~4.0.0", + "@expo/rudder-sdk-node": "1.1.1", + "@expo/spawn-async": "1.5.0", + "@expo/xcpretty": "^4.1.1", + "@urql/core": "2.3.6", + "@urql/exchange-retry": "0.3.0", + "accepts": "^1.3.8", + "arg": "4.1.0", + "better-opn": "~3.0.2", + "bplist-parser": "^0.3.1", + "cacache": "^15.3.0", + "chalk": "^4.0.0", + "ci-info": "^3.3.0", + "env-editor": "^0.4.1", + "form-data": "^3.0.1", + "freeport-async": "2.0.0", + "fs-extra": "~8.1.0", + "getenv": "^1.0.0", + "graphql": "15.8.0", + "graphql-tag": "^2.10.1", + "internal-ip": "4.3.0", + "is-root": "^2.1.0", + "js-yaml": "^3.13.1", + "json-schema-deref-sync": "^0.13.0", + "md5-file": "^3.2.3", + "md5hex": "^1.0.0", + "minipass": "3.1.6", + "node-fetch": "^2.6.7", + "node-forge": "^1.3.1", + "npm-package-arg": "^7.0.0", + "ora": "3.4.0", + "pretty-bytes": "5.6.0", + "progress": "2.0.3", + "prompts": "^2.3.2", + "qrcode-terminal": "0.11.0", + "requireg": "^0.2.2", + "resolve-from": "^5.0.0", + "semver": "^6.3.0", + "slugify": "^1.3.4", + "structured-headers": "^0.4.1", + "tar": "^6.0.5", + "tempy": "^0.7.1", + "terminal-link": "^2.1.1", + "text-table": "^0.2.0", + "url-join": "4.0.0", + "uuid": "^3.4.0", + "wrap-ansi": "^7.0.0" + }, + "bin": { + "expo": "build/bin/cli" + } + }, + "node_modules/@expo/cli/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@expo/cli/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@expo/cli/node_modules/arg": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz", + "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==", + "optional": true, + "peer": true + }, + "node_modules/@expo/cli/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "optional": true, + "peer": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@expo/cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": 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/@expo/cli/node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "optional": true, + "peer": true, + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/cli/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@expo/cli/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==", + "optional": true, + "peer": true + }, + "node_modules/@expo/cli/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/cli/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "optional": true, + "peer": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@expo/cli/node_modules/log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "optional": true, + "peer": true, + "dependencies": { + "chalk": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/cli/node_modules/log-symbols/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/cli/node_modules/log-symbols/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==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/cli/node_modules/log-symbols/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@expo/cli/node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "optional": true, + "peer": true + }, + "node_modules/@expo/cli/node_modules/log-symbols/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/cli/node_modules/log-symbols/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==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/cli/node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/cli/node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "optional": true, + "peer": true, + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/cli/node_modules/ora": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", + "optional": true, + "peer": true, + "dependencies": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@expo/cli/node_modules/ora/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/cli/node_modules/ora/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==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/cli/node_modules/ora/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@expo/cli/node_modules/ora/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "optional": true, + "peer": true + }, + "node_modules/@expo/cli/node_modules/ora/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/cli/node_modules/ora/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==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/cli/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/cli/node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "optional": true, + "peer": true, + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/cli/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@expo/cli/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==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/cli/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "optional": true, + "peer": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/@expo/code-signing-certificates": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@expo/code-signing-certificates/-/code-signing-certificates-0.0.2.tgz", + "integrity": "sha512-vnPHFjwOqxQ1VLztktY+fYCfwvLzjqpzKn09rchcQE7Sdf0wtW5fFtIZBEFOOY5wasp8tXSnp627zrAwazPHzg==", + "optional": true, + "peer": true, + "dependencies": { + "node-forge": "^1.2.1", + "nullthrows": "^1.1.1" + } + }, + "node_modules/@expo/config": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-6.0.23.tgz", + "integrity": "sha512-htanDTaSgtnBrVhAfjVsj8h/t95Kj4clR/nPCm8Puf8H2M7zW6XLV4XV4Pp1fvGZxzBSP+yod+7SBhwa44Q/jQ==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/code-frame": "~7.10.4", + "@expo/config-plugins": "4.1.4", + "@expo/config-types": "^45.0.0", + "@expo/json-file": "8.2.36", + "getenv": "^1.0.0", + "glob": "7.1.6", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "semver": "7.3.2", + "slugify": "^1.3.4", + "sucrase": "^3.20.0" + } + }, + "node_modules/@expo/config-plugins": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-4.1.4.tgz", + "integrity": "sha512-fkOjXnSieQfVSWVLKhst0DnCAyeHksvWky1CldFCQllhDB1HHBiP09Z8pamVB783n3qr/1HNZiSp6k2iUcaSoA==", + "optional": true, + "peer": true, + "dependencies": { + "@expo/config-types": "^45.0.0", + "@expo/json-file": "8.2.36", + "@expo/plist": "0.0.18", + "@expo/sdk-runtime-versions": "^1.0.0", + "@react-native/normalize-color": "^2.0.0", + "chalk": "^4.1.2", + "debug": "^4.3.1", + "find-up": "~5.0.0", + "getenv": "^1.0.0", + "glob": "7.1.6", + "resolve-from": "^5.0.0", + "semver": "^7.3.5", + "slash": "^3.0.0", + "xcode": "^3.0.1", + "xml2js": "0.4.23" + } + }, + "node_modules/@expo/config-plugins/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@expo/config-plugins/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": 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/@expo/config-plugins/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@expo/config-plugins/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==", + "optional": true, + "peer": true + }, + "node_modules/@expo/config-plugins/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==", + "optional": true, + "peer": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@expo/config-plugins/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "optional": true, + "peer": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/config-plugins/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/config-plugins/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==", + "optional": true, + "peer": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@expo/config-plugins/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==", + "optional": true, + "peer": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@expo/config-plugins/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==", + "optional": true, + "peer": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@expo/config-plugins/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/config-plugins/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/config-plugins/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "optional": true, + "peer": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/config-plugins/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==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/config-types": { + "version": "45.0.0", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-45.0.0.tgz", + "integrity": "sha512-/QGhhLWyaGautgEyU50UJr5YqKJix5t77ePTwreOVAhmZH+ff3nrrtYTTnccx+qF08ZNQmfAyYMCD3rQfzpiJA==", + "optional": true, + "peer": true + }, + "node_modules/@expo/config/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@expo/config/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "optional": true, + "peer": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/config/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/config/node_modules/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "optional": true, + "peer": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/dev-server": { + "version": "0.1.110", + "resolved": "https://registry.npmjs.org/@expo/dev-server/-/dev-server-0.1.110.tgz", + "integrity": "sha512-nWulXr4p69yCiR5rS9AmIuYzjIANEjGdGqyHms6vH0dBHYAESnTnlPaurSEi7CQebtXnAhi9srsJGko07wx5DA==", + "optional": true, + "peer": true, + "dependencies": { + "@expo/bunyan": "4.0.0", + "@expo/metro-config": "0.3.16", + "@expo/osascript": "2.0.33", + "body-parser": "1.19.0", + "chalk": "^4.0.0", + "connect": "^3.7.0", + "fs-extra": "9.0.0", + "node-fetch": "^2.6.0", + "open": "^8.3.0", + "resolve-from": "^5.0.0", + "semver": "7.3.2", + "serialize-error": "6.0.0", + "temp-dir": "^2.0.0" + } + }, + "node_modules/@expo/dev-server/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@expo/dev-server/node_modules/body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "optional": true, + "peer": true, + "dependencies": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@expo/dev-server/node_modules/bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@expo/dev-server/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": 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/@expo/dev-server/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@expo/dev-server/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==", + "optional": true, + "peer": true + }, + "node_modules/@expo/dev-server/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "optional": true, + "peer": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/@expo/dev-server/node_modules/fs-extra": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz", + "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==", + "optional": true, + "peer": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/dev-server/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/dev-server/node_modules/http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "optional": true, + "peer": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@expo/dev-server/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "optional": true, + "peer": true + }, + "node_modules/@expo/dev-server/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "optional": true, + "peer": true + }, + "node_modules/@expo/dev-server/node_modules/qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/@expo/dev-server/node_modules/raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "optional": true, + "peer": true, + "dependencies": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@expo/dev-server/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/dev-server/node_modules/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "optional": true, + "peer": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/dev-server/node_modules/serialize-error": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-6.0.0.tgz", + "integrity": "sha512-3vmBkMZLQO+BR4RPHcyRGdE09XCF6cvxzk2N2qn8Er3F91cy8Qt7VvEbZBOpaL53qsBbe2cFOefU6tRY6WDelA==", + "optional": true, + "peer": true, + "dependencies": { + "type-fest": "^0.12.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@expo/dev-server/node_modules/setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "optional": true, + "peer": true + }, + "node_modules/@expo/dev-server/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==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/dev-server/node_modules/toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/@expo/dev-server/node_modules/type-fest": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.12.0.tgz", + "integrity": "sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@expo/dev-server/node_modules/universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@expo/devcert": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@expo/devcert/-/devcert-1.0.0.tgz", + "integrity": "sha512-cahGyQCmpZmHpn2U04NR9KwsOIZy7Rhsw8Fg4q+A6563lIJxbkrgPnxq/O3NQAh3ohEvOXOOnoFx0b4yycCkpQ==", + "optional": true, + "peer": true, + "dependencies": { + "application-config-path": "^0.1.0", + "command-exists": "^1.2.4", + "debug": "^3.1.0", + "eol": "^0.9.1", + "get-port": "^3.2.0", + "glob": "^7.1.2", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "password-prompt": "^1.0.4", + "rimraf": "^2.6.2", + "sudo-prompt": "^8.2.0", + "tmp": "^0.0.33", + "tslib": "^1.10.0" + } + }, + "node_modules/@expo/devcert/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "optional": true, + "peer": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@expo/devcert/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "optional": true, + "peer": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/@expo/devcert/node_modules/sudo-prompt": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-8.2.5.tgz", + "integrity": "sha512-rlBo3HU/1zAJUrkY6jNxDOC9eVYliG6nS4JA8u8KAshITd07tafMc/Br7xQwCSseXwJ2iCcHCE8SNWX3q8Z+kw==", + "optional": true, + "peer": true + }, + "node_modules/@expo/devcert/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true, + "peer": true + }, + "node_modules/@expo/image-utils": { + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.3.20.tgz", + "integrity": "sha512-NgF/80XENyCS+amwC0P6uk1fauEtUq7gijD19jvl2xknJaADq8M2dMCRHwWMVOXosr2v46f3Z++G/NjmyOVS7A==", + "optional": true, + "peer": true, + "dependencies": { + "@expo/spawn-async": "1.5.0", + "chalk": "^4.0.0", + "fs-extra": "9.0.0", + "getenv": "^1.0.0", + "jimp-compact": "0.16.1", + "mime": "^2.4.4", + "node-fetch": "^2.6.0", + "parse-png": "^2.1.0", + "resolve-from": "^5.0.0", + "semver": "7.3.2", + "tempy": "0.3.0" + } + }, + "node_modules/@expo/image-utils/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@expo/image-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": 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/@expo/image-utils/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@expo/image-utils/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==", + "optional": true, + "peer": true + }, + "node_modules/@expo/image-utils/node_modules/crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/image-utils/node_modules/fs-extra": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz", + "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==", + "optional": true, + "peer": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/image-utils/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/image-utils/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/image-utils/node_modules/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "optional": true, + "peer": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/image-utils/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==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/image-utils/node_modules/temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/image-utils/node_modules/tempy": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.3.0.tgz", + "integrity": "sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==", + "optional": true, + "peer": true, + "dependencies": { + "temp-dir": "^1.0.0", + "type-fest": "^0.3.1", + "unique-string": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/image-utils/node_modules/type-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@expo/image-utils/node_modules/unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "optional": true, + "peer": true, + "dependencies": { + "crypto-random-string": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/image-utils/node_modules/universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@expo/json-file": { + "version": "8.2.36", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.36.tgz", + "integrity": "sha512-tOZfTiIFA5KmMpdW9KF7bc6CFiGjb0xnbieJhTGlHrLL+ps2G0OkqmuZ3pFEXBOMnJYUVpnSy++52LFxvpa5ZQ==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/code-frame": "~7.10.4", + "json5": "^1.0.1", + "write-file-atomic": "^2.3.0" + } + }, + "node_modules/@expo/json-file/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@expo/json-file/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "optional": true, + "peer": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/@expo/json-file/node_modules/write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "optional": true, + "peer": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "node_modules/@expo/metro-config": { + "version": "0.3.16", + "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.3.16.tgz", + "integrity": "sha512-rMYYpJibi1M8p9jGyU9f4lSNKZC6NSWzfEJsX8yd8gFbMBZV41DqyNzkrl1bx90DzYoLKB8kEPhkDdCJ8bGd/A==", + "optional": true, + "peer": true, + "dependencies": { + "@expo/config": "6.0.23", + "@expo/json-file": "8.2.36", + "chalk": "^4.1.0", + "debug": "^4.3.2", + "find-yarn-workspace-root": "~2.0.0", + "getenv": "^1.0.0", + "resolve-from": "^5.0.0", + "sucrase": "^3.20.0" + } + }, + "node_modules/@expo/metro-config/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@expo/metro-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": 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/@expo/metro-config/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@expo/metro-config/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==", + "optional": true, + "peer": true + }, + "node_modules/@expo/metro-config/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/metro-config/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/metro-config/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==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/osascript": { + "version": "2.0.33", + "resolved": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.0.33.tgz", + "integrity": "sha512-FQinlwHrTlJbntp8a7NAlCKedVXe06Va/0DSLXRO8lZVtgbEMrYYSUZWQNcOlNtc58c2elNph6z9dMOYwSo3JQ==", + "optional": true, + "peer": true, + "dependencies": { + "@expo/spawn-async": "^1.5.0", + "exec-async": "^2.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@expo/package-manager": { + "version": "0.0.53", + "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-0.0.53.tgz", + "integrity": "sha512-Kg4ZWCuNCBqy6aznNGdD8rt3wSlTIHujfx+yfdm0Ewtq7uLhiyzKoMyh3RV331BdLu2YOSZpozNm2YZ/K/B0CQ==", + "optional": true, + "peer": true, + "dependencies": { + "@expo/json-file": "8.2.36", + "@expo/spawn-async": "^1.5.0", + "ansi-regex": "^5.0.0", + "chalk": "^4.0.0", + "find-up": "^5.0.0", + "find-yarn-workspace-root": "~2.0.0", + "npm-package-arg": "^7.0.0", + "rimraf": "^3.0.2", + "split": "^1.0.1", + "sudo-prompt": "9.1.1" + } + }, + "node_modules/@expo/package-manager/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@expo/package-manager/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": 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/@expo/package-manager/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@expo/package-manager/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==", + "optional": true, + "peer": true + }, + "node_modules/@expo/package-manager/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==", + "optional": true, + "peer": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@expo/package-manager/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/package-manager/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==", + "optional": true, + "peer": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@expo/package-manager/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==", + "optional": true, + "peer": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@expo/package-manager/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==", + "optional": true, + "peer": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@expo/package-manager/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/package-manager/node_modules/sudo-prompt": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.1.1.tgz", + "integrity": "sha512-es33J1g2HjMpyAhz8lOR+ICmXXAqTuKbuXuUWLhOLew20oN9oUCgCJx615U/v7aioZg7IX5lIh9x34vwneu4pA==", + "optional": true, + "peer": true + }, + "node_modules/@expo/package-manager/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==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/plist": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.18.tgz", + "integrity": "sha512-+48gRqUiz65R21CZ/IXa7RNBXgAI/uPSdvJqoN9x1hfL44DNbUoWHgHiEXTx7XelcATpDwNTz6sHLfy0iNqf+w==", + "optional": true, + "peer": true, + "dependencies": { + "@xmldom/xmldom": "~0.7.0", + "base64-js": "^1.2.3", + "xmlbuilder": "^14.0.0" + } + }, + "node_modules/@expo/prebuild-config": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-4.0.0.tgz", + "integrity": "sha512-h+4tdP94ihzp9Zz6o+k+W+RLNKQ0Lfxu1bUSLsE8u1bFTU0AWSF5sTC3yhG3ABgi+9W9DlwPMwoDGNX12bL3LA==", + "optional": true, + "peer": true, + "dependencies": { + "@expo/config": "6.0.23", + "@expo/config-plugins": "4.1.4", + "@expo/config-types": "^45.0.0", + "@expo/image-utils": "0.3.20", + "@expo/json-file": "8.2.36", + "debug": "^4.3.1", + "expo-modules-autolinking": "~0.7.0", + "fs-extra": "^9.0.0", + "resolve-from": "^5.0.0", + "semver": "7.3.2", + "xml2js": "0.4.23" + } + }, + "node_modules/@expo/prebuild-config/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@expo/prebuild-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": 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/@expo/prebuild-config/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@expo/prebuild-config/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==", + "optional": true, + "peer": true + }, + "node_modules/@expo/prebuild-config/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@expo/prebuild-config/node_modules/expo-modules-autolinking": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-0.7.1.tgz", + "integrity": "sha512-HKPcwXuRztEjhQRHxwhLXyAblkOsSi3n7aaBV6qgrOOi0WL/E3di8E2fowlHiiQW/i9vJDemMcvq0ZTCYW+bFg==", + "optional": true, + "peer": true, + "dependencies": { + "chalk": "^4.1.0", + "commander": "^7.2.0", + "fast-glob": "^3.2.5", + "find-up": "^5.0.0", + "fs-extra": "^9.1.0" + }, + "bin": { + "expo-modules-autolinking": "bin/expo-modules-autolinking.js" + } + }, + "node_modules/@expo/prebuild-config/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==", + "optional": true, + "peer": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@expo/prebuild-config/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "optional": true, + "peer": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/prebuild-config/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/prebuild-config/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==", + "optional": true, + "peer": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@expo/prebuild-config/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==", + "optional": true, + "peer": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@expo/prebuild-config/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==", + "optional": true, + "peer": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@expo/prebuild-config/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/prebuild-config/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/prebuild-config/node_modules/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "optional": true, + "peer": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/prebuild-config/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==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/prebuild-config/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@expo/rudder-sdk-node": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@expo/rudder-sdk-node/-/rudder-sdk-node-1.1.1.tgz", + "integrity": "sha512-uy/hS/awclDJ1S88w9UGpc6Nm9XnNUjzOAAib1A3PVAnGQIwebg8DpFqOthFBTlZxeuV/BKbZ5jmTbtNZkp1WQ==", + "optional": true, + "peer": true, + "dependencies": { + "@expo/bunyan": "^4.0.0", + "@segment/loosely-validate-event": "^2.0.0", + "fetch-retry": "^4.1.1", + "md5": "^2.2.1", + "node-fetch": "^2.6.1", + "remove-trailing-slash": "^0.1.0", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@expo/sdk-runtime-versions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@expo/sdk-runtime-versions/-/sdk-runtime-versions-1.0.0.tgz", + "integrity": "sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==", + "optional": true, + "peer": true + }, + "node_modules/@expo/spawn-async": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.5.0.tgz", + "integrity": "sha512-LB7jWkqrHo+5fJHNrLAFdimuSXQ2MQ4lA7SQW5bf/HbsXuV2VrT/jN/M8f/KoWt0uJMGN4k/j7Opx4AvOOxSew==", + "optional": true, + "peer": true, + "dependencies": { + "cross-spawn": "^6.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/spawn-async/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==", + "optional": true, + "peer": true, + "dependencies": { + "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": ">=4.8" + } + }, + "node_modules/@expo/spawn-async/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/spawn-async/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "optional": true, + "peer": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@expo/spawn-async/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "optional": true, + "peer": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@expo/spawn-async/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@expo/spawn-async/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "optional": true, + "peer": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/@expo/vector-icons": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/@expo/vector-icons/-/vector-icons-13.0.0.tgz", + "integrity": "sha512-TI+l71+5aSKnShYclFa14Kum+hQMZ86b95SH6tQUG3qZEmLTarvWpKwqtTwQKqvlJSJrpFiSFu3eCuZokY6zWA==", + "optional": true, + "peer": true + }, + "node_modules/@expo/xcpretty": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@expo/xcpretty/-/xcpretty-4.1.2.tgz", + "integrity": "sha512-B2Nu52RFpXvZejEUllXnPQtKUoUcO799FHEAAU3quTb3Q10irUxhYAI2H+xRLg3pDYZEO7w09CoNYO8zHfeQrw==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/code-frame": "7.10.4", + "chalk": "^4.1.0", + "find-up": "^5.0.0", + "js-yaml": "^4.1.0" + }, + "bin": { + "excpretty": "build/cli.js" + } + }, + "node_modules/@expo/xcpretty/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@expo/xcpretty/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@expo/xcpretty/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": 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/@expo/xcpretty/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@expo/xcpretty/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==", + "optional": true, + "peer": true + }, + "node_modules/@expo/xcpretty/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==", + "optional": true, + "peer": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@expo/xcpretty/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/xcpretty/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==", + "optional": true, + "peer": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@expo/xcpretty/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==", + "optional": true, + "peer": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@expo/xcpretty/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==", + "optional": true, + "peer": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@expo/xcpretty/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/xcpretty/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==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "devOptional": true + }, + "node_modules/@graphql-typed-document-node/core": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.1.1.tgz", + "integrity": "sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg==", + "optional": true, + "peer": true, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "optional": true, + "peer": true + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "optional": true, + "peer": true, + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "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/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@istanbuljs/load-nyc-config/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/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@istanbuljs/load-nyc-config/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/@istanbuljs/load-nyc-config/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/@istanbuljs/load-nyc-config/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/@istanbuljs/load-nyc-config/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/@istanbuljs/load-nyc-config/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/@istanbuljs/load-nyc-config/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/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/console/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/@jest/console/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/@jest/console/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/@jest/console/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/@jest/console/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console/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/@jest/core": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", + "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", + "dev": true, + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/reporters": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^27.5.1", + "jest-config": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-resolve-dependencies": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "jest-watcher": "^27.5.1", + "micromatch": "^4.0.4", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/core/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/@jest/core/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/@jest/core/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/@jest/core/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/@jest/core/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/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/@jest/create-cache-key-function": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-27.5.1.tgz", + "integrity": "sha512-dmH1yW+makpTSURTy8VzdUwFnfQh1G8R+DxO2Ho2FFmBbKFEVm+3jWdvFhE2VqB/LATCTokkP0dotjyQyw5/AQ==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/environment": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/globals/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/@jest/globals/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/@jest/globals/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/@jest/globals/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/@jest/globals/node_modules/expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/globals/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/globals/node_modules/jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/globals/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/@jest/reporters": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-haste-map": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.1.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/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/@jest/reporters/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/@jest/reporters/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/@jest/reporters/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/@jest/reporters/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/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/@jest/reporters/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/@jest/source-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9", + "source-map": "^0.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/source-map/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/@jest/test-result": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "dev": true, + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", + "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", + "dev": true, + "dependencies": { + "@jest/test-result": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-runtime": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/transform/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/@jest/transform/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/@jest/transform/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/@jest/transform/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/@jest/transform/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/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/@jest/transform/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/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "devOptional": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/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==", + "devOptional": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/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==", + "devOptional": 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/@jest/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==", + "devOptional": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/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==", + "devOptional": true + }, + "node_modules/@jest/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==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/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==", + "devOptional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "devOptional": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", + "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", + "devOptional": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", + "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", + "devOptional": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", + "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", + "devOptional": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", + "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", + "devOptional": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@ledgerhq/devices": { + "version": "5.51.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/devices/-/devices-5.51.1.tgz", + "integrity": "sha512-4w+P0VkbjzEXC7kv8T1GJ/9AVaP9I6uasMZ/JcdwZBS3qwvKo5A5z9uGhP5c7TvItzcmPb44b5Mw2kT+WjUuAA==", + "dependencies": { + "@ledgerhq/errors": "^5.50.0", + "@ledgerhq/logs": "^5.50.0", + "rxjs": "6", + "semver": "^7.3.5" + } + }, + "node_modules/@ledgerhq/devices/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/@ledgerhq/devices/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@ledgerhq/devices/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@ledgerhq/errors": { + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/errors/-/errors-5.50.0.tgz", + "integrity": "sha512-gu6aJ/BHuRlpU7kgVpy2vcYk6atjB4iauP2ymF7Gk0ez0Y/6VSMVSJvubeEQN+IV60+OBK0JgeIZG7OiHaw8ow==" + }, + "node_modules/@ledgerhq/hw-transport": { + "version": "5.51.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-5.51.1.tgz", + "integrity": "sha512-6wDYdbWrw9VwHIcoDnqWBaDFyviyjZWv6H9vz9Vyhe4Qd7TIFmbTl/eWs6hZvtZBza9K8y7zD8ChHwRI4s9tSw==", + "dependencies": { + "@ledgerhq/devices": "^5.51.1", + "@ledgerhq/errors": "^5.50.0", + "events": "^3.3.0" + } + }, + "node_modules/@ledgerhq/hw-transport-web-ble": { + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-web-ble/-/hw-transport-web-ble-5.48.0.tgz", + "integrity": "sha512-ezgssFvxc4/UbfwIxwg9jEn0/yiND8TW6bDkaE3kAqKCa8ZYYgFtms8iRqjTOJlqcbSYkudbNhP74jtY0NxfdA==", + "dependencies": { + "@ledgerhq/devices": "^5.48.0", + "@ledgerhq/errors": "^5.48.0", + "@ledgerhq/hw-transport": "^5.48.0", + "@ledgerhq/logs": "^5.48.0", + "rxjs": "^6.6.7" + } + }, + "node_modules/@ledgerhq/hw-transport-web-ble/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/@ledgerhq/hw-transport-web-ble/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@ledgerhq/hw-transport-webhid": { + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-webhid/-/hw-transport-webhid-5.48.0.tgz", + "integrity": "sha512-g6TYxgPX3MqP3jQ4SJaJjlM+2SwUSk4Si/9MeKLwz5ySbiD3bSTh/Gbzv8VBCaHPO4fILujc5vW/xejJuMzR8w==", + "dependencies": { + "@ledgerhq/devices": "^5.48.0", + "@ledgerhq/errors": "^5.48.0", + "@ledgerhq/hw-transport": "^5.48.0", + "@ledgerhq/logs": "^5.48.0" + } + }, + "node_modules/@ledgerhq/hw-transport-webusb": { + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-webusb/-/hw-transport-webusb-5.48.0.tgz", + "integrity": "sha512-tO+p11aRQx9q9ifmi/NCbCBKQ738lp+PROy1BWSzjCJcUEz1sKTLeRTLE2Xze25KebhuM2YR1NgkX5LN1z4upA==", + "dependencies": { + "@ledgerhq/devices": "^5.48.0", + "@ledgerhq/errors": "^5.48.0", + "@ledgerhq/hw-transport": "^5.48.0", + "@ledgerhq/logs": "^5.48.0" + } + }, + "node_modules/@ledgerhq/logs": { + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/logs/-/logs-5.50.0.tgz", + "integrity": "sha512-swKHYCOZUGyVt4ge0u8a7AwNcA//h4nx5wIi0sruGye1IJ5Cva0GyK9L2/WdX+kWVTKp92ZiEo1df31lrWGPgA==" + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "dev": true + }, + "node_modules/@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==", + "devOptional": 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==", + "devOptional": 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==", + "devOptional": 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/fs/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "optional": true, + "peer": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "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==", + "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/@peculiar/asn1-schema": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.1.0.tgz", + "integrity": "sha512-D6g4C5YRKC/iPujMAOXuZ7YGdaoMx8GsvWzfVSyx2LYeL38ECOKNywlYAuwbqQvON64lgsYdAujWQPX8hhoBLw==", + "dependencies": { + "@types/asn1js": "^2.0.2", + "asn1js": "^2.3.1", + "pvtsutils": "^1.2.1", + "tslib": "^2.3.1" + } + }, + "node_modules/@peculiar/json-schema": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/@peculiar/json-schema/-/json-schema-1.1.12.tgz", + "integrity": "sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@peculiar/webcrypto": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@peculiar/webcrypto/-/webcrypto-1.3.3.tgz", + "integrity": "sha512-+jkp16Hp18HkphJlMtqsQKjyDWJBh0AhDuoB+vVakuIRbkBdaFb7v26Ldm25altjiYhCyQnR5NChHxwSTvbXJw==", + "dependencies": { + "@peculiar/asn1-schema": "^2.1.0", + "@peculiar/json-schema": "^1.1.12", + "pvtsutils": "^1.2.2", + "tslib": "^2.3.1", + "webcrypto-core": "^1.7.2" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/@playwright/test": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.22.0.tgz", + "integrity": "sha512-ExcAjiECo3uTG5Sl5H4a7rKp/5TEHTI87dv9NHYEoUFuOHPhSVxB7QsuM70ktO+wTTZ9KzhwzcegxAGRmUFKEA==", + "dev": true, + "dependencies": { + "playwright-core": "1.22.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.21", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", + "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", + "dev": true + }, + "node_modules/@react-dnd/asap": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@react-dnd/asap/-/asap-4.0.1.tgz", + "integrity": "sha512-kLy0PJDDwvwwTXxqTFNAAllPHD73AycE9ypWeln/IguoGBEbvFcPDbCV03G52bEcC5E+YgupBE0VzHGdC8SIXg==" + }, + "node_modules/@react-dnd/invariant": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@react-dnd/invariant/-/invariant-2.0.0.tgz", + "integrity": "sha512-xL4RCQBCBDJ+GRwKTFhGUW8GXa4yoDfJrPbLblc3U09ciS+9ZJXJ3Qrcs/x2IODOdIE5kQxvMmE2UKyqUictUw==" + }, + "node_modules/@react-dnd/shallowequal": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@react-dnd/shallowequal/-/shallowequal-2.0.0.tgz", + "integrity": "sha512-Pc/AFTdwZwEKJxFJvlxrSmGe/di+aAOBn60sremrpLo6VI/6cmiUYNNwlI5KNYttg7uypzA3ILPMPgxB2GYZEg==" + }, + "node_modules/@react-native-community/cli-debugger-ui": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-7.0.3.tgz", + "integrity": "sha512-G4SA6jFI0j22o+j+kYP8/7sxzbCDqSp2QiHA/X5E0lsGEd2o9qN2zbIjiFr8b8k+VVAYSUONhoC0+uKuINvmkA==", + "optional": true, + "peer": true, + "dependencies": { + "serve-static": "^1.13.1" + } + }, + "node_modules/@react-native-community/cli-hermes": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-6.3.0.tgz", + "integrity": "sha512-Uhbm9bubyZLZ12vFCIfWbE/Qi3SBTbYIN/TC08EudTLhv/KbPomCQnmFsnJ7AXQFuOZJs73mBxoEAYSbRbwyVA==", + "optional": true, + "peer": true, + "dependencies": { + "@react-native-community/cli-platform-android": "^6.3.0", + "@react-native-community/cli-tools": "^6.2.0", + "chalk": "^4.1.2", + "hermes-profile-transformer": "^0.0.6", + "ip": "^1.1.5" + } + }, + "node_modules/@react-native-community/cli-hermes/node_modules/@react-native-community/cli-platform-android": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-6.3.0.tgz", + "integrity": "sha512-d5ufyYcvrZoHznYm5bjBXaiHIJv552t5gYtQpnUsxBhHSQ8QlaNmlLUyeSPRDfOw4ND9b0tPHqs4ufwx6vp/fQ==", + "optional": true, + "peer": true, + "dependencies": { + "@react-native-community/cli-tools": "^6.2.0", + "chalk": "^4.1.2", + "execa": "^1.0.0", + "fs-extra": "^8.1.0", + "glob": "^7.1.3", + "jetifier": "^1.6.2", + "lodash": "^4.17.15", + "logkitty": "^0.7.1", + "slash": "^3.0.0", + "xmldoc": "^1.1.2" + } + }, + "node_modules/@react-native-community/cli-hermes/node_modules/@react-native-community/cli-tools": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-6.2.0.tgz", + "integrity": "sha512-08ssz4GMEnRxC/1FgTTN/Ud7mExQi5xMphItPjfHiTxpZPhrFn+IMx6mya0ncFEhhxQ207wYlJMRLPRRdBZ8oA==", + "optional": true, + "peer": true, + "dependencies": { + "appdirsjs": "^1.2.4", + "chalk": "^4.1.2", + "lodash": "^4.17.15", + "mime": "^2.4.1", + "node-fetch": "^2.6.0", + "open": "^6.2.0", + "semver": "^6.3.0", + "shell-quote": "1.6.1" + } + }, + "node_modules/@react-native-community/cli-hermes/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-hermes/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": 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/@react-native-community/cli-hermes/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-hermes/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==", + "optional": true, + "peer": true + }, + "node_modules/@react-native-community/cli-hermes/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==", + "optional": true, + "peer": true, + "dependencies": { + "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": ">=4.8" + } + }, + "node_modules/@react-native-community/cli-hermes/node_modules/cross-spawn/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "optional": true, + "peer": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@react-native-community/cli-hermes/node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "optional": true, + "peer": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.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": ">=6" + } + }, + "node_modules/@react-native-community/cli-hermes/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "optional": true, + "peer": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@react-native-community/cli-hermes/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-hermes/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@react-native-community/cli-hermes/node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@react-native-community/cli-hermes/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": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "optional": true, + "peer": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@react-native-community/cli-hermes/node_modules/open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "optional": true, + "peer": true, + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-hermes/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@react-native-community/cli-hermes/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "optional": true, + "peer": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@react-native-community/cli-hermes/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@react-native-community/cli-hermes/node_modules/shell-quote": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", + "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "optional": true, + "peer": true, + "dependencies": { + "array-filter": "~0.0.0", + "array-map": "~0.0.0", + "array-reduce": "~0.0.0", + "jsonify": "~0.0.0" + } + }, + "node_modules/@react-native-community/cli-hermes/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==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-hermes/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "optional": true, + "peer": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/@react-native-community/cli-platform-android": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-7.0.1.tgz", + "integrity": "sha512-nOr0aMkxAymCnbtsQwXBlyoRN2Y+IzC7Qz5T+/zyWwEbTY8SKQI8uV+8+qttUvzSvuXa2PeXsTWluuliOS8KCw==", + "optional": true, + "peer": true, + "dependencies": { + "@react-native-community/cli-tools": "^7.0.1", + "chalk": "^4.1.2", + "execa": "^1.0.0", + "fs-extra": "^8.1.0", + "glob": "^7.1.3", + "jetifier": "^1.6.2", + "lodash": "^4.17.15", + "logkitty": "^0.7.1", + "slash": "^3.0.0", + "xmldoc": "^1.1.2" + } + }, + "node_modules/@react-native-community/cli-platform-android/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": 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/@react-native-community/cli-platform-android/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-platform-android/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==", + "optional": true, + "peer": true + }, + "node_modules/@react-native-community/cli-platform-android/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==", + "optional": true, + "peer": true, + "dependencies": { + "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": ">=4.8" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "optional": true, + "peer": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.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": ">=6" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "optional": true, + "peer": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@react-native-community/cli-platform-android/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@react-native-community/cli-platform-android/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": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "optional": true, + "peer": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "optional": true, + "peer": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "optional": true, + "peer": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@react-native-community/cli-platform-android/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==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "optional": true, + "peer": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/@react-native-community/cli-platform-ios": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-7.0.1.tgz", + "integrity": "sha512-PLRIbzrCzSedmpjuFtQqcqUD45G8q7sEciI1lf5zUbVMXqjIBwJWS7iz8235PyWwj8J4MNHohLC+oyRueFtbGg==", + "optional": true, + "peer": true, + "dependencies": { + "@react-native-community/cli-tools": "^7.0.1", + "chalk": "^4.1.2", + "execa": "^1.0.0", + "glob": "^7.1.3", + "js-yaml": "^3.13.1", + "lodash": "^4.17.15", + "ora": "^5.4.1", + "plist": "^3.0.2", + "xcode": "^3.0.0" + } + }, + "node_modules/@react-native-community/cli-platform-ios/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-platform-ios/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "optional": true, + "peer": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@react-native-community/cli-platform-ios/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": 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/@react-native-community/cli-platform-ios/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-platform-ios/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==", + "optional": true, + "peer": true + }, + "node_modules/@react-native-community/cli-platform-ios/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==", + "optional": true, + "peer": true, + "dependencies": { + "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": ">=4.8" + } + }, + "node_modules/@react-native-community/cli-platform-ios/node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "optional": true, + "peer": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.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": ">=6" + } + }, + "node_modules/@react-native-community/cli-platform-ios/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "optional": true, + "peer": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@react-native-community/cli-platform-ios/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-platform-ios/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@react-native-community/cli-platform-ios/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "optional": true, + "peer": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@react-native-community/cli-platform-ios/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": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "optional": true, + "peer": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@react-native-community/cli-platform-ios/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@react-native-community/cli-platform-ios/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "optional": true, + "peer": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@react-native-community/cli-platform-ios/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "optional": true, + "peer": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@react-native-community/cli-platform-ios/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@react-native-community/cli-platform-ios/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==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-platform-ios/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "optional": true, + "peer": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/@react-native-community/cli-plugin-metro": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-7.0.3.tgz", + "integrity": "sha512-HJrEkFbxv9DNixsGwO+Q0zCcZMghDltyzeB9yQ//D5ZR4ZUEuAIPrRDdEp9xVw0WkBxAIZs6KXLux2/yPMwLhA==", + "optional": true, + "peer": true, + "dependencies": { + "@react-native-community/cli-server-api": "^7.0.3", + "@react-native-community/cli-tools": "^6.2.0", + "chalk": "^4.1.2", + "metro": "^0.67.0", + "metro-config": "^0.67.0", + "metro-core": "^0.67.0", + "metro-react-native-babel-transformer": "^0.67.0", + "metro-resolver": "^0.67.0", + "metro-runtime": "^0.67.0", + "readline": "^1.3.0" + } + }, + "node_modules/@react-native-community/cli-plugin-metro/node_modules/@react-native-community/cli-tools": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-6.2.0.tgz", + "integrity": "sha512-08ssz4GMEnRxC/1FgTTN/Ud7mExQi5xMphItPjfHiTxpZPhrFn+IMx6mya0ncFEhhxQ207wYlJMRLPRRdBZ8oA==", + "optional": true, + "peer": true, + "dependencies": { + "appdirsjs": "^1.2.4", + "chalk": "^4.1.2", + "lodash": "^4.17.15", + "mime": "^2.4.1", + "node-fetch": "^2.6.0", + "open": "^6.2.0", + "semver": "^6.3.0", + "shell-quote": "1.6.1" + } + }, + "node_modules/@react-native-community/cli-plugin-metro/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-plugin-metro/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": 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/@react-native-community/cli-plugin-metro/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-plugin-metro/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==", + "optional": true, + "peer": true + }, + "node_modules/@react-native-community/cli-plugin-metro/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-plugin-metro/node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@react-native-community/cli-plugin-metro/node_modules/open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "optional": true, + "peer": true, + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-plugin-metro/node_modules/shell-quote": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", + "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "optional": true, + "peer": true, + "dependencies": { + "array-filter": "~0.0.0", + "array-map": "~0.0.0", + "array-reduce": "~0.0.0", + "jsonify": "~0.0.0" + } + }, + "node_modules/@react-native-community/cli-plugin-metro/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==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-server-api": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-7.0.3.tgz", + "integrity": "sha512-JDrLsrkBgNxbG2u3fouoVGL9tKrXUrTsaNwr+oCV+3XyMwbVe42r/OaQ681/iW/7mHXjuVkDnMcp7BMg7e2yJg==", + "optional": true, + "peer": true, + "dependencies": { + "@react-native-community/cli-debugger-ui": "^7.0.3", + "@react-native-community/cli-tools": "^6.2.0", + "compression": "^1.7.1", + "connect": "^3.6.5", + "errorhandler": "^1.5.0", + "nocache": "^2.1.0", + "pretty-format": "^26.6.2", + "serve-static": "^1.13.1", + "ws": "^7.5.1" + } + }, + "node_modules/@react-native-community/cli-server-api/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "optional": true, + "peer": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@react-native-community/cli-server-api/node_modules/@react-native-community/cli-tools": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-6.2.0.tgz", + "integrity": "sha512-08ssz4GMEnRxC/1FgTTN/Ud7mExQi5xMphItPjfHiTxpZPhrFn+IMx6mya0ncFEhhxQ207wYlJMRLPRRdBZ8oA==", + "optional": true, + "peer": true, + "dependencies": { + "appdirsjs": "^1.2.4", + "chalk": "^4.1.2", + "lodash": "^4.17.15", + "mime": "^2.4.1", + "node-fetch": "^2.6.0", + "open": "^6.2.0", + "semver": "^6.3.0", + "shell-quote": "1.6.1" + } + }, + "node_modules/@react-native-community/cli-server-api/node_modules/@types/yargs": { + "version": "15.0.14", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", + "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", + "optional": true, + "peer": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@react-native-community/cli-server-api/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-server-api/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": 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/@react-native-community/cli-server-api/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-server-api/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==", + "optional": true, + "peer": true + }, + "node_modules/@react-native-community/cli-server-api/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-server-api/node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@react-native-community/cli-server-api/node_modules/open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "optional": true, + "peer": true, + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-server-api/node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@react-native-community/cli-server-api/node_modules/shell-quote": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", + "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "optional": true, + "peer": true, + "dependencies": { + "array-filter": "~0.0.0", + "array-map": "~0.0.0", + "array-reduce": "~0.0.0", + "jsonify": "~0.0.0" + } + }, + "node_modules/@react-native-community/cli-server-api/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==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-tools": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-7.0.1.tgz", + "integrity": "sha512-0xra4hKNA5PR2zYVXsDMNiXMGaDNoNRYMY6eTP2aVIxQbqIcVMDWSyCA8wMWX5iOpMWg0cZGaQ6a77f3Rlb34g==", + "optional": true, + "peer": true, + "dependencies": { + "appdirsjs": "^1.2.4", + "chalk": "^4.1.2", + "lodash": "^4.17.15", + "mime": "^2.4.1", + "node-fetch": "^2.6.0", + "open": "^6.2.0", + "ora": "^5.4.1", + "semver": "^6.3.0", + "shell-quote": "^1.7.3" + } + }, + "node_modules/@react-native-community/cli-tools/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": 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/@react-native-community/cli-tools/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-tools/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==", + "optional": true, + "peer": true + }, + "node_modules/@react-native-community/cli-tools/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "optional": true, + "peer": true, + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-tools/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==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-types": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-6.0.0.tgz", + "integrity": "sha512-K493Fk2DMJC0ZM8s8gnfseKxGasIhuDaCUDeLZcoCSFlrjKEuEs1BKKEJiev0CARhKEXKOyyp/uqYM9nWhisNw==", + "optional": true, + "peer": true, + "dependencies": { + "ora": "^3.4.0" + } + }, + "node_modules/@react-native-community/cli-types/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@react-native-community/cli-types/node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "optional": true, + "peer": true, + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@react-native-community/cli-types/node_modules/log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "optional": true, + "peer": true, + "dependencies": { + "chalk": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@react-native-community/cli-types/node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@react-native-community/cli-types/node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "optional": true, + "peer": true, + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@react-native-community/cli-types/node_modules/ora": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", + "optional": true, + "peer": true, + "dependencies": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@react-native-community/cli-types/node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "optional": true, + "peer": true, + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@react-native-community/cli-types/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@react-native/assets": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@react-native/assets/-/assets-1.0.0.tgz", + "integrity": "sha512-KrwSpS1tKI70wuKl68DwJZYEvXktDHdZMG0k2AXD/rJVSlB23/X2CB2cutVR0HwNMJIal9HOUOBB2rVfa6UGtQ==", + "optional": true, + "peer": true + }, + "node_modules/@react-native/normalize-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@react-native/normalize-color/-/normalize-color-2.0.0.tgz", + "integrity": "sha512-Wip/xsc5lw8vsBlmY2MO/gFLp3MvuZ2baBZjDeTjjndMgM0h5sxz7AZR62RDPGgstp8Np7JzjvVqVT7tpFZqsw==", + "optional": true, + "peer": true + }, + "node_modules/@react-native/polyfills": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@react-native/polyfills/-/polyfills-2.0.0.tgz", + "integrity": "sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ==", + "optional": true, + "peer": true + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.1.1.tgz", + "integrity": "sha512-BUyKJGdDWqvWC5GEhyOiUrGNi9iJUr4CU0O2WxJL6QJhHeeA/NVBalH+FeK0r/x/W0rPymXt5s78TDS7d6lCwg==", + "dev": true + }, + "node_modules/@segment/loosely-validate-event": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@segment/loosely-validate-event/-/loosely-validate-event-2.0.0.tgz", + "integrity": "sha512-ZMCSfztDBqwotkl848ODgVcAmN4OItEWDCkshcKz0/W6gGSQayuuCtWV/MlodFivAZD793d6UgANd6wCXUfrIw==", + "optional": true, + "peer": true, + "dependencies": { + "component-type": "^1.2.1", + "join-component": "^1.1.0" + } + }, + "node_modules/@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "optional": true, + "peer": true, + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", + "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==", + "optional": true, + "peer": true + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "optional": true, + "peer": true + }, + "node_modules/@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/@testing-library/jest-dom": { + "version": "5.16.4", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.16.4.tgz", + "integrity": "sha512-Gy+IoFutbMQcky0k+bqqumXZ1cTGswLsFqmNLzNdSKkU9KGV2u9oXhukCbbJ9/LRPKiqwxEE8VpV/+YZlfkPUA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.9.2", + "@types/testing-library__jest-dom": "^5.9.1", + "aria-query": "^5.0.0", + "chalk": "^3.0.0", + "css": "^3.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.5.6", + "lodash": "^4.17.15", + "redent": "^3.0.0" + }, + "engines": { + "node": ">=8", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/@testing-library/jest-dom/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/@testing-library/jest-dom/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/jest-dom/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/@testing-library/jest-dom/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/@testing-library/jest-dom/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/@testing-library/jest-dom/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/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@types/asn1js": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@types/asn1js/-/asn1js-2.0.2.tgz", + "integrity": "sha512-t4YHCgtD+ERvH0FyxvNlYwJ2ezhqw7t+Ygh4urQ7dJER8i185JPv6oIM3ey5YQmGN6Zp9EMbpohkjZi9t3UxwA==" + }, + "node_modules/@types/babel__core": { + "version": "7.1.19", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", + "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", + "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.3.0" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/chrome": { + "version": "0.0.191", + "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.191.tgz", + "integrity": "sha512-hXYHJJ1Y265xKCw0o2Kz4CnR8aUhOMdyxK1AinET4EDr3fhpEMvOFDwdqz9LUX4syfTVYWb8w7vfC12s112ehg==", + "dev": true, + "dependencies": { + "@types/filesystem": "*", + "@types/har-format": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/croppie": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@types/croppie/-/croppie-2.6.1.tgz", + "integrity": "sha512-5hUL4mzuE0mzva4KXPxrvBlargTcs9bqisjQBOZ76W6FkxoCvPVvXMSwtevUhD6r+YqgBh3gumR3gBhxuc4wdQ==", + "dev": true + }, + "node_modules/@types/eslint": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", + "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true + }, + "node_modules/@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.28", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", + "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "node_modules/@types/filesystem": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/filesystem/-/filesystem-0.0.32.tgz", + "integrity": "sha512-Yuf4jR5YYMR2DVgwuCiP11s0xuVRyPKmz8vo6HBY3CGdeMj8af93CFZX+T82+VD1+UqHOxTq31lO7MI7lepBtQ==", + "dev": true, + "dependencies": { + "@types/filewriter": "*" + } + }, + "node_modules/@types/filewriter": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/filewriter/-/filewriter-0.0.29.tgz", + "integrity": "sha512-BsPXH/irW0ht0Ji6iw/jJaK8Lj3FJemon2gvEqHKpCdDCeemHa+rI3WBGq5z7cDMZgoLjY40oninGxqk+8NzNQ==", + "dev": true + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "devOptional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/har-format": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@types/har-format/-/har-format-1.2.8.tgz", + "integrity": "sha512-OP6L9VuZNdskgNN3zFQQ54ceYD8OLq5IbqO4VK91ORLfOm7WdT/CiT/pHEBSQEqCInJ2y3O6iCm/zGtPElpgJQ==", + "dev": true + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true + }, + "node_modules/@types/http-proxy": { + "version": "1.17.8", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.8.tgz", + "integrity": "sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "devOptional": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "devOptional": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "devOptional": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-fUy7YRpT+rHXto1YlL+J9rs0uLGyiqVt3ZOTQR+4ROc47yNl8WLdVLgUloBRhOxP1PZvguHl44T3H0wAWxahYQ==", + "dev": true, + "dependencies": { + "jest-matcher-utils": "^27.0.0", + "pretty-format": "^27.0.0" + } + }, + "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/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true + }, + "node_modules/@types/mdast": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", + "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", + "dev": true, + "dependencies": { + "@types/unist": "*" + } + }, + "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==", + "dev": true + }, + "node_modules/@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "17.0.23", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.23.tgz", + "integrity": "sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==", + "devOptional": true + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "node_modules/@types/prettier": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.4.tgz", + "integrity": "sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA==", + "dev": true + }, + "node_modules/@types/prop-types": { + "version": "15.7.4", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", + "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==", + "devOptional": true + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "node_modules/@types/react": { + "version": "18.0.9", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.9.tgz", + "integrity": "sha512-9bjbg1hJHUm4De19L1cHiW0Jvx3geel6Qczhjd0qY5VKVE2X5+x77YxAepuCwVh4vrgZJdgEJw48zrhRIeF4Nw==", + "devOptional": true, + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.0.4", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.4.tgz", + "integrity": "sha512-FgTtbqPOCI3dzZPZoC2T/sx3L34qxy99ITWn4eoSA95qPyXDMH0ALoAqUp49ITniiJFsXUVBtalh/KffMpg21Q==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/retry": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", + "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", + "dev": true + }, + "node_modules/@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", + "devOptional": true + }, + "node_modules/@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.13.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "node_modules/@types/testing-library__jest-dom": { + "version": "5.14.3", + "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.3.tgz", + "integrity": "sha512-oKZe+Mf4ioWlMuzVBaXQ9WDnEm1+umLx0InILg+yvZVBBDmzV5KfZyLrCvadtWcx8+916jLmHafcmqqffl+iIw==", + "dev": true, + "dependencies": { + "@types/jest": "*" + } + }, + "node_modules/@types/unist": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", + "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", + "dev": true + }, + "node_modules/@types/wicg-mediasession": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@types/wicg-mediasession/-/wicg-mediasession-1.1.3.tgz", + "integrity": "sha512-lzoszzJJfW9vcaIxf6tDx3lCJq/4oaD+mplA7sCV7W21PGdR6yUPwErN047ziIcwFx61w8WMURIwUyj1V7KJIQ==", + "dev": true + }, + "node_modules/@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "devOptional": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "devOptional": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.23.0.tgz", + "integrity": "sha512-hEcSmG4XodSLiAp1uxv/OQSGsDY6QN3TcRU32gANp+19wGE1QQZLRS8/GV58VRUoXhnkuJ3ZxNQ3T6Z6zM59DA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.23.0", + "@typescript-eslint/type-utils": "5.23.0", + "@typescript-eslint/utils": "5.23.0", + "debug": "^4.3.2", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.2.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.23.0.tgz", + "integrity": "sha512-EhjaFELQHCRb5wTwlGsNMvzK9b8Oco4aYNleeDlNuL6qXWDF47ch4EhVNPh8Rdhf9tmqbN4sWDk/8g+Z/J8JVw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.23.0", + "@typescript-eslint/visitor-keys": "5.23.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.23.0.tgz", + "integrity": "sha512-NfBsV/h4dir/8mJwdZz7JFibaKC3E/QdeMEDJhiAE3/eMkoniZ7MjbEMCGXw6MZnZDMN3G9S0mH/6WUIj91dmw==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.23.0.tgz", + "integrity": "sha512-xE9e0lrHhI647SlGMl+m+3E3CKPF1wzvvOEWnuE3CCjjT7UiRnDGJxmAcVKJIlFgK6DY9RB98eLr1OPigPEOGg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.23.0", + "@typescript-eslint/visitor-keys": "5.23.0", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.23.0.tgz", + "integrity": "sha512-dbgaKN21drqpkbbedGMNPCtRPZo1IOUr5EI9Jrrh99r5UW5Q0dz46RKXeSBoPV+56R6dFKpbrdhgUNSJsDDRZA==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.23.0", + "@typescript-eslint/types": "5.23.0", + "@typescript-eslint/typescript-estree": "5.23.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.23.0.tgz", + "integrity": "sha512-Vd4mFNchU62sJB8pX19ZSPog05B0Y0CE2UxAZPT5k4iqhRYjPnqyY3woMxCd0++t9OTqkgjST+1ydLBi7e2Fvg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.23.0", + "eslint-visitor-keys": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/experimental-utils": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.16.0.tgz", + "integrity": "sha512-bitZtqO13XX64/UOQKoDbVg2H4VHzbHnWWlTRc7ofq7SuQyPCwEycF1Zmn5ZAMTJZ3p5uMS7xJGUdOtZK7LrNw==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "5.16.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.23.0.tgz", + "integrity": "sha512-V06cYUkqcGqpFjb8ttVgzNF53tgbB/KoQT/iB++DOIExKmzI9vBJKjZKt/6FuV9c+zrDsvJKbJ2DOCYwX91cbw==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.23.0", + "@typescript-eslint/types": "5.23.0", + "@typescript-eslint/typescript-estree": "5.23.0", + "debug": "^4.3.2" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.23.0.tgz", + "integrity": "sha512-EhjaFELQHCRb5wTwlGsNMvzK9b8Oco4aYNleeDlNuL6qXWDF47ch4EhVNPh8Rdhf9tmqbN4sWDk/8g+Z/J8JVw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.23.0", + "@typescript-eslint/visitor-keys": "5.23.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.23.0.tgz", + "integrity": "sha512-NfBsV/h4dir/8mJwdZz7JFibaKC3E/QdeMEDJhiAE3/eMkoniZ7MjbEMCGXw6MZnZDMN3G9S0mH/6WUIj91dmw==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.23.0.tgz", + "integrity": "sha512-xE9e0lrHhI647SlGMl+m+3E3CKPF1wzvvOEWnuE3CCjjT7UiRnDGJxmAcVKJIlFgK6DY9RB98eLr1OPigPEOGg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.23.0", + "@typescript-eslint/visitor-keys": "5.23.0", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.23.0.tgz", + "integrity": "sha512-Vd4mFNchU62sJB8pX19ZSPog05B0Y0CE2UxAZPT5k4iqhRYjPnqyY3woMxCd0++t9OTqkgjST+1ydLBi7e2Fvg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.23.0", + "eslint-visitor-keys": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.16.0.tgz", + "integrity": "sha512-P+Yab2Hovg8NekLIR/mOElCDPyGgFZKhGoZA901Yax6WR6HVeGLbsqJkZ+Cvk5nts/dAlFKm8PfL43UZnWdpIQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.16.0", + "@typescript-eslint/visitor-keys": "5.16.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.23.0.tgz", + "integrity": "sha512-iuI05JsJl/SUnOTXA9f4oI+/4qS/Zcgk+s2ir+lRmXI+80D8GaGwoUqs4p+X+4AxDolPpEpVUdlEH4ADxFy4gw==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "5.23.0", + "debug": "^4.3.2", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/scope-manager": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.23.0.tgz", + "integrity": "sha512-EhjaFELQHCRb5wTwlGsNMvzK9b8Oco4aYNleeDlNuL6qXWDF47ch4EhVNPh8Rdhf9tmqbN4sWDk/8g+Z/J8JVw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.23.0", + "@typescript-eslint/visitor-keys": "5.23.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.23.0.tgz", + "integrity": "sha512-NfBsV/h4dir/8mJwdZz7JFibaKC3E/QdeMEDJhiAE3/eMkoniZ7MjbEMCGXw6MZnZDMN3G9S0mH/6WUIj91dmw==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.23.0.tgz", + "integrity": "sha512-xE9e0lrHhI647SlGMl+m+3E3CKPF1wzvvOEWnuE3CCjjT7UiRnDGJxmAcVKJIlFgK6DY9RB98eLr1OPigPEOGg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.23.0", + "@typescript-eslint/visitor-keys": "5.23.0", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.23.0.tgz", + "integrity": "sha512-dbgaKN21drqpkbbedGMNPCtRPZo1IOUr5EI9Jrrh99r5UW5Q0dz46RKXeSBoPV+56R6dFKpbrdhgUNSJsDDRZA==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.23.0", + "@typescript-eslint/types": "5.23.0", + "@typescript-eslint/typescript-estree": "5.23.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.23.0.tgz", + "integrity": "sha512-Vd4mFNchU62sJB8pX19ZSPog05B0Y0CE2UxAZPT5k4iqhRYjPnqyY3woMxCd0++t9OTqkgjST+1ydLBi7e2Fvg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.23.0", + "eslint-visitor-keys": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.16.0.tgz", + "integrity": "sha512-oUorOwLj/3/3p/HFwrp6m/J2VfbLC8gjW5X3awpQJ/bSG+YRGFS4dpsvtQ8T2VNveV+LflQHjlLvB6v0R87z4g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.16.0.tgz", + "integrity": "sha512-SE4VfbLWUZl9MR+ngLSARptUv2E8brY0luCdgmUevU6arZRY/KxYoLI/3V/yxaURR8tLRN7bmZtJdgmzLHI6pQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.16.0", + "@typescript-eslint/visitor-keys": "5.16.0", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.16.0.tgz", + "integrity": "sha512-iYej2ER6AwmejLWMWzJIHy3nPJeGDuCqf8Jnb+jAQVoPpmWzwQOfa9hWVB8GIQE5gsCv/rfN4T+AYb/V06WseQ==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.16.0", + "@typescript-eslint/types": "5.16.0", + "@typescript-eslint/typescript-estree": "5.16.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.16.0.tgz", + "integrity": "sha512-jqxO8msp5vZDhikTwq9ubyMHqZ67UIvawohr4qF3KhlpL7gzSjOd+8471H3nh5LyABkaI85laEKKU8SnGUK5/g==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.16.0", + "eslint-visitor-keys": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@unimodules/core": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@unimodules/core/-/core-7.1.2.tgz", + "integrity": "sha512-lY+e2TAFuebD3vshHMIRqru3X4+k7Xkba4Wa7QsDBd+ex4c4N2dHAO61E2SrGD9+TRBD8w/o7mzK6ljbqRnbyg==", + "optional": true, + "dependencies": { + "compare-versions": "^3.4.0" + } + }, + "node_modules/@unimodules/react-native-adapter": { + "version": "6.3.9", + "resolved": "https://registry.npmjs.org/@unimodules/react-native-adapter/-/react-native-adapter-6.3.9.tgz", + "integrity": "sha512-i9/9Si4AQ8awls+YGAKkByFbeAsOPgUNeLoYeh2SQ3ddjxJ5ZJDtq/I74clDnpDcn8zS9pYlcDJ9fgVJa39Glw==", + "optional": true, + "dependencies": { + "expo-modules-autolinking": "^0.0.3", + "invariant": "^2.2.4" + } + }, + "node_modules/@urql/core": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@urql/core/-/core-2.3.6.tgz", + "integrity": "sha512-PUxhtBh7/8167HJK6WqBv6Z0piuiaZHQGYbhwpNL9aIQmLROPEdaUYkY4wh45wPQXcTpnd11l0q3Pw+TI11pdw==", + "optional": true, + "peer": true, + "dependencies": { + "@graphql-typed-document-node/core": "^3.1.0", + "wonka": "^4.0.14" + }, + "peerDependencies": { + "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@urql/exchange-retry": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@urql/exchange-retry/-/exchange-retry-0.3.0.tgz", + "integrity": "sha512-hHqer2mcdVC0eYnVNbWyi28AlGOPb2vjH3lP3/Bc8Lc8BjhMsDwFMm7WhoP5C1+cfbr/QJ6Er3H/L08wznXxfg==", + "optional": true, + "peer": true, + "dependencies": { + "@urql/core": ">=2.3.1", + "wonka": "^4.0.14" + }, + "peerDependencies": { + "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz", + "integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==", + "dev": true, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x", + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.1.tgz", + "integrity": "sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==", + "dev": true, + "dependencies": { + "envinfo": "^7.7.3" + }, + "peerDependencies": { + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz", + "integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==", + "dev": true, + "peerDependencies": { + "webpack-cli": "4.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xmldom/xmldom": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.5.tgz", + "integrity": "sha512-V3BIhmY36fXZ1OtVcI9W+FxQqxVLsPKcNjWigIaa81dLC9IolJl5Mt4Cvhmr0flUnjSpTdrbMTSbXqYqV5dT6A==", + "devOptional": true, + "engines": { + "node": ">=10.0.0" + } + }, + "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/@zeit/schemas": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.6.0.tgz", + "integrity": "sha512-uUrgZ8AxS+Lio0fZKAipJjAh415JyrOZowliZAzmnJSsf7piVL5w+G0+gFJ0KSu3QRhvui/7zuvpLz03YjXAhg==", + "dev": true + }, + "node_modules/abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "dev": true + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "optional": true, + "peer": true, + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/absolute-path": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/absolute-path/-/absolute-path-0.0.0.tgz", + "integrity": "sha1-p4di+9rftSl76ZsV01p4Wy8JW/c=", + "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==", + "devOptional": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/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": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": 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==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "devOptional": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/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/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/anser": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz", + "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==", + "optional": true, + "peer": true + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dev": true, + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-align/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/ansi-align/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/ansi-align/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/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==", + "devOptional": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-fragments": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz", + "integrity": "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==", + "optional": true, + "peer": true, + "dependencies": { + "colorette": "^1.0.7", + "slice-ansi": "^2.0.0", + "strip-ansi": "^5.0.0" + } + }, + "node_modules/ansi-fragments/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-fragments/node_modules/astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-fragments/node_modules/colorette": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", + "optional": true, + "peer": true + }, + "node_modules/ansi-fragments/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-fragments/node_modules/slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-fragments/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "devOptional": 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==", + "devOptional": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", + "optional": true, + "peer": true + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "devOptional": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/appdirsjs": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.6.tgz", + "integrity": "sha512-D8wJNkqMCeQs3kLasatELsddox/Xqkhp+J07iXGyL54fVN7oc+nmNfYzGuCs1IEP6uBw+TfpuO3JKwc+lECy4w==", + "optional": true, + "peer": true + }, + "node_modules/application-config-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/application-config-path/-/application-config-path-0.1.0.tgz", + "integrity": "sha1-GTxfCoZUGkxm+6Hi3DhYM2LqXo8=", + "optional": true, + "peer": true + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "node_modules/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": "3.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", + "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/arg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arg/-/arg-2.0.0.tgz", + "integrity": "sha512-XxNTUzKnz1ctK3ZIcI2XUPlD96wbHP2nGqkPKpvk/HNRlPveYrXIVSTk9m3LcqOgDPg3B1nMvdV/K8wZd7PG4w==", + "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==", + "devOptional": true + }, + "node_modules/aria-query": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.0.tgz", + "integrity": "sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-filter": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", + "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", + "optional": true, + "peer": true + }, + "node_modules/array-find": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-find/-/array-find-1.0.0.tgz", + "integrity": "sha1-bI4obRHtdoMn+OYuzuhzU8o+eLg=", + "dev": true + }, + "node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "node_modules/array-includes": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", + "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-map": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", + "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", + "optional": true, + "peer": true + }, + "node_modules/array-reduce": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", + "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", + "optional": true, + "peer": 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==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", + "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz", + "integrity": "sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "optional": true, + "peer": true + }, + "node_modules/asmcrypto.js": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/asmcrypto.js/-/asmcrypto.js-0.22.0.tgz", + "integrity": "sha512-usgMoyXjMbx/ZPdzTSXExhMPur2FTdz/Vo5PVx2gIaBcdAAJNOFlsdgqveM8Cff7W0v+xrf9BwjOV26JSAF9qA==" + }, + "node_modules/asn1js": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-2.3.2.tgz", + "integrity": "sha512-IYzujqcOk7fHaePpTyvD3KPAA0AjT3qZlaQAw76zmPPAV/XTjhO+tbHjbFbIQZIhw+fk9wCSfb0Z6K+JHe8Q2g==", + "dependencies": { + "pvutils": "latest" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ast-types": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz", + "integrity": "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==", + "optional": true, + "peer": true, + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "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": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", + "dev": true + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "optional": true, + "peer": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "optional": true, + "peer": true + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "devOptional": true + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "optional": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "devOptional": true, + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz", + "integrity": "sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + ], + "dependencies": { + "browserslist": "^4.20.3", + "caniuse-lite": "^1.0.30001335", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/axe-core": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.1.tgz", + "integrity": "sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/axobject-query": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", + "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", + "dev": true + }, + "node_modules/b64-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/b64-lite/-/b64-lite-1.4.0.tgz", + "integrity": "sha512-aHe97M7DXt+dkpa8fHlCcm1CnskAHrJqEfMI0KN7dwqlzml/aUe1AGt6lk51HzrSfVD67xOso84sOpr+0wIe2w==", + "dependencies": { + "base-64": "^0.1.0" + } + }, + "node_modules/b64u-lite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/b64u-lite/-/b64u-lite-1.1.0.tgz", + "integrity": "sha512-929qWGDVCRph7gQVTC6koHqQIpF4vtVaSbwLltFQo44B1bYUquALswZdBKFfrJCPEnsCOvWkJsPdQYZ/Ukhw8A==", + "dependencies": { + "b64-lite": "^1.4.0" + } + }, + "node_modules/babel-core": { + "version": "7.0.0-bridge.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", + "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", + "optional": true, + "peer": true, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "dev": true, + "dependencies": { + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-jest/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/babel-jest/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/babel-jest/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/babel-jest/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/babel-jest/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/babel-jest/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/babel-loader": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", + "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", + "dev": true, + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "devOptional": true, + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/babel-plugin-module-resolver": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-module-resolver/-/babel-plugin-module-resolver-4.1.0.tgz", + "integrity": "sha512-MlX10UDheRr3lb3P0WcaIdtCSRlxdQsB1sBqL7W0raF070bGl1HQQq5K3T2vf2XAYie+ww+5AKC/WrkjRO2knA==", + "optional": true, + "peer": true, + "dependencies": { + "find-babel-config": "^1.2.0", + "glob": "^7.1.6", + "pkg-up": "^3.1.0", + "reselect": "^4.0.0", + "resolve": "^1.13.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", + "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", + "devOptional": true, + "dependencies": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.1", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", + "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.1", + "core-js-compat": "^3.21.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", + "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", + "devOptional": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-react-native-web": { + "version": "0.17.7", + "resolved": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.17.7.tgz", + "integrity": "sha512-UBLfIsfU3vi//Ab4i0WSWAfm1whLTK9uJoH0RPZ6a67eS/h9JGYjKy7+1RpHxSBviHi9NIMiYfWseTLjyIsE1g==", + "optional": true, + "peer": true + }, + "node_modules/babel-plugin-syntax-trailing-function-commas": { + "version": "7.0.0-beta.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz", + "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==", + "optional": true, + "peer": true + }, + "node_modules/babel-plugin-transform-react-remove-prop-types": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", + "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==", + "dev": true + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-expo": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-9.1.0.tgz", + "integrity": "sha512-dFcgT7AY5n15bLnfOM6R25f8Lh7YSALj4zeGze6aspYHfVrREYcovVG0eMGpY9V24fnwByNRv85lElc1jAj1Mw==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/plugin-proposal-decorators": "^7.12.9", + "@babel/plugin-transform-react-jsx": "^7.12.17", + "@babel/preset-env": "^7.12.9", + "babel-plugin-module-resolver": "^4.1.0", + "babel-plugin-react-native-web": "~0.17.1", + "metro-react-native-babel-preset": "~0.67.0" + } + }, + "node_modules/babel-preset-fbjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz", + "integrity": "sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/plugin-syntax-class-properties": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-block-scoped-functions": "^7.0.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.0.0", + "@babel/plugin-transform-flow-strip-types": "^7.0.0", + "@babel/plugin-transform-for-of": "^7.0.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-member-expression-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-object-super": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-property-literals": "^7.0.0", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-template-literals": "^7.0.0", + "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^27.5.1", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-react-app": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz", + "integrity": "sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.16.0", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-decorators": "^7.16.4", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-transform-flow-strip-types": "^7.16.0", + "@babel/plugin-transform-react-display-name": "^7.16.0", + "@babel/plugin-transform-runtime": "^7.16.4", + "@babel/preset-env": "^7.16.4", + "@babel/preset-react": "^7.16.0", + "@babel/preset-typescript": "^7.16.0", + "@babel/runtime": "^7.16.3", + "babel-plugin-macros": "^3.1.0", + "babel-plugin-transform-react-remove-prop-types": "^0.4.24" + } + }, + "node_modules/bail": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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==", + "devOptional": true + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "optional": true, + "peer": true, + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base-64": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/base-64/-/base-64-0.1.0.tgz", + "integrity": "sha1-eAqZyE59YAJgNhURxId2E78k9rs=" + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "optional": true, + "peer": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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" + } + ], + "optional": true + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "node_modules/better-opn": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", + "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==", + "optional": true, + "peer": true, + "dependencies": { + "open": "^8.0.4" + }, + "engines": { + "node": ">=12.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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "optional": true, + "peer": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/blueimp-md5": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz", + "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==", + "optional": true, + "peer": true + }, + "node_modules/bn.js": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.1.tgz", + "integrity": "sha512-IUTD/REb78Z2eodka1QZyyEk66pciRcP6Sroka0aI3tG/iwIdYLrBD62RsubR7vqdt3WyX8p4jxeatzmRSphtA==" + }, + "node_modules/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.9.7", + "raw-body": "2.4.3", + "type-is": "~1.6.18" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/bonjour-service": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.12.tgz", + "integrity": "sha512-pMmguXYCu63Ug37DluMKEHdxc+aaIf/ay4YbF8Gxtba+9d3u+rmEWy61VK3Z3hp8Rskok3BunHYnG0dUHAsblw==", + "dev": true, + "dependencies": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.4" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "node_modules/boxen": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "dev": true, + "dependencies": { + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/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/boxen/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/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/boxen/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/boxen/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/boxen/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/boxen/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/boxen/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/boxen/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/boxen/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/boxen/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/bplist-creator": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.1.0.tgz", + "integrity": "sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==", + "optional": true, + "peer": true, + "dependencies": { + "stream-buffers": "2.2.x" + } + }, + "node_modules/bplist-parser": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.1.tgz", + "integrity": "sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==", + "optional": true, + "peer": true, + "dependencies": { + "big-integer": "1.6.x" + }, + "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==", + "devOptional": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "node_modules/browserlist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserlist/-/browserlist-1.0.1.tgz", + "integrity": "sha512-nYq9jiWv+qXcgrJxQzivfEc7Wo2GvAKkeRViE5L3cUJpq4SZO6NZR710I/8T+OjE5BPECbzpm8rpUkwslE3nTg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1" + }, + "bin": { + "browserlist": "cli.js" + } + }, + "node_modules/browserslist": { + "version": "4.20.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", + "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", + "devOptional": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001332", + "electron-to-chromium": "^1.4.118", + "escalade": "^3.1.1", + "node-releases": "^2.0.3", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "devOptional": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "optional": true, + "peer": true, + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "optional": true, + "peer": true, + "dependencies": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "node_modules/buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "optional": true, + "peer": true + }, + "node_modules/buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "optional": true, + "peer": true + }, + "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==", + "devOptional": true + }, + "node_modules/bufferstreams": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bufferstreams/-/bufferstreams-3.0.0.tgz", + "integrity": "sha512-Qg0ggJUWJq90vtg4lDsGN9CDWvzBMQxhiEkSOD/sJfYt6BLect3eV1/S6K7SCSKJ34n60rf6U5eUPmQENVE4UA==", + "dev": true, + "dependencies": { + "readable-stream": "^3.4.0" + }, + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", + "optional": true, + "peer": true + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "devOptional": true, + "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-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "optional": true, + "peer": true, + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "devOptional": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "optional": true, + "peer": true, + "dependencies": { + "callsites": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/caller-callsite/node_modules/callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "optional": true, + "peer": true, + "dependencies": { + "caller-callsite": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "devOptional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001340", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001340.tgz", + "integrity": "sha512-jUNz+a9blQTQVu4uFcn17uAD8IDizPzQkIKh3LCJfg9BkyIqExYYdyc/ZSlWUSKb8iYiXxKsxbv4zYSvkqjrxw==", + "devOptional": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/capital-case": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", + "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } + }, + "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==", + "devOptional": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/change-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", + "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", + "dev": true, + "dependencies": { + "camel-case": "^4.1.2", + "capital-case": "^1.0.4", + "constant-case": "^3.0.4", + "dot-case": "^3.0.4", + "header-case": "^2.0.4", + "no-case": "^3.0.4", + "param-case": "^3.0.4", + "pascal-case": "^3.1.2", + "path-case": "^3.0.4", + "sentence-case": "^3.0.4", + "snake-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/charcodes": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/charcodes/-/charcodes-0.2.0.tgz", + "integrity": "sha512-Y4kiDb+AM4Ecy58YkuZrrSRJBDQdQ2L+NyS1vHHFtNtUjgutcZfx3yp1dAONI/oPaPmyGfCLx5CxL+zauIMyKQ==", + "devOptional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=", + "devOptional": true, + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "devOptional": 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/ci-info": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", + "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "devOptional": true + }, + "node_modules/cjs-module-lexer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "dev": true + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "optional": true, + "peer": true, + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "optional": true, + "peer": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "optional": true, + "peer": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, + "peer": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "optional": true, + "peer": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, + "peer": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "optional": true, + "peer": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clean-css": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.2.4.tgz", + "integrity": "sha512-nKseG8wCzEuji/4yrgM/5cthL9oTDc5UOQyFMvW/Q53oP6gLH690o1NbuTh6Y18nujr7BxlsFuS7gXLnLzKJGg==", + "dev": true, + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clean-css/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/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "devOptional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-color": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.2.tgz", + "integrity": "sha512-g4JYjrTW9MGtCziFNjkqp3IMpGhnJyeB0lOtRPjQkYhXzKYr6tYnXKyEVnMzITxhpbahsEW9KsxOYIDKwcsIBw==", + "dev": true, + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.59", + "es6-iterator": "^2.0.3", + "memoizee": "^0.4.15", + "timers-ext": "^0.1.7" + }, + "engines": { + "node": ">=0.10" + } + }, + "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==", + "devOptional": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + }, + "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/clipboardy": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz", + "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", + "dev": true, + "dependencies": { + "arch": "^2.1.1", + "execa": "^1.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/clipboardy/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": { + "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": ">=4.8" + } + }, + "node_modules/clipboardy/node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.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": ">=6" + } + }, + "node_modules/clipboardy/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clipboardy/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clipboardy/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": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/clipboardy/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/clipboardy/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/clipboardy/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clipboardy/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clipboardy/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/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/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/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "devOptional": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-deep/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "devOptional": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clone-regexp": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-2.2.0.tgz", + "integrity": "sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q==", + "dev": true, + "dependencies": { + "is-regexp": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "optional": true, + "peer": true, + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "devOptional": 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": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "devOptional": true + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/colord": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz", + "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==", + "dev": true + }, + "node_modules/colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "dev": true + }, + "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==", + "devOptional": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", + "optional": true, + "peer": true + }, + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "devOptional": true + }, + "node_modules/compare-versions": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", + "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", + "optional": true + }, + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "optional": true, + "peer": true + }, + "node_modules/component-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-type/-/component-type-1.2.1.tgz", + "integrity": "sha1-ikeQFwAjjk/DIml3EjAibyS0Fak=", + "optional": true, + "peer": true + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "devOptional": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz", + "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==", + "devOptional": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.14", + "debug": "2.6.9", + "on-headers": "~1.0.1", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "devOptional": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "devOptional": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "devOptional": 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/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "optional": true, + "peer": true, + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "optional": true, + "peer": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "optional": true, + "peer": true + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "node_modules/constant-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", + "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case": "^2.0.2" + } + }, + "node_modules/content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "devOptional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "devOptional": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/copy-webpack-plugin": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", + "dev": true, + "dependencies": { + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.1", + "globby": "^13.1.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/copy-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/copy-webpack-plugin/node_modules/globby": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz", + "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==", + "dev": true, + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/copy-webpack-plugin/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/copy-webpack-plugin/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/copy-webpack-plugin/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/core-js-compat": { + "version": "3.22.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.5.tgz", + "integrity": "sha512-rEF75n3QtInrYICvJjrAgV03HwKiYvtKHdPtaba1KucG+cNZ4NJnH9isqt979e67KZlhpbCOTwnsvnIr+CVeOg==", + "devOptional": true, + "dependencies": { + "browserslist": "^4.20.3", + "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "devOptional": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/core-js-pure": { + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.21.1.tgz", + "integrity": "sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ==", + "dev": true, + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "devOptional": true + }, + "node_modules/cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/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": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "optional": true, + "peer": true, + "dependencies": { + "node-fetch": "2.6.7" + } + }, + "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/crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=", + "devOptional": true, + "engines": { + "node": "*" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/css": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", + "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.4", + "source-map": "^0.6.1", + "source-map-resolve": "^0.6.0" + } + }, + "node_modules/css-declaration-sorter": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.2.2.tgz", + "integrity": "sha512-Ufadglr88ZLsrvS11gjeu/40Lw74D9Am/Jpr3LlYm5Q4ZP5KdlUhG+6u2EjyXeZcxmZ2h1ebCKngDjolpeLHpg==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-functions-list": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.1.0.tgz", + "integrity": "sha512-/9lCvYZaUbBGvYUgYGFJ4dcYiyqdhSjG7IPVluoV8A1ILjkF7ilmhp1OGUz8n+nmBcu0RNrQAzgD8B6FJbrt2w==", + "dev": true, + "engines": { + "node": ">=12.22" + } + }, + "node_modules/css-loader": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz", + "integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.7", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/css-loader/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/css-minimizer-webpack-plugin": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz", + "integrity": "sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==", + "dev": true, + "dependencies": { + "cssnano": "^5.0.6", + "jest-worker": "^27.0.2", + "postcss": "^8.3.5", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@parcel/css": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/css-minimizer-webpack-plugin/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/css-minimizer-webpack-plugin/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/css-minimizer-webpack-plugin/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/css-select": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", + "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^5.1.0", + "domhandler": "^4.3.0", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-tree/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/css-what": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=", + "dev": true + }, + "node_modules/css/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/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.5.tgz", + "integrity": "sha512-VZO1e+bRRVixMeia1zKagrv0lLN1B/r/u12STGNNUFxnp97LIFgZHQa0JxqlwEkvzUyA9Oz/WnCTAFkdEbONmg==", + "dev": true, + "dependencies": { + "cssnano-preset-default": "^5.2.5", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-preset-default": { + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.5.tgz", + "integrity": "sha512-WopL7PzN7sos3X8B54/QGl+CZUh1f0qN4ds+y2d5EPwRSSc3jsitVw81O+Uyop0pXyOfPfZxnc+LmA8w/Ki/WQ==", + "dev": true, + "dependencies": { + "css-declaration-sorter": "^6.0.3", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.0", + "postcss-convert-values": "^5.1.0", + "postcss-discard-comments": "^5.1.1", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.3", + "postcss-merge-rules": "^5.1.1", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.2", + "postcss-minify-selectors": "^5.2.0", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.0", + "postcss-normalize-repeat-style": "^5.1.0", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.0", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.1", + "postcss-reduce-initial": "^5.1.0", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "node_modules/csstype": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.11.tgz", + "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==", + "devOptional": true + }, + "node_modules/cubic2quad": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/cubic2quad/-/cubic2quad-1.2.1.tgz", + "integrity": "sha512-wT5Y7mO8abrV16gnssKdmIhIbA9wSkeMzhh27jAguKrV82i24wER0vL5TGhUJ9dbJNDcigoRZ0IAHFEEEI4THQ==", + "dev": true + }, + "node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "node_modules/dag-map": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/dag-map/-/dag-map-1.0.2.tgz", + "integrity": "sha1-6DefBBAA7VYfxRVHXB7SyF7s6Nc=", + "optional": true, + "peer": true + }, + "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/data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/dayjs": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.2.tgz", + "integrity": "sha512-F4LXf1OeU9hrSYRPTTj/6FbO4HTjPKXvEIC1P2kcnFurViINCVk3ZV0xAS3XVx9MkMsXbbqlK6hjseaYbgKEHw==", + "optional": true, + "peer": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "devOptional": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/debug/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==", + "devOptional": true + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "dev": true, + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decimal.js": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", + "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", + "dev": true + }, + "node_modules/decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "devOptional": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "devOptional": true, + "engines": { + "node": ">=4.0.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/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "optional": true, + "peer": true, + "dependencies": { + "clone": "^1.0.2" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "devOptional": true, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "optional": true, + "peer": true, + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", + "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", + "optional": true, + "peer": true, + "dependencies": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "devOptional": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "node_modules/denodeify": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz", + "integrity": "sha1-OjYof1A05pnnV3kBBSwubJQlFjE=", + "optional": true, + "peer": true + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "devOptional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/deprecated-react-native-prop-types": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-2.3.0.tgz", + "integrity": "sha512-pWD0voFtNYxrVqvBMYf5gq3NA2GCpfodS1yNynTPc93AYA/KEMGeWDqqeUB6R2Z9ZofVhks2aeJXiuQqKNpesA==", + "optional": true, + "peer": true, + "dependencies": { + "@react-native/normalize-color": "*", + "invariant": "*", + "prop-types": "*" + } + }, + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "devOptional": true + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.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==", + "devOptional": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dnd-core": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/dnd-core/-/dnd-core-14.0.1.tgz", + "integrity": "sha512-+PVS2VPTgKFPYWo3vAFEA8WPbTf7/xo43TifH9G8S1KqnrQu0o77A3unrF5yOugy4mIz7K5wAVFHUcha7wsz6A==", + "dependencies": { + "@react-dnd/asap": "^4.0.0", + "@react-dnd/invariant": "^2.0.0", + "redux": "^4.1.1" + } + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "node_modules/dns-packet": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.3.1.tgz", + "integrity": "sha512-spBwIj0TK0Ey3666GwIdWVfUpLyubpU53BTCu8iPn4r4oXd9O14Hjg3EHw3ts2oed77/SeckunUYCyRlSngqHw==", + "dev": true, + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-accessibility-api": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.13.tgz", + "integrity": "sha512-R305kwb5CcMDIpSHUnLyIAp7SrSPBx6F0VfQFB3M75xVMHhXJJIdePYgbPPh1o57vCHNu5QztokWUPsLjWzFqw==", + "dev": true + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, + "dependencies": { + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dotenv": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.1.tgz", + "integrity": "sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "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/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "devOptional": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.137", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.137.tgz", + "integrity": "sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA==", + "devOptional": true + }, + "node_modules/emittery": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "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/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "devOptional": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "optional": 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==", + "devOptional": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz", + "integrity": "sha1-TW5omzcl+GCQknzMhs2fFjW4ni4=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.2.0", + "tapable": "^0.1.8" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-editor": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/env-editor/-/env-editor-0.4.2.tgz", + "integrity": "sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "devOptional": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eol": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/eol/-/eol-0.9.1.tgz", + "integrity": "sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==", + "optional": true, + "peer": true + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "node_modules/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==", + "devOptional": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-stack-parser": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.7.tgz", + "integrity": "sha512-chLOW0ZGRf4s8raLrDxa5sdkvPec5YdvwbFnqJme4rk0rFajP8mPtrDL1+I+CwrQDCjswDA5sREX7jYQDQs9vA==", + "optional": true, + "peer": true, + "dependencies": { + "stackframe": "^1.1.1" + } + }, + "node_modules/errorhandler": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz", + "integrity": "sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==", + "optional": true, + "peer": true, + "dependencies": { + "accepts": "~1.3.7", + "escape-html": "~1.0.3" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/es-abstract": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true + }, + "node_modules/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/es5-ext": { + "version": "0.10.61", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.61.tgz", + "integrity": "sha512-yFhIqQAzu2Ca2I4SE2Au3rxVfmohU9Y7wqGR+s7+H7krk26NXhIRAZDgqd6xqjCEFUomDEA3/Bo/7fKmIkW1kA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "dependencies": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "node_modules/es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "devOptional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "devOptional": true + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "devOptional": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/escodegen/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.15.0.tgz", + "integrity": "sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA==", + "dev": true, + "dependencies": { + "@eslint/eslintrc": "^1.2.3", + "@humanwhocodes/config-array": "^0.9.2", + "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.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.2", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.6.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "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", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "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": { + "version": "19.0.4", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz", + "integrity": "sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==", + "dev": true, + "dependencies": { + "eslint-config-airbnb-base": "^15.0.0", + "object.assign": "^4.1.2", + "object.entries": "^1.1.5" + }, + "engines": { + "node": "^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.3", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-react": "^7.28.0", + "eslint-plugin-react-hooks": "^4.3.0" + } + }, + "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-typescript": { + "version": "16.1.4", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-16.1.4.tgz", + "integrity": "sha512-dfm2cEaYXh4mCYd+RyJO8+PQfd5/zp8WwrCeRznly5qD9W5tal3KTjgdInYWuEAdwWnNJxWcmQ/HFiA4bfkM1g==", + "dev": true, + "dependencies": { + "eslint-config-airbnb-base": "^15.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^5.0.0", + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.3" + } + }, + "node_modules/eslint-config-react-app": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz", + "integrity": "sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.16.0", + "@babel/eslint-parser": "^7.16.3", + "@rushstack/eslint-patch": "^1.1.0", + "@typescript-eslint/eslint-plugin": "^5.5.0", + "@typescript-eslint/parser": "^5.5.0", + "babel-preset-react-app": "^10.0.1", + "confusing-browser-globals": "^1.0.11", + "eslint-plugin-flowtype": "^8.0.3", + "eslint-plugin-import": "^2.25.3", + "eslint-plugin-jest": "^25.3.0", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-react": "^7.27.1", + "eslint-plugin-react-hooks": "^4.3.0", + "eslint-plugin-testing-library": "^5.0.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "eslint": "^8.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "resolve": "^1.20.0" + } + }, + "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-import-resolver-webpack": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.13.2.tgz", + "integrity": "sha512-XodIPyg1OgE2h5BDErz3WJoK7lawxKTJNhgPNafRST6csC/MZC+L5P6kKqsZGRInpbgc02s/WZMrb4uGJzcuRg==", + "dev": true, + "dependencies": { + "array-find": "^1.0.0", + "debug": "^3.2.7", + "enhanced-resolve": "^0.9.1", + "find-root": "^1.1.0", + "has": "^1.0.3", + "interpret": "^1.4.0", + "is-core-module": "^2.7.0", + "is-regex": "^1.1.4", + "lodash": "^4.17.21", + "resolve": "^1.20.0", + "semver": "^5.7.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "eslint-plugin-import": ">=1.4.0", + "webpack": ">=1.11.0" + } + }, + "node_modules/eslint-import-resolver-webpack/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-import-resolver-webpack/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", + "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "find-up": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "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-flowtype": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz", + "integrity": "sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==", + "dev": true, + "dependencies": { + "lodash": "^4.17.21", + "string-natural-compare": "^3.0.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@babel/plugin-syntax-flow": "^7.14.5", + "@babel/plugin-transform-react-jsx": "^7.14.9", + "eslint": "^8.1.0" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.3", + "has": "^1.0.3", + "is-core-module": "^2.8.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.5", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/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/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint-plugin-import/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/eslint-plugin-jest": { + "version": "25.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz", + "integrity": "sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/experimental-utils": "^5.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^4.0.0 || ^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz", + "integrity": "sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.16.3", + "aria-query": "^4.2.2", + "array-includes": "^3.1.4", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.3.5", + "axobject-query": "^2.2.0", + "damerau-levenshtein": "^1.0.7", + "emoji-regex": "^9.2.2", + "has": "^1.0.3", + "jsx-ast-utils": "^3.2.1", + "language-tags": "^1.0.5", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/eslint-plugin-no-async-without-await": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-async-without-await/-/eslint-plugin-no-async-without-await-1.2.0.tgz", + "integrity": "sha1-wuZNrqB8sjNV/GGKFviRo7dO2lA=", + "dev": true + }, + "node_modules/eslint-plugin-no-null": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-null/-/eslint-plugin-no-null-1.0.2.tgz", + "integrity": "sha1-EjaoEjkTkKGHetQAfCbnRTQclR8=", + "dev": true, + "engines": { + "node": ">=5.0.0" + }, + "peerDependencies": { + "eslint": ">=3.0.0" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.29.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz", + "integrity": "sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.4", + "array.prototype.flatmap": "^1.2.5", + "doctrine": "^2.1.0", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.5", + "object.fromentries": "^2.0.5", + "object.hasown": "^1.1.0", + "object.values": "^1.1.5", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.3", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.6" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.5.0.tgz", + "integrity": "sha512-8k1gRt7D7h03kd+SAAlzXkQwWK22BnK6GKZG+FJA6BAGy22CFvl8kCIXKpVux0cCxMWDQUPqSok0LKaZ0aOcCw==", + "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/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", + "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", + "dev": true, + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-teactn": { + "version": "0.1.0-development", + "resolved": "git+ssh://git@github.com/korenskoy/eslint-plugin-teactn.git#c2c39dd005d58c07c24c4361de804dce1c6261b5", + "integrity": "sha512-8Xedzwbkp50WfJUMhstW5ZOc7KKmWbzEyZMPIqTlF2kHnMrMuic6yZ9Q06hM2/AVtGIw48XK2NOXZIM7qMXHIA==", + "dev": true, + "license": "ISC", + "dependencies": { + "eslint-plugin-react": "^7.16.0", + "eslint-rule-composer": "^0.3.0" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "eslint-plugin-react": "^7.16.0" + } + }, + "node_modules/eslint-plugin-testing-library": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.1.0.tgz", + "integrity": "sha512-YSNzasJUbyhOTe14ZPygeOBvcPvcaNkwHwrj4vdf+uirr2D32JTDaKi6CP5Os2aWtOcvt4uBSPXp9h5xGoqvWQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "^5.13.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0", + "npm": ">=6" + }, + "peerDependencies": { + "eslint": "^7.5.0 || ^8.0.0" + } + }, + "node_modules/eslint-rule-composer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz", + "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/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, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "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.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.13.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", + "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", + "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/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/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/eslint/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/espree": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", + "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", + "dev": true, + "dependencies": { + "acorn": "^8.7.1", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "devOptional": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "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/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "devOptional": 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": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "devOptional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ethjs-unit": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", + "integrity": "sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk=", + "dependencies": { + "bn.js": "4.11.6", + "number-to-bn": "1.7.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/ethjs-unit/node_modules/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" + }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/exec-async": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/exec-async/-/exec-async-2.2.0.tgz", + "integrity": "sha1-x8WtLu80eNODkMbdOs/orw78gwE=", + "optional": true, + "peer": true + }, + "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/execall": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/execall/-/execall-2.0.0.tgz", + "integrity": "sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow==", + "dev": true, + "dependencies": { + "clone-regexp": "^2.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "optional": true, + "peer": true, + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "optional": true, + "peer": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "optional": true, + "peer": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "optional": true, + "peer": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "optional": true, + "peer": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, + "peer": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "optional": true, + "peer": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, + "peer": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "optional": true, + "peer": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "optional": true, + "peer": true + }, + "node_modules/expo": { + "version": "45.0.4", + "resolved": "https://registry.npmjs.org/expo/-/expo-45.0.4.tgz", + "integrity": "sha512-S/6rwmgG+1cyHP1hCmylk9FLnavUWd/haWgVc8sUNiavaMBu/vCjeLUESFVJdYRKKN9i+avSzHdAVdKytNYo6A==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.14.0", + "@expo/cli": "0.1.4", + "@expo/vector-icons": "^13.0.0", + "babel-preset-expo": "~9.1.0", + "cross-spawn": "^6.0.5", + "expo-application": "~4.1.0", + "expo-asset": "~8.5.0", + "expo-constants": "~13.1.1", + "expo-file-system": "~14.0.0", + "expo-font": "~10.1.0", + "expo-keep-awake": "~10.1.1", + "expo-modules-autolinking": "0.8.1", + "expo-modules-core": "0.9.2", + "fbemitter": "^3.0.0", + "getenv": "^1.0.0", + "invariant": "^2.2.4", + "md5-file": "^3.2.3", + "node-fetch": "^2.6.7", + "pretty-format": "^26.5.2", + "uuid": "^3.4.0" + }, + "bin": { + "expo": "bin/cli.js" + }, + "optionalDependencies": { + "expo-error-recovery": "~3.1.0" + } + }, + "node_modules/expo-application": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-4.1.0.tgz", + "integrity": "sha512-Z2kctgVMpYZB1Iwaxd+XcMBq7h8EEY50GGrwxXsb1OHHQKN+WEVGBWxjvtPkAroqCdujLaB5HBay46gvUHRDQg==", + "optional": true, + "peer": true, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-asset": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-8.5.0.tgz", + "integrity": "sha512-k3QErZYxb6e6rPkJ1sG5yIJ7bhd4RFvnFStz0ZCO6SfktGygBAjTz5aTOLaaomiCIObRiBQ4byky/RLdli/NLw==", + "optional": true, + "peer": true, + "dependencies": { + "blueimp-md5": "^2.10.0", + "invariant": "^2.2.4", + "md5-file": "^3.2.3", + "path-browserify": "^1.0.0", + "url-parse": "^1.5.9" + } + }, + "node_modules/expo-constants": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-13.1.1.tgz", + "integrity": "sha512-QRVHrrMCLenBzWZ8M+EvCXM+jjdQzFMW27YQHRac3SGGoND1hWr81scOmGwlFo2wLZrYXm8HcYt1E6ry3IIwrA==", + "optional": true, + "peer": true, + "dependencies": { + "@expo/config": "^6.0.14", + "uuid": "^3.3.2" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-constants/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "optional": true, + "peer": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/expo-error-recovery": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/expo-error-recovery/-/expo-error-recovery-3.1.0.tgz", + "integrity": "sha512-qUxCW7kPB6AVX5h3ZPVnxw4LLZWsRwAPBtRDlh1UDN7GWZ+CQN1SNk0w0BPotjNtSlXEZSFDqKqtoDDAUYjNmg==", + "optional": true, + "peer": true, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-file-system": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-14.0.0.tgz", + "integrity": "sha512-Asva7ehLUq/PIem6Y+/OQvoIqhFqYDd7l4l49yDRDgLSbK2I7Fr8qGhDeDpnUXrMVamg2uwt9zRGhyrjFNRhVw==", + "optional": true, + "peer": true, + "dependencies": { + "@expo/config-plugins": "^4.0.14", + "uuid": "^3.4.0" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-file-system/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "optional": true, + "peer": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/expo-font": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-10.1.0.tgz", + "integrity": "sha512-vmhzpE95Ym4iOj8IELof+C/3Weert2B3LyxV5rBjGosjzBdov+o+S6b5mN7Yc9kyEGykwB6k7npL45X3hFYDQA==", + "optional": true, + "peer": true, + "dependencies": { + "fontfaceobserver": "^2.1.0" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-keep-awake": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-10.1.1.tgz", + "integrity": "sha512-9zC0sdhQljUeMr2yQ7o4kzEZXVAy82fFOAZE1+TwPL7qR0b0sphe7OJ5T1GX1qLcwuVaJ8YewaPoLSHRk79+Rg==", + "optional": true, + "peer": true, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-modules-autolinking": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-0.0.3.tgz", + "integrity": "sha512-azkCRYj/DxbK4udDuDxA9beYzQTwpJ5a9QA0bBgha2jHtWdFGF4ZZWSY+zNA5mtU3KqzYt8jWHfoqgSvKyu1Aw==", + "optional": true, + "dependencies": { + "chalk": "^4.1.0", + "commander": "^7.2.0", + "fast-glob": "^3.2.5", + "find-up": "~5.0.0", + "fs-extra": "^9.1.0" + }, + "bin": { + "expo-modules-autolinking": "bin/expo-modules-autolinking.js" + } + }, + "node_modules/expo-modules-autolinking/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==", + "optional": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/expo-modules-autolinking/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": 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/expo-modules-autolinking/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==", + "optional": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/expo-modules-autolinking/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==", + "optional": true + }, + "node_modules/expo-modules-autolinking/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==", + "optional": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/expo-modules-autolinking/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==", + "optional": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/expo-modules-autolinking/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "optional": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/expo-modules-autolinking/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==", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/expo-modules-autolinking/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==", + "optional": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/expo-modules-autolinking/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==", + "optional": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/expo-modules-autolinking/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==", + "optional": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/expo-modules-autolinking/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==", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/expo-modules-autolinking/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==", + "optional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/expo-modules-autolinking/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "optional": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/expo-modules-core": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-0.9.2.tgz", + "integrity": "sha512-p/C0GJxFIIDGwmrWi70Q0ggfsgeUFS25ZkkBgoaHT7MVgiMjlKA/DCC3D6ZUkHl/JlzUm0aTftIGS8LWXsnZBw==", + "optional": true, + "peer": true, + "dependencies": { + "compare-versions": "^3.4.0", + "invariant": "^2.2.4" + } + }, + "node_modules/expo-random": { + "version": "12.1.2", + "resolved": "https://registry.npmjs.org/expo-random/-/expo-random-12.1.2.tgz", + "integrity": "sha512-ajB+Mwff9PdglsyLliaU4K9BtVwKvAVVI2hQhnvlS3QgsAhHf+jQVUfAysQJHuioF6ADMEsab/kRUy4Dy03aoQ==", + "optional": true, + "dependencies": { + "base64-js": "^1.3.0" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "optional": true, + "peer": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/expo/node_modules/@types/yargs": { + "version": "15.0.14", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", + "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", + "optional": true, + "peer": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/expo/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/expo/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": 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/expo/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/expo/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==", + "optional": true, + "peer": true + }, + "node_modules/expo/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/expo/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==", + "optional": true, + "peer": true, + "dependencies": { + "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": ">=4.8" + } + }, + "node_modules/expo/node_modules/expo-modules-autolinking": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-0.8.1.tgz", + "integrity": "sha512-S8qfaXCv//7tQWV9M+JKx3CF7ypYhDdSUbkUQdaVO/r8D76/aRTArY/aRw1yEfaAOzyK8C8diDToV1itl51DfQ==", + "optional": true, + "peer": true, + "dependencies": { + "chalk": "^4.1.0", + "commander": "^7.2.0", + "fast-glob": "^3.2.5", + "find-up": "^5.0.0", + "fs-extra": "^9.1.0" + }, + "bin": { + "expo-modules-autolinking": "bin/expo-modules-autolinking.js" + } + }, + "node_modules/expo/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==", + "optional": true, + "peer": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/expo/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "optional": true, + "peer": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/expo/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/expo/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==", + "optional": true, + "peer": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/expo/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==", + "optional": true, + "peer": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/expo/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==", + "optional": true, + "peer": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/expo/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/expo/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/expo/node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/expo/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "optional": true, + "peer": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/expo/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "optional": true, + "peer": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expo/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expo/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==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/expo/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/expo/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "optional": true, + "peer": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/expo/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "optional": true, + "peer": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/express": { + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", + "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.19.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.4.2", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.9.7", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.17.2", + "serve-static": "1.14.2", + "setprototypeof": "1.2.0", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "node_modules/express/node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "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": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "node_modules/express/node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ext": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", + "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", + "dev": true, + "dependencies": { + "type": "^2.5.0" + } + }, + "node_modules/ext/node_modules/type": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.6.0.tgz", + "integrity": "sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==", + "dev": true + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "optional": true, + "peer": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "optional": true, + "peer": true, + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "optional": true, + "peer": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "optional": true, + "peer": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fantasticon": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/fantasticon/-/fantasticon-1.2.3.tgz", + "integrity": "sha512-VoPXI8+wbLq4qooK2LAFRcqKtOCR20+InF/Io/9I1kLp3IT+LwqJgeFijFvp9a3HRZptfCAxNvazoVHn4kihzQ==", + "dev": true, + "dependencies": { + "change-case": "^4.1.2", + "cli-color": "^2.0.0", + "commander": "^7.2.0", + "glob": "^7.2.0", + "handlebars": "^4.7.7", + "slugify": "^1.6.0", + "svg2ttf": "^6.0.3", + "svgicons2svgfont": "^10.0.3", + "ttf2eot": "^2.0.0", + "ttf2woff": "^3.0.0", + "ttf2woff2": "^4.0.4" + }, + "bin": { + "fantasticon": "bin/fantasticon" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/fantasticon/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/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==" + }, + "node_modules/fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "devOptional": 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-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==", + "devOptional": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "node_modules/fast-url-parser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", + "integrity": "sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0=", + "dev": true, + "dependencies": { + "punycode": "^1.3.2" + } + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "devOptional": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "devOptional": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fbemitter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz", + "integrity": "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==", + "optional": true, + "peer": true, + "dependencies": { + "fbjs": "^3.0.0" + } + }, + "node_modules/fbjs": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.4.tgz", + "integrity": "sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ==", + "optional": true, + "peer": true, + "dependencies": { + "cross-fetch": "^3.1.5", + "fbjs-css-vars": "^1.0.0", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.30" + } + }, + "node_modules/fbjs-css-vars": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==", + "optional": true, + "peer": true + }, + "node_modules/fetch-retry": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/fetch-retry/-/fetch-retry-4.1.1.tgz", + "integrity": "sha512-e6eB7zN6UBSwGVwrbWVH+gdLnkW9WwHhmq2YDK1Sh30pzx1onRVGBvogTlUeWxwTa+L86NYdo4hFkh7O8ZjSnA==", + "optional": true, + "peer": true + }, + "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-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "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==", + "devOptional": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "devOptional": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "devOptional": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "devOptional": true + }, + "node_modules/find-babel-config": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/find-babel-config/-/find-babel-config-1.2.0.tgz", + "integrity": "sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA==", + "optional": true, + "peer": true, + "dependencies": { + "json5": "^0.5.1", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/find-babel-config/node_modules/json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "optional": true, + "peer": true, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "dev": true + }, + "node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/find-yarn-workspace-root": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", + "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", + "optional": true, + "peer": true, + "dependencies": { + "micromatch": "^4.0.2" + } + }, + "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.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "dev": true + }, + "node_modules/flow-parser": { + "version": "0.121.0", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.121.0.tgz", + "integrity": "sha512-1gIBiWJNR0tKUNv8gZuk7l9rVX06OuLzY9AoGio7y/JT4V1IZErEMEq2TJS+PFcw/y0RshZ1J/27VfK1UQzYVg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/follow-redirects": { + "version": "1.14.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", + "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/fontfaceobserver": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.1.0.tgz", + "integrity": "sha512-ReOsO2F66jUa0jmv2nlM/s1MiutJx/srhAe2+TE8dJCMi02ZZOcCTxTCQFr3Yet+uODUtnr4Mewg+tNQ+4V1Ng==", + "optional": true, + "peer": true + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "devOptional": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "optional": true, + "peer": true, + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/freeport-async": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/freeport-async/-/freeport-async-2.0.0.tgz", + "integrity": "sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "devOptional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "optional": true, + "peer": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs-extra/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "optional": true, + "peer": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "devOptional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "devOptional": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "devOptional": true + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "node_modules/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "dev": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/gauge/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/gauge/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/gauge/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/generic-names": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-4.0.0.tgz", + "integrity": "sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==", + "dev": true, + "dependencies": { + "loader-utils": "^3.2.0" + } + }, + "node_modules/generic-names/node_modules/loader-utils": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz", + "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==", + "dev": true, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/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==", + "devOptional": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/geometry-interfaces": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/geometry-interfaces/-/geometry-interfaces-1.1.4.tgz", + "integrity": "sha512-qD6OdkT6NcES9l4Xx3auTpwraQruU7dARbQPVO71MKvkGYw5/z/oIiGymuFXrRaEQa5Y67EIojUpaLeGEa5hGA==", + "dev": true + }, + "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==", + "devOptional": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "devOptional": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-stdin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", + "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/getenv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/getenv/-/getenv-1.0.0.tgz", + "integrity": "sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/git-revision-webpack-plugin": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/git-revision-webpack-plugin/-/git-revision-webpack-plugin-5.0.0.tgz", + "integrity": "sha512-RptQN/4UKcEPkCBmRy8kLPo5i8MnF8+XfAgFYN9gbwmKLTLx4YHsQw726H+C5+sIGDixDkmGL3IxPA2gKo+u4w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "devOptional": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/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/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/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dev": true, + "dependencies": { + "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dev": true, + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix/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/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "devOptional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "devOptional": 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/globjoin": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", + "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=", + "dev": true + }, + "node_modules/gonzales-pe": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz", + "integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "gonzales": "bin/gonzales.js" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", + "devOptional": true + }, + "node_modules/graphql": { + "version": "15.8.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz", + "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/graphql-tag": { + "version": "2.12.6", + "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", + "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", + "optional": true, + "peer": true, + "dependencies": { + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dev": true, + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "node_modules/handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/handlebars/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "devOptional": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "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": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "devOptional": true, + "engines": { + "node": ">=4" + } + }, + "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==", + "devOptional": 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/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "optional": true, + "peer": true, + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "optional": true, + "peer": true, + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "optional": true, + "peer": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, + "peer": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "optional": true, + "peer": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/header-case": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", + "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", + "dev": true, + "dependencies": { + "capital-case": "^1.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/hermes-engine": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/hermes-engine/-/hermes-engine-0.11.0.tgz", + "integrity": "sha512-7aMUlZja2IyLYAcZ69NBnwJAR5ZOYlSllj0oMpx08a8HzxHOys0eKCzfphrf6D0vX1JGO1QQvVsQKe6TkYherw==", + "optional": true, + "peer": true + }, + "node_modules/hermes-estree": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.5.0.tgz", + "integrity": "sha512-1h8rvG23HhIR5K6Kt0e5C7BC72J1Ath/8MmSta49vxXp/j6wl7IMHvIRFYBQr35tWnQY97dSGR2uoAJ5pHUQkg==", + "optional": true, + "peer": true + }, + "node_modules/hermes-parser": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.5.0.tgz", + "integrity": "sha512-ARnJBScKAkkq8j3BHrNGBUv/4cSpZNbKDsVizEtzmsFeqC67Dopa5s4XRe+e3wN52Dh5Mj2kDB5wJvhcxwDkPg==", + "optional": true, + "peer": true, + "dependencies": { + "hermes-estree": "0.5.0" + } + }, + "node_modules/hermes-profile-transformer": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz", + "integrity": "sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==", + "optional": true, + "peer": true, + "dependencies": { + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/hermes-profile-transformer/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 8" + } + }, + "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/hoist-non-react-statics/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/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/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "dependencies": { + "whatwg-encoding": "^1.0.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/html-entities": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", + "dev": true + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dev": true, + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-tags": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz", + "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", + "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", + "dev": true, + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "webpack": "^5.20.0" + } + }, + "node_modules/html-webpack-plugin/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/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "devOptional": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", + "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.4.tgz", + "integrity": "sha512-m/4FxX17SUvz4lJ5WPXOHDUuCwIqXLfLHs1s0uZ3oYjhoXlx9csYxaOa0ElDEJ+h8Q4iJ1s+lTMbiCa4EXIJqg==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/http-proxy-middleware/node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "dev": true, + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/husky": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/husky/-/husky-7.0.4.tgz", + "integrity": "sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==", + "dev": true, + "bin": { + "husky": "lib/bin.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, + "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==", + "devOptional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "dev": true + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/idb-keyval": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.1.0.tgz", + "integrity": "sha512-u/qHZ75rlD3gH+Zah8dAJVJcGW/RfCnfNrFkElC5RpRCnpsCXXhqjVk+6MoVKJ3WhmNbRYdI6IIVP88e+5sxGw==", + "dependencies": { + "safari-14-idb-fix": "^3.0.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" + } + ], + "optional": true, + "peer": true + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "devOptional": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.6.3.tgz", + "integrity": "sha512-47xSUiQioGaB96nqtp5/q55m0aBQSQdyIloMOc/x+QVTDZLNmXE892IIDrJ0hM1A5vcNUDD5tDffkSP5lCaIIA==", + "optional": true, + "peer": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/immutable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", + "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==", + "dev": true + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "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": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "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==", + "devOptional": 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==", + "devOptional": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "devOptional": 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==", + "devOptional": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "devOptional": true + }, + "node_modules/internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "optional": true, + "peer": true, + "dependencies": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/internal-ip/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==", + "optional": true, + "peer": true, + "dependencies": { + "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": ">=4.8" + } + }, + "node_modules/internal-ip/node_modules/default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "optional": true, + "peer": true, + "dependencies": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/internal-ip/node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "optional": true, + "peer": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.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": ">=6" + } + }, + "node_modules/internal-ip/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "optional": true, + "peer": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/internal-ip/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/internal-ip/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/internal-ip/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": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "optional": true, + "peer": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/internal-ip/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/internal-ip/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "optional": true, + "peer": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/internal-ip/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "optional": true, + "peer": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/internal-ip/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/internal-ip/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "optional": true, + "peer": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "optional": true, + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "devOptional": true + }, + "node_modules/ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "optional": true, + "peer": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "dependencies": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "devOptional": true + }, + "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-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "devOptional": true + }, + "node_modules/is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "devOptional": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "optional": true, + "peer": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "optional": true, + "peer": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "devOptional": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "optional": true, + "peer": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extendable/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "optional": true, + "peer": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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==", + "devOptional": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hex-prefixed": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha1-fY035q135dEnFIkTxXPggtd39VQ=", + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-invalid-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-invalid-path/-/is-invalid-path-0.1.0.tgz", + "integrity": "sha1-MHqFWzzxqTi0TqcNLGEQYFNxTzQ=", + "optional": true, + "peer": true, + "dependencies": { + "is-glob": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-invalid-path/node_modules/is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-invalid-path/node_modules/is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "optional": true, + "peer": true, + "dependencies": { + "is-extglob": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", + "dev": true + }, + "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==", + "devOptional": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", + "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "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==", + "optional": true, + "peer": 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": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, + "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-regexp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-2.1.0.tgz", + "integrity": "sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-root": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", + "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "devOptional": true, + "engines": { + "node": ">=8" + }, + "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-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "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==", + "devOptional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-valid-path": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-valid-path/-/is-valid-path-0.1.1.tgz", + "integrity": "sha1-EQ+f90w39mPh7HkV60UfLbk6yd8=", + "optional": true, + "peer": true, + "dependencies": { + "is-invalid-path": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "devOptional": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "devOptional": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "devOptional": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isomorphic-webcrypto": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/isomorphic-webcrypto/-/isomorphic-webcrypto-2.3.8.tgz", + "integrity": "sha512-XddQSI0WYlSCjxtm1AI8kWQOulf7hAN3k3DclF1sxDJZqOe0pcsOt675zvWW91cZH9hYs3nlA3Ev8QK5i80SxQ==", + "dependencies": { + "@peculiar/webcrypto": "^1.0.22", + "asmcrypto.js": "^0.22.0", + "b64-lite": "^1.3.1", + "b64u-lite": "^1.0.1", + "msrcrypto": "^1.5.6", + "str2buf": "^1.3.0", + "webcrypto-shim": "^0.1.4" + }, + "optionalDependencies": { + "@unimodules/core": "*", + "@unimodules/react-native-adapter": "*", + "expo-random": "*", + "react-native-securerandom": "^0.1.1" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "optional": true, + "peer": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/@react-native-community/cli": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-7.0.3.tgz", + "integrity": "sha512-WyJOA829KAhU1pw2MDQt0YhOS9kyR2KqyqgJyTuQhzFVCBPX4F5aDEkZYYn4jdldaDHCPrLJ3ho3gxYTXy+x7w==", + "optional": true, + "peer": true, + "dependencies": { + "@react-native-community/cli-debugger-ui": "^7.0.3", + "@react-native-community/cli-hermes": "^6.3.0", + "@react-native-community/cli-plugin-metro": "^7.0.3", + "@react-native-community/cli-server-api": "^7.0.3", + "@react-native-community/cli-tools": "^6.2.0", + "@react-native-community/cli-types": "^6.0.0", + "appdirsjs": "^1.2.4", + "chalk": "^4.1.2", + "command-exists": "^1.2.8", + "commander": "^2.19.0", + "cosmiconfig": "^5.1.0", + "deepmerge": "^3.2.0", + "envinfo": "^7.7.2", + "execa": "^1.0.0", + "find-up": "^4.1.0", + "fs-extra": "^8.1.0", + "glob": "^7.1.3", + "graceful-fs": "^4.1.3", + "joi": "^17.2.1", + "leven": "^3.1.0", + "lodash": "^4.17.15", + "minimist": "^1.2.0", + "node-stream-zip": "^1.9.1", + "ora": "^3.4.0", + "pretty-format": "^26.6.2", + "prompts": "^2.4.0", + "semver": "^6.3.0", + "serve-static": "^1.13.1", + "strip-ansi": "^5.2.0", + "sudo-prompt": "^9.0.0", + "wcwidth": "^1.0.1" + }, + "bin": { + "react-native": "build/bin.js" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "react-native": "*" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/@react-native-community/cli-tools": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-6.2.0.tgz", + "integrity": "sha512-08ssz4GMEnRxC/1FgTTN/Ud7mExQi5xMphItPjfHiTxpZPhrFn+IMx6mya0ncFEhhxQ207wYlJMRLPRRdBZ8oA==", + "optional": true, + "peer": true, + "dependencies": { + "appdirsjs": "^1.2.4", + "chalk": "^4.1.2", + "lodash": "^4.17.15", + "mime": "^2.4.1", + "node-fetch": "^2.6.0", + "open": "^6.2.0", + "semver": "^6.3.0", + "shell-quote": "1.6.1" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/@types/yargs": { + "version": "15.0.14", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", + "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", + "optional": true, + "peer": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/isomorphic-webcrypto/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "optional": true, + "peer": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": 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/isomorphic-webcrypto/node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "optional": true, + "peer": true, + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/isomorphic-webcrypto/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/isomorphic-webcrypto/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==", + "optional": true, + "peer": true + }, + "node_modules/isomorphic-webcrypto/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==", + "optional": true, + "peer": true + }, + "node_modules/isomorphic-webcrypto/node_modules/cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "optional": true, + "peer": true, + "dependencies": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/isomorphic-webcrypto/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==", + "optional": true, + "peer": true, + "dependencies": { + "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": ">=4.8" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/cross-spawn/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "optional": true, + "peer": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/deepmerge": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.3.0.tgz", + "integrity": "sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "optional": true, + "peer": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.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": ">=6" + } + }, + "node_modules/isomorphic-webcrypto/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==", + "optional": true, + "peer": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "optional": true, + "peer": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/isomorphic-webcrypto/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "optional": true, + "peer": true, + "dependencies": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "optional": true, + "peer": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/isomorphic-webcrypto/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==", + "optional": true, + "peer": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "optional": true, + "peer": true, + "dependencies": { + "chalk": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/log-symbols/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/log-symbols/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==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/log-symbols/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "optional": true, + "peer": true + }, + "node_modules/isomorphic-webcrypto/node_modules/log-symbols/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/log-symbols/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==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/isomorphic-webcrypto/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": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "optional": true, + "peer": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "optional": true, + "peer": true, + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "optional": true, + "peer": true, + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/ora": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", + "optional": true, + "peer": true, + "dependencies": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/ora/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/ora/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==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/ora/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/ora/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "optional": true, + "peer": true + }, + "node_modules/isomorphic-webcrypto/node_modules/ora/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/ora/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==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/isomorphic-webcrypto/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==", + "optional": true, + "peer": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isomorphic-webcrypto/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==", + "optional": true, + "peer": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isomorphic-webcrypto/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "optional": true, + "peer": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/isomorphic-webcrypto/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/promise": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz", + "integrity": "sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q==", + "optional": true, + "peer": true, + "dependencies": { + "asap": "~2.0.6" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/react": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "optional": true, + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/react-native": { + "version": "0.68.2", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.68.2.tgz", + "integrity": "sha512-qNMz+mdIirCEmlrhapAtAG+SWVx6MAiSfCbFNhfHqiqu1xw1OKXdzIrjaBEPihRC2pcORCoCHduHGQe/Pz9Yuw==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/create-cache-key-function": "^27.0.1", + "@react-native-community/cli": "^7.0.3", + "@react-native-community/cli-platform-android": "^7.0.1", + "@react-native-community/cli-platform-ios": "^7.0.1", + "@react-native/assets": "1.0.0", + "@react-native/normalize-color": "2.0.0", + "@react-native/polyfills": "2.0.0", + "abort-controller": "^3.0.0", + "anser": "^1.4.9", + "base64-js": "^1.1.2", + "deprecated-react-native-prop-types": "^2.3.0", + "event-target-shim": "^5.0.1", + "hermes-engine": "~0.11.0", + "invariant": "^2.2.4", + "jsc-android": "^250230.2.1", + "metro-react-native-babel-transformer": "0.67.0", + "metro-runtime": "0.67.0", + "metro-source-map": "0.67.0", + "nullthrows": "^1.1.1", + "pretty-format": "^26.5.2", + "promise": "^8.0.3", + "react-devtools-core": "^4.23.0", + "react-native-codegen": "^0.0.17", + "react-native-gradle-plugin": "^0.0.6", + "react-refresh": "^0.4.0", + "react-shallow-renderer": "16.14.1", + "regenerator-runtime": "^0.13.2", + "scheduler": "^0.20.2", + "stacktrace-parser": "^0.1.3", + "use-subscription": ">=1.0.0 <1.6.0", + "whatwg-fetch": "^3.0.0", + "ws": "^6.1.4" + }, + "bin": { + "react-native": "cli.js" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": "17.0.2" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/react-native-securerandom": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/react-native-securerandom/-/react-native-securerandom-0.1.1.tgz", + "integrity": "sha1-8TBiOkEsM4sK+t7bwgTFy7i/IHA=", + "optional": true, + "dependencies": { + "base64-js": "*" + }, + "peerDependencies": { + "react-native": "*" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/react-shallow-renderer": { + "version": "16.14.1", + "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.14.1.tgz", + "integrity": "sha512-rkIMcQi01/+kxiTE9D3fdS959U1g7gs+/rborw++42m1O9FAQiNI/UNRZExVUoAOprn4umcXf+pFRou8i4zuBg==", + "optional": true, + "peer": true, + "dependencies": { + "object-assign": "^4.1.1", + "react-is": "^16.12.0 || ^17.0.0" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "optional": true, + "peer": true, + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "optional": true, + "peer": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/shell-quote": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", + "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "optional": true, + "peer": true, + "dependencies": { + "array-filter": "~0.0.0", + "array-map": "~0.0.0", + "array-reduce": "~0.0.0", + "jsonify": "~0.0.0" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/isomorphic-webcrypto/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==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/use-subscription": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/use-subscription/-/use-subscription-1.5.1.tgz", + "integrity": "sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA==", + "optional": true, + "peer": true, + "dependencies": { + "object-assign": "^4.1.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "optional": true, + "peer": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/isomorphic-webcrypto/node_modules/ws": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", + "optional": true, + "peer": true, + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", + "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", + "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", + "dev": true, + "dependencies": { + "@jest/core": "^27.5.1", + "import-local": "^3.0.2", + "jest-cli": "^27.5.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", + "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "execa": "^5.0.0", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", + "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus/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/jest-circus/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/jest-circus/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/jest-circus/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/jest-circus/node_modules/expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-circus/node_modules/jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus/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/jest-cli": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", + "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", + "dev": true, + "dependencies": { + "@jest/core": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "prompts": "^2.0.1", + "yargs": "^16.2.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-cli/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/jest-cli/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/jest-cli/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/jest-cli/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/jest-cli/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli/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/jest-config": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.8.0", + "@jest/test-sequencer": "^27.5.1", + "@jest/types": "^27.5.1", + "babel-jest": "^27.5.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.9", + "jest-circus": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-jasmine2": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-config/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/jest-config/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/jest-config/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/jest-config/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/jest-config/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config/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/jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-diff/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/jest-diff/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/jest-diff/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/jest-diff/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/jest-diff/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff/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/jest-docblock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", + "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-each": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-each/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/jest-each/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/jest-each/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/jest-each/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/jest-each/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-each/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/jest-environment-jsdom": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", + "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1", + "jsdom": "^16.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", + "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "devOptional": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-jasmine2": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", + "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/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/jest-jasmine2/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/jest-jasmine2/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/jest-jasmine2/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/jest-jasmine2/node_modules/expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-jasmine2/node_modules/jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/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/jest-leak-detector": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", + "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", + "dev": true, + "dependencies": { + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.2.5.tgz", + "integrity": "sha512-qNR/kh6bz0Dyv3m68Ck2g1fLW5KlSOUNcFQh87VXHZwWc/gY6XwnKofx76Qytz3x5LDWT09/2+yXndTkaG4aWg==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.2.5", + "jest-get-type": "^27.0.6", + "pretty-format": "^27.2.5" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-matcher-utils/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/jest-matcher-utils/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/jest-matcher-utils/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/jest-matcher-utils/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/jest-matcher-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-matcher-utils/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/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-message-util/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/jest-message-util/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/jest-message-util/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/jest-message-util/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/jest-message-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/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/jest-mock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-raw-loader": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/jest-raw-loader/-/jest-raw-loader-1.0.1.tgz", + "integrity": "sha1-zp9W1UZQ8VfEp9FtIkul1hO81iY=", + "dev": true + }, + "node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "devOptional": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", + "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-snapshot": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve/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/jest-resolve/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/jest-resolve/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/jest-resolve/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/jest-resolve/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/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/jest-runner": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", + "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", + "dev": true, + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-leak-detector": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "source-map-support": "^0.5.6", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runner/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/jest-runner/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/jest-runner/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/jest-runner/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/jest-runner/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner/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/jest-runtime": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/globals": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runtime/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/jest-runtime/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/jest-runtime/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/jest-runtime/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/jest-runtime/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/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/jest-serializer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", + "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", + "devOptional": true, + "dependencies": { + "@types/node": "*", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^27.5.1", + "semver": "^7.3.2" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/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/jest-snapshot/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/jest-snapshot/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/jest-snapshot/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/jest-snapshot/node_modules/expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot/node_modules/jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-snapshot/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/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "devOptional": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-util/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==", + "devOptional": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": 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/jest-util/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==", + "devOptional": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-util/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==", + "devOptional": true + }, + "node_modules/jest-util/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==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/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==", + "devOptional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-validate/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/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-validate/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/jest-validate/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/jest-validate/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/jest-validate/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate/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/jest-watcher": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", + "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", + "dev": true, + "dependencies": { + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^27.5.1", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-watcher/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/jest-watcher/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/jest-watcher/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/jest-watcher/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/jest-watcher/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher/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/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==", + "devOptional": 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==", + "devOptional": 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==", + "devOptional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jetifier": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/jetifier/-/jetifier-1.6.8.tgz", + "integrity": "sha512-3Zi16h6L5tXDRQJTb221cnRoVG9/9OvreLdLU2/ZjRv/GILL+2Cemt0IKvkowwkDpvouAU1DQPOJ7qaiHeIdrw==", + "optional": true, + "peer": true, + "bin": { + "jetifier": "bin/jetify", + "jetifier-standalone": "bin/jetifier-standalone", + "jetify": "bin/jetify" + } + }, + "node_modules/jimp-compact": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/jimp-compact/-/jimp-compact-0.16.1.tgz", + "integrity": "sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==", + "optional": true, + "peer": true + }, + "node_modules/joi": { + "version": "17.6.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz", + "integrity": "sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==", + "optional": true, + "peer": true, + "dependencies": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.0", + "@sideway/pinpoint": "^2.0.0" + } + }, + "node_modules/join-component": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/join-component/-/join-component-1.1.0.tgz", + "integrity": "sha1-uEF7dQZho5K+4sJTfGiyqdSXfNU=", + "optional": true, + "peer": 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==" + }, + "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==", + "devOptional": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsc-android": { + "version": "250230.2.1", + "resolved": "https://registry.npmjs.org/jsc-android/-/jsc-android-250230.2.1.tgz", + "integrity": "sha512-KmxeBlRjwoqCnBBKGsihFtvsBHyUFlBxJPK4FzeYcIuBfdjv6jFys44JITAgSTbQD+vIdwMEfyZklsuQX0yI1Q==", + "optional": true, + "peer": true + }, + "node_modules/jscodeshift": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.13.1.tgz", + "integrity": "sha512-lGyiEbGOvmMRKgWk4vf+lUrCWO/8YR8sUR3FKF1Cq5fovjZDlIcw3Hu5ppLHAnEXshVffvaM0eyuY/AbOeYpnQ==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/core": "^7.13.16", + "@babel/parser": "^7.13.16", + "@babel/plugin-proposal-class-properties": "^7.13.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", + "@babel/plugin-proposal-optional-chaining": "^7.13.12", + "@babel/plugin-transform-modules-commonjs": "^7.13.8", + "@babel/preset-flow": "^7.13.13", + "@babel/preset-typescript": "^7.13.0", + "@babel/register": "^7.13.16", + "babel-core": "^7.0.0-bridge.0", + "chalk": "^4.1.2", + "flow-parser": "0.*", + "graceful-fs": "^4.2.4", + "micromatch": "^3.1.10", + "neo-async": "^2.5.0", + "node-dir": "^0.1.17", + "recast": "^0.20.4", + "temp": "^0.8.4", + "write-file-atomic": "^2.3.0" + }, + "bin": { + "jscodeshift": "bin/jscodeshift.js" + }, + "peerDependencies": { + "@babel/preset-env": "^7.1.6" + } + }, + "node_modules/jscodeshift/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jscodeshift/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "optional": true, + "peer": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jscodeshift/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "optional": true, + "peer": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jscodeshift/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": 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/jscodeshift/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jscodeshift/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==", + "optional": true, + "peer": true + }, + "node_modules/jscodeshift/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "optional": true, + "peer": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jscodeshift/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "optional": true, + "peer": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jscodeshift/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jscodeshift/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jscodeshift/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "optional": true, + "peer": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jscodeshift/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, + "peer": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jscodeshift/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "optional": true, + "peer": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jscodeshift/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==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jscodeshift/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "optional": true, + "peer": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jscodeshift/node_modules/write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "optional": true, + "peer": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "node_modules/jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dev": true, + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "devOptional": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "optional": true, + "peer": 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-deref-sync": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/json-schema-deref-sync/-/json-schema-deref-sync-0.13.0.tgz", + "integrity": "sha512-YBOEogm5w9Op337yb6pAT6ZXDqlxAsQCanM3grid8lMWNxRJO/zWEJi3ZzqDL8boWfwhTFym5EFrNgWwpqcBRg==", + "optional": true, + "peer": true, + "dependencies": { + "clone": "^2.1.2", + "dag-map": "~1.0.0", + "is-valid-path": "^0.1.1", + "lodash": "^4.17.13", + "md5": "~2.2.0", + "memory-cache": "~0.2.0", + "traverse": "~0.6.6", + "valid-url": "~1.0.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/json-schema-deref-sync/node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.8" + } + }, + "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": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "devOptional": true, + "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==", + "optional": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonfile/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "optional": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "optional": true, + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz", + "integrity": "sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.3", + "object.assign": "^4.1.2" + }, + "engines": { + "node": ">=4.0" + } + }, + "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==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "optional": true, + "peer": true, + "optionalDependencies": { + "graceful-fs": "^4.1.9" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "devOptional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/klona": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/known-css-properties": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.25.0.tgz", + "integrity": "sha512-b0/9J1O9Jcyik1GC6KC42hJ41jKwdO/Mq8Mdo5sYN+IuRTXs2YFHZC3kZSx6ueusqa95x3wLYe/ytKjbAfGixA==", + "dev": true + }, + "node_modules/language-subtag-registry": { + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz", + "integrity": "sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==", + "dev": true + }, + "node_modules/language-tags": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", + "integrity": "sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=", + "dev": true, + "dependencies": { + "language-subtag-registry": "~0.3.2" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "devOptional": 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==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", + "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==", + "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==", + "devOptional": true + }, + "node_modules/lint-staged": { + "version": "12.4.1", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.4.1.tgz", + "integrity": "sha512-PTXgzpflrQ+pODQTG116QNB+Q6uUTDg5B5HqGvNhoQSGt8Qy+MA/6zSnR8n38+sxP5TapzeQGTvoKni0KRS8Vg==", + "dev": true, + "dependencies": { + "cli-truncate": "^3.1.0", + "colorette": "^2.0.16", + "commander": "^8.3.0", + "debug": "^4.3.3", + "execa": "^5.1.1", + "lilconfig": "2.0.4", + "listr2": "^4.0.1", + "micromatch": "^4.0.4", + "normalize-path": "^3.0.0", + "object-inspect": "^1.12.0", + "pidtree": "^0.5.0", + "string-argv": "^0.3.1", + "supports-color": "^9.2.1", + "yaml": "^1.10.2" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/lint-staged" + } + }, + "node_modules/lint-staged/node_modules/lilconfig": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz", + "integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/lint-staged/node_modules/supports-color": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.2.1.tgz", + "integrity": "sha512-Obv7ycoCTG51N7y175StI9BlAXrmgZrFhZOb0/PyjHBher/NmsdBgbbQ1Inhq+gIhz6+7Gb+jWF2Vqi7Mf1xnQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/listr2": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-4.0.5.tgz", + "integrity": "sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==", + "dev": true, + "dependencies": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.5.5", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "enquirer": ">= 2.3.0 < 3" + }, + "peerDependenciesMeta": { + "enquirer": { + "optional": true + } + } + }, + "node_modules/listr2/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/listr2/node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2/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/listr2/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/listr2/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/listr2/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/listr2/node_modules/slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/listr2/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/loader-runner": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "devOptional": true + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", + "dev": true + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "devOptional": true + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "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.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=", + "optional": true, + "peer": true + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "dev": true + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "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==", + "devOptional": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "devOptional": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "devOptional": true + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-update/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-update/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/log-update/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/log-update/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/log-update/node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/log-update/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/log-update/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/logkitty": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz", + "integrity": "sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-fragments": "^0.2.1", + "dayjs": "^1.8.15", + "yargs": "^15.1.0" + }, + "bin": { + "logkitty": "bin/logkitty.js" + } + }, + "node_modules/logkitty/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/logkitty/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "optional": true, + "peer": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/logkitty/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/logkitty/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==", + "optional": true, + "peer": true + }, + "node_modules/logkitty/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==", + "optional": true, + "peer": true + }, + "node_modules/logkitty/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==", + "optional": true, + "peer": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty/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==", + "optional": true, + "peer": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty/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==", + "optional": true, + "peer": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/logkitty/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==", + "optional": true, + "peer": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/logkitty/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty/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==", + "optional": true, + "peer": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty/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==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "optional": true, + "peer": true + }, + "node_modules/logkitty/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "optional": true, + "peer": true, + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "optional": true, + "peer": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/longest-streak": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "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/lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", + "dev": true, + "dependencies": { + "es5-ext": "~0.10.2" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-fetch-happen": { + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.5.tgz", + "integrity": "sha512-mucOj2H0Jn/ax7H9K9T1bf0p1nn/mBFa551Os7ed9xRfLEx20aZhZeLslmRYfAaAqXZUGipcs+m5KOKvOH0XKA==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.1.1", + "ssri": "^9.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/@npmcli/fs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.0.tgz", + "integrity": "sha512-DmfBvNXGaetMxj9LTp8NAN9vEidXURrf5ZTslQzEAi/6GbW+4yjaLFQc6Tue5cpZ9Frlk4OBo/Snf1Bh/S7qTQ==", + "dev": true, + "dependencies": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/@npmcli/move-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.0.tgz", + "integrity": "sha512-UR6D5f4KEGWJV6BGPH3Qb2EtgH+t+1XQ1Tt85c7qicN6cezzuHPdZwwAxqZr4JLtnQu0LZsTza/5gmNmSl8XLg==", + "dev": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/make-fetch-happen/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/make-fetch-happen/node_modules/cacache": { + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.0.tgz", + "integrity": "sha512-Pk4aQkwCW82A4jGKFvcGkQFqZcMspfP9YWq9Pr87/ldDvlWf718zeI6KWCdKt/jeihu6BytHRUicJPB1K2k8EQ==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/make-fetch-happen/node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/make-fetch-happen/node_modules/lru-cache": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.10.1.tgz", + "integrity": "sha512-BQuhQxPuRl79J5zSXRP+uNzPOyZw2oFI9JLRQ80XswSvg21KMKNtQza9eF42rfI/3Z40RvzBdXgziEkudzjo8A==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-fetch-happen/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-fetch-happen/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-fetch-happen/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-fetch-happen/node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-fetch-happen/node_modules/ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "devOptional": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "optional": true, + "peer": true, + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mathml-tag-names": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", + "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/md5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", + "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=", + "devOptional": true, + "dependencies": { + "charenc": "~0.0.1", + "crypt": "~0.0.1", + "is-buffer": "~1.1.1" + } + }, + "node_modules/md5-file": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/md5-file/-/md5-file-3.2.3.tgz", + "integrity": "sha512-3Tkp1piAHaworfcCgH0jKbTvj1jWWFgbvh2cXaNCgHwyTCBxxvD1Y04rmfpvdPm1P4oXMOpm6+2H7sr7v9v8Fw==", + "optional": true, + "peer": true, + "dependencies": { + "buffer-alloc": "^1.1.0" + }, + "bin": { + "md5-file": "cli.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/md5hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/md5hex/-/md5hex-1.0.0.tgz", + "integrity": "sha1-7XS0d6Luk2n3Xv7i8I1ZFeUqQug=", + "optional": true, + "peer": true + }, + "node_modules/mdast-util-from-markdown": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", + "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-to-string": "^2.0.0", + "micromark": "~2.11.0", + "parse-entities": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", + "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "longest-streak": "^2.0.0", + "mdast-util-to-string": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.0.0", + "zwitch": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "devOptional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz", + "integrity": "sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==", + "dev": true, + "dependencies": { + "fs-monkey": "1.0.3" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" + }, + "node_modules/memoizee": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", + "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", + "dev": true, + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.53", + "es6-weak-map": "^2.0.3", + "event-emitter": "^0.3.5", + "is-promise": "^2.2.2", + "lru-queue": "^0.1.0", + "next-tick": "^1.1.0", + "timers-ext": "^0.1.7" + } + }, + "node_modules/memory-cache": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/memory-cache/-/memory-cache-0.2.0.tgz", + "integrity": "sha1-eJCwHVLADI68nVM+H46xfjA0hxo=", + "optional": true, + "peer": true + }, + "node_modules/memory-fs": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz", + "integrity": "sha1-8rslNovBIeORwlIN6Slpyu4KApA=", + "dev": true + }, + "node_modules/meow": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "dev": true, + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize": "^1.2.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/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-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "devOptional": 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==", + "devOptional": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/metro": { + "version": "0.67.0", + "resolved": "https://registry.npmjs.org/metro/-/metro-0.67.0.tgz", + "integrity": "sha512-DwuBGAFcAivoac/swz8Lp7Y5Bcge1tzT7T6K0nf1ubqJP8YzBUtyR4pkjEYVUzVu/NZf7O54kHSPVu1ibYzOBQ==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@babel/core": "^7.14.0", + "@babel/generator": "^7.14.0", + "@babel/parser": "^7.14.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.0.0", + "absolute-path": "^0.0.0", + "accepts": "^1.3.7", + "async": "^2.4.0", + "chalk": "^4.0.0", + "ci-info": "^2.0.0", + "connect": "^3.6.5", + "debug": "^2.2.0", + "denodeify": "^1.2.1", + "error-stack-parser": "^2.0.6", + "fs-extra": "^1.0.0", + "graceful-fs": "^4.1.3", + "hermes-parser": "0.5.0", + "image-size": "^0.6.0", + "invariant": "^2.2.4", + "jest-haste-map": "^27.3.1", + "jest-worker": "^26.0.0", + "lodash.throttle": "^4.1.1", + "metro-babel-transformer": "0.67.0", + "metro-cache": "0.67.0", + "metro-cache-key": "0.67.0", + "metro-config": "0.67.0", + "metro-core": "0.67.0", + "metro-hermes-compiler": "0.67.0", + "metro-inspector-proxy": "0.67.0", + "metro-minify-uglify": "0.67.0", + "metro-react-native-babel-preset": "0.67.0", + "metro-resolver": "0.67.0", + "metro-runtime": "0.67.0", + "metro-source-map": "0.67.0", + "metro-symbolicate": "0.67.0", + "metro-transform-plugins": "0.67.0", + "metro-transform-worker": "0.67.0", + "mime-types": "^2.1.27", + "mkdirp": "^0.5.1", + "node-fetch": "^2.2.0", + "nullthrows": "^1.1.1", + "rimraf": "^2.5.4", + "serialize-error": "^2.1.0", + "source-map": "^0.5.6", + "strip-ansi": "^6.0.0", + "temp": "0.8.3", + "throat": "^5.0.0", + "ws": "^7.5.1", + "yargs": "^15.3.1" + }, + "bin": { + "metro": "src/cli.js" + } + }, + "node_modules/metro-babel-transformer": { + "version": "0.67.0", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.67.0.tgz", + "integrity": "sha512-SBqc4nq/dgsPNFm+mpWcQQzJaXnh0nrfz2pSnZC4i6zMtIakrTWb8SQ78jOU1FZVEZ3nu9xCYVHS9Tbr/LoEuw==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/core": "^7.14.0", + "hermes-parser": "0.5.0", + "metro-source-map": "0.67.0", + "nullthrows": "^1.1.1" + } + }, + "node_modules/metro-cache": { + "version": "0.67.0", + "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.67.0.tgz", + "integrity": "sha512-IY5dXiR76L75b2ue/mv+9vW8g5hdQJU6YEe81lj6gTSoUrhcONT0rzY+Gh5QOS2Kk6z9utZQMvd9PRKL9/635A==", + "optional": true, + "peer": true, + "dependencies": { + "metro-core": "0.67.0", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4" + } + }, + "node_modules/metro-cache-key": { + "version": "0.67.0", + "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.67.0.tgz", + "integrity": "sha512-FNJe5Rcb2uzY6G6tsqCf0RV4t2rCeX6vSHBxmP7k+4aI4NqX4evtPI0K82r221nBzm5DqNWCURZ0RYUT6jZMGA==", + "optional": true, + "peer": true + }, + "node_modules/metro-cache/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "optional": true, + "peer": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/metro-config": { + "version": "0.67.0", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.67.0.tgz", + "integrity": "sha512-ThAwUmzZwTbKyyrIn2bKIcJDPDBS0LKAbqJZQioflvBGfcgA21h3fdL3IxRmvCEl6OnkEWI0Tn1Z9w2GLAjf2g==", + "optional": true, + "peer": true, + "dependencies": { + "cosmiconfig": "^5.0.5", + "jest-validate": "^26.5.2", + "metro": "0.67.0", + "metro-cache": "0.67.0", + "metro-core": "0.67.0", + "metro-runtime": "0.67.0" + } + }, + "node_modules/metro-config/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "optional": true, + "peer": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/metro-config/node_modules/@types/yargs": { + "version": "15.0.14", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", + "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", + "optional": true, + "peer": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/metro-config/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/metro-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "optional": true, + "peer": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/metro-config/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/metro-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": 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/metro-config/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/metro-config/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==", + "optional": true, + "peer": true + }, + "node_modules/metro-config/node_modules/cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "optional": true, + "peer": true, + "dependencies": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/metro-config/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/metro-config/node_modules/import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "optional": true, + "peer": true, + "dependencies": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/metro-config/node_modules/jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/metro-config/node_modules/jest-validate": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", + "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^26.6.2", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "leven": "^3.1.0", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/metro-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "optional": true, + "peer": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/metro-config/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "optional": true, + "peer": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/metro-config/node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/metro-config/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/metro-config/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==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/metro-core": { + "version": "0.67.0", + "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.67.0.tgz", + "integrity": "sha512-TOa/ShE1bUq83fGNfV6rFwyfZ288M8ydmWN3g9C2OW8emOHLhJslYD/SIU4DhDkP/99yaJluIALdZ2g0+pCrvQ==", + "optional": true, + "peer": true, + "dependencies": { + "jest-haste-map": "^27.3.1", + "lodash.throttle": "^4.1.1", + "metro-resolver": "0.67.0" + } + }, + "node_modules/metro-hermes-compiler": { + "version": "0.67.0", + "resolved": "https://registry.npmjs.org/metro-hermes-compiler/-/metro-hermes-compiler-0.67.0.tgz", + "integrity": "sha512-X5Pr1jC8/kO6d1EBDJ6yhtuc5euHX89UDNv8qdPJHAET03xfFnlojRPwOw6il2udAH20WLBv+F5M9VY+58zspQ==", + "optional": true, + "peer": true + }, + "node_modules/metro-inspector-proxy": { + "version": "0.67.0", + "resolved": "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.67.0.tgz", + "integrity": "sha512-5Ubjk94qpNaU3OT2IZa4/dec09bauic1hzWms4czorBzDenkp4kYXG9/aWTmgQLtCk92H3Q8jKl1PQRxUSkrOQ==", + "optional": true, + "peer": true, + "dependencies": { + "connect": "^3.6.5", + "debug": "^2.2.0", + "ws": "^7.5.1", + "yargs": "^15.3.1" + }, + "bin": { + "metro-inspector-proxy": "src/cli.js" + } + }, + "node_modules/metro-inspector-proxy/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/metro-inspector-proxy/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "optional": true, + "peer": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/metro-inspector-proxy/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/metro-inspector-proxy/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==", + "optional": true, + "peer": true + }, + "node_modules/metro-inspector-proxy/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "optional": true, + "peer": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/metro-inspector-proxy/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==", + "optional": true, + "peer": true + }, + "node_modules/metro-inspector-proxy/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==", + "optional": true, + "peer": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/metro-inspector-proxy/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/metro-inspector-proxy/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==", + "optional": true, + "peer": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/metro-inspector-proxy/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "optional": true, + "peer": true + }, + "node_modules/metro-inspector-proxy/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==", + "optional": true, + "peer": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/metro-inspector-proxy/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==", + "optional": true, + "peer": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/metro-inspector-proxy/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/metro-inspector-proxy/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/metro-inspector-proxy/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==", + "optional": true, + "peer": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/metro-inspector-proxy/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==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/metro-inspector-proxy/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "optional": true, + "peer": true + }, + "node_modules/metro-inspector-proxy/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "optional": true, + "peer": true, + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/metro-inspector-proxy/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "optional": true, + "peer": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/metro-minify-uglify": { + "version": "0.67.0", + "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.67.0.tgz", + "integrity": "sha512-4CmM5b3MTAmQ/yFEfsHOhD2SuBObB2YF6PKzXZc4agUsQVVtkrrNElaiWa8w26vrTzA9emwcyurxMf4Nl3lYPQ==", + "optional": true, + "peer": true, + "dependencies": { + "uglify-es": "^3.1.9" + } + }, + "node_modules/metro-react-native-babel-preset": { + "version": "0.67.0", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.67.0.tgz", + "integrity": "sha512-tgTG4j0SKwLHbLRELMmgkgkjV1biYkWlGGKOmM484/fJC6bpDikdaFhfjsyE+W+qt7I5szbCPCickMTNQ+zwig==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/core": "^7.14.0", + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-export-default-from": "^7.0.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", + "@babel/plugin-proposal-optional-chaining": "^7.0.0", + "@babel/plugin-syntax-dynamic-import": "^7.0.0", + "@babel/plugin-syntax-export-default-from": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.2.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-syntax-optional-chaining": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-async-to-generator": "^7.0.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.0.0", + "@babel/plugin-transform-exponentiation-operator": "^7.0.0", + "@babel/plugin-transform-flow-strip-types": "^7.0.0", + "@babel/plugin-transform-for-of": "^7.0.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-object-assign": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-react-jsx-self": "^7.0.0", + "@babel/plugin-transform-react-jsx-source": "^7.0.0", + "@babel/plugin-transform-regenerator": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-sticky-regex": "^7.0.0", + "@babel/plugin-transform-template-literals": "^7.0.0", + "@babel/plugin-transform-typescript": "^7.5.0", + "@babel/plugin-transform-unicode-regex": "^7.0.0", + "@babel/template": "^7.0.0", + "react-refresh": "^0.4.0" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/metro-react-native-babel-transformer": { + "version": "0.67.0", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.67.0.tgz", + "integrity": "sha512-P0JT09n7T01epUtgL9mH6BPat3xn4JjBakl4lWHdL61cvEGcrxuIom1eoFFKkgU/K5AVLU4aCAttHS7nSFCcEQ==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/core": "^7.14.0", + "babel-preset-fbjs": "^3.4.0", + "hermes-parser": "0.5.0", + "metro-babel-transformer": "0.67.0", + "metro-react-native-babel-preset": "0.67.0", + "metro-source-map": "0.67.0", + "nullthrows": "^1.1.1" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/metro-resolver": { + "version": "0.67.0", + "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.67.0.tgz", + "integrity": "sha512-d2KS/zAyOA/z/q4/ff41rAp+1txF4H6qItwpsls/RHStV2j6PqgRHUzq/3ga+VIeoUJntYJ8nGW3+3qSrhFlig==", + "optional": true, + "peer": true, + "dependencies": { + "absolute-path": "^0.0.0" + } + }, + "node_modules/metro-runtime": { + "version": "0.67.0", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.67.0.tgz", + "integrity": "sha512-IFtSL0JUt1xK3t9IoLflTDft82bjieSzdIJWLzrRzBMlesz8ox5bVmnpQbVQEwfYUpEOxbM3VOZauVbdCmXA7g==", + "optional": true, + "peer": true + }, + "node_modules/metro-source-map": { + "version": "0.67.0", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.67.0.tgz", + "integrity": "sha512-yxypInsRo3SfS00IgTuL6a2W2tfwLY//vA2E+GeqGBF5zTbJZAhwNGIEl8S87XXZhwzJcxf5/8LjJC1YDzabww==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.0.0", + "invariant": "^2.2.4", + "metro-symbolicate": "0.67.0", + "nullthrows": "^1.1.1", + "ob1": "0.67.0", + "source-map": "^0.5.6", + "vlq": "^1.0.0" + } + }, + "node_modules/metro-symbolicate": { + "version": "0.67.0", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.67.0.tgz", + "integrity": "sha512-ZqVVcfa0xSz40eFzA5P8pCF3V6Tna9RU1prFzAJTa3j9dCGqwh0HTXC8AIkMtgX7hNdZrCJI1YipzUBlwkT0/A==", + "optional": true, + "peer": true, + "dependencies": { + "invariant": "^2.2.4", + "metro-source-map": "0.67.0", + "nullthrows": "^1.1.1", + "source-map": "^0.5.6", + "through2": "^2.0.1", + "vlq": "^1.0.0" + }, + "bin": { + "metro-symbolicate": "src/index.js" + }, + "engines": { + "node": ">=8.3" + } + }, + "node_modules/metro-transform-plugins": { + "version": "0.67.0", + "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.67.0.tgz", + "integrity": "sha512-DQFoSDIJdTMPDTUlKaCNJjEXiHGwFNneAF9wDSJ3luO5gigM7t7MuSaPzF4hpjmfmcfPnRhP6AEn9jcza2Sh8Q==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/core": "^7.14.0", + "@babel/generator": "^7.14.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.14.0", + "nullthrows": "^1.1.1" + } + }, + "node_modules/metro-transform-worker": { + "version": "0.67.0", + "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.67.0.tgz", + "integrity": "sha512-29n+JdTb80ROiv/wDiBVlY/xRAF/nrjhp/Udv/XJl1DZb+x7JEiPxpbpthPhwwl+AYxVrostGB0W06WJ61hfiw==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/core": "^7.14.0", + "@babel/generator": "^7.14.0", + "@babel/parser": "^7.14.0", + "@babel/types": "^7.0.0", + "babel-preset-fbjs": "^3.4.0", + "metro": "0.67.0", + "metro-babel-transformer": "0.67.0", + "metro-cache": "0.67.0", + "metro-cache-key": "0.67.0", + "metro-hermes-compiler": "0.67.0", + "metro-source-map": "0.67.0", + "metro-transform-plugins": "0.67.0", + "nullthrows": "^1.1.1" + } + }, + "node_modules/metro/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/metro/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": 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/metro/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "optional": true, + "peer": true + }, + "node_modules/metro/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "optional": true, + "peer": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/metro/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==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/metro/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==", + "optional": true, + "peer": true + }, + "node_modules/metro/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "optional": true, + "peer": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/metro/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==", + "optional": true, + "peer": true + }, + "node_modules/metro/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==", + "optional": true, + "peer": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/metro/node_modules/fs-extra": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", + "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", + "optional": true, + "peer": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0" + } + }, + "node_modules/metro/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/metro/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/metro/node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "optional": true, + "peer": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/metro/node_modules/jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "optional": true, + "peer": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/metro/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==", + "optional": true, + "peer": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/metro/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "optional": true, + "peer": true + }, + "node_modules/metro/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==", + "optional": true, + "peer": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/metro/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==", + "optional": true, + "peer": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/metro/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/metro/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/metro/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "optional": true, + "peer": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/metro/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==", + "optional": true, + "peer": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/metro/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==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/metro/node_modules/temp": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", + "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=", + "engines": [ + "node >=0.8.0" + ], + "optional": true, + "peer": true, + "dependencies": { + "os-tmpdir": "^1.0.0", + "rimraf": "~2.2.6" + } + }, + "node_modules/metro/node_modules/temp/node_modules/rimraf": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", + "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", + "optional": true, + "peer": true, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/metro/node_modules/throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "optional": true, + "peer": true + }, + "node_modules/metro/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==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/metro/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "optional": true, + "peer": true + }, + "node_modules/metro/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "optional": true, + "peer": true, + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/metro/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "optional": true, + "peer": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/microbuffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/microbuffer/-/microbuffer-1.0.0.tgz", + "integrity": "sha1-izgy7UDIfVH0e7I0kTppinVtGdI=", + "dev": true + }, + "node_modules/micromark": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", + "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "debug": "^4.0.0", + "parse-entities": "^2.0.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==", + "devOptional": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "optional": true, + "peer": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "devOptional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "devOptional": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "devOptional": true, + "engines": { + "node": ">=6" + } + }, + "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/mini-css-extract-plugin": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.0.tgz", + "integrity": "sha512-ndG8nxCEnAemsg4FSgS+yNyHKgkTB4nPKqCOgh65j3/30qqC5RaSQQXMm++Y6sb6E1zRSxPkztj9fqxhS1Eo6w==", + "dev": true, + "dependencies": { + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/mini-css-extract-plugin/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/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "devOptional": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "devOptional": true + }, + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "devOptional": 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==", + "devOptional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-fetch": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.0.tgz", + "integrity": "sha512-H9U4UVBGXEyyWJnqYDCLp1PwD8XIkJ4akNHp1aGVI+2Ym7wQMlxDKi4IB4JbmyU+pl9pEs/cVrK6cOuvmbK4Sg==", + "dev": true, + "dependencies": { + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "devOptional": 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==", + "devOptional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "devOptional": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "optional": true, + "peer": true, + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "optional": true, + "peer": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mrmime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.0.tgz", + "integrity": "sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "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==", + "devOptional": true + }, + "node_modules/msrcrypto": { + "version": "1.5.8", + "resolved": "https://registry.npmjs.org/msrcrypto/-/msrcrypto-1.5.8.tgz", + "integrity": "sha512-ujZ0TRuozHKKm6eGbKHfXef7f+esIhEckmThVnz7RNyiOJd7a6MXj2JGBoL9cnPDW+JMG16MoTUh5X+XXjI66Q==" + }, + "node_modules/multicast-dns": { + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.4.tgz", + "integrity": "sha512-XkCYOU+rr2Ft3LI6w4ye51M3VK31qJXFIxu0XLw169PtKG0Zx47OrXeVW/GCYOfpC9s1yyyf1S+L8/4LY0J9Zw==", + "dev": true, + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/mv": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=", + "optional": true, + "peer": true, + "dependencies": { + "mkdirp": "~0.5.1", + "ncp": "~2.0.0", + "rimraf": "~2.4.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/mv/node_modules/glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "optional": true, + "peer": true, + "dependencies": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mv/node_modules/rimraf": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=", + "optional": true, + "peer": true, + "dependencies": { + "glob": "^6.0.1" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "optional": true, + "peer": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nan": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "optional": true, + "peer": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node_modules/ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", + "optional": true, + "peer": true, + "bin": { + "ncp": "bin/ncp" + } + }, + "node_modules/neatequal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/neatequal/-/neatequal-1.0.0.tgz", + "integrity": "sha1-LuEhG8n6bkxVcV/SELsFYC6xrjs=", + "dev": true, + "dependencies": { + "varstream": "^0.3.2" + } + }, + "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==", + "devOptional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "devOptional": true + }, + "node_modules/nested-error-stacks": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.0.1.tgz", + "integrity": "sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==", + "optional": true, + "peer": true + }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "dev": 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==", + "devOptional": true + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/nocache": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/nocache/-/nocache-2.1.0.tgz", + "integrity": "sha512-0L9FvHG3nfnnmaEQPjT9xhfN4ISk0A8/2j4M37Np4mcDesJjHgEUfgPhdCyZuFI954tjokaIj/A3NdpFNdEh4Q==", + "optional": true, + "peer": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/node-dir": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", + "integrity": "sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU=", + "optional": true, + "peer": true, + "dependencies": { + "minimatch": "^3.0.2" + }, + "engines": { + "node": ">= 0.10.5" + } + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "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-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "devOptional": true, + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-gyp": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.0.0.tgz", + "integrity": "sha512-Ma6p4s+XCTPxCuAMrOA/IJRmVy16R8Sdhtwl4PrCr7IBlj4cPawF0vg/l7nOT1jPbuNS7lIRJpBSvVsXwEZuzw==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^5.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^12.22 || ^14.13 || >=16" + } + }, + "node_modules/node-gyp/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "devOptional": true + }, + "node_modules/node-releases": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.4.tgz", + "integrity": "sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==", + "devOptional": true + }, + "node_modules/node-stream-zip": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz", + "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.12.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/antelle" + } + }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/normalize-package-data": { + "version": "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/normalize-package-data/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "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==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-selector": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz", + "integrity": "sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=", + "dev": true + }, + "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-package-arg": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-7.0.0.tgz", + "integrity": "sha512-xXxr8y5U0kl8dVkz2oK7yZjPBvqM2fwaO5l3Yg13p03v8+E3qQcD0JNhHzjL1vyGgxcKkD0cco+NLR72iuPk3g==", + "optional": true, + "peer": true, + "dependencies": { + "hosted-git-info": "^3.0.2", + "osenv": "^0.1.5", + "semver": "^5.6.0", + "validate-npm-package-name": "^3.0.0" + } + }, + "node_modules/npm-package-arg/node_modules/hosted-git-info": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", + "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", + "optional": true, + "peer": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-package-arg/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "optional": true, + "peer": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "dev": true, + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/nullthrows": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", + "optional": true, + "peer": true + }, + "node_modules/num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "node_modules/number-to-bn": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", + "integrity": "sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA=", + "dependencies": { + "bn.js": "4.11.6", + "strip-hex-prefix": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/number-to-bn/node_modules/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" + }, + "node_modules/nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true + }, + "node_modules/ob1": { + "version": "0.67.0", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.67.0.tgz", + "integrity": "sha512-YvZtX8HKYackQ5PwdFIuuNFVsMChRPHvnARRRT0Vk59xsBvL5t9U1Ock3M1sYrKj+Gp73+0q9xcHLAxI+xLi5g==", + "optional": true, + "peer": true + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "optional": true, + "peer": true, + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "optional": true, + "peer": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "optional": true, + "peer": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "optional": true, + "peer": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "optional": true, + "peer": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, + "peer": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "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==", + "devOptional": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "optional": true, + "peer": true, + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "devOptional": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", + "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", + "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.hasown": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz", + "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "optional": true, + "peer": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.values": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "devOptional": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "devOptional": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "devOptional": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "devOptional": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "devOptional": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true, + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "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" + }, + "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==", + "optional": true, + "peer": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ora/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "optional": true, + "peer": true, + "dependencies": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "devOptional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "devOptional": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", + "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", + "dev": true, + "dependencies": { + "@types/retry": "^0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-retry/node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/pako": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.0.4.tgz", + "integrity": "sha512-v8tweI900AUkZN6heMU/4Uy4cXRc2AYNRggVmTR+dEncawDJgCdLMximOVA2p4qO57WMynangsfGRb5WD6L1Bg==" + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "dependencies": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-png": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/parse-png/-/parse-png-2.1.0.tgz", + "integrity": "sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==", + "optional": true, + "peer": true, + "dependencies": { + "pngjs": "^3.3.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "devOptional": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/password-prompt": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/password-prompt/-/password-prompt-1.1.2.tgz", + "integrity": "sha512-bpuBhROdrhuN3E7G/koAju0WjVw9/uQOG5Co5mokNj0MiOSBVZS1JTwM4zl55hu0WFmIEFvO9cU9sJQiBIYeIA==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-escapes": "^3.1.0", + "cross-spawn": "^6.0.5" + } + }, + "node_modules/password-prompt/node_modules/ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/password-prompt/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==", + "optional": true, + "peer": true, + "dependencies": { + "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": ">=4.8" + } + }, + "node_modules/password-prompt/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/password-prompt/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "optional": true, + "peer": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/password-prompt/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "optional": true, + "peer": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/password-prompt/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/password-prompt/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "optional": true, + "peer": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "optional": true, + "peer": true + }, + "node_modules/path-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", + "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "devOptional": true, + "engines": { + "node": ">=4" + } + }, + "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": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "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==", + "devOptional": true + }, + "node_modules/path-to-regexp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", + "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==", + "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==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "devOptional": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "devOptional": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.5.0.tgz", + "integrity": "sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "devOptional": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/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/pkg-dir/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/pkg-dir/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/pkg-dir/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/pkg-dir/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/pkg-dir/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/pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "optional": true, + "peer": true, + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "optional": true, + "peer": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "optional": true, + "peer": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "optional": true, + "peer": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-up/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "optional": true, + "peer": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/playwright-core": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.22.0.tgz", + "integrity": "sha512-XnDPiV4NCzTtXWxQdyJ6Wg8xhST3ciUjt5mITaxoqOoYggmRtofKm0PXLehfbetXh2ppPYj5U8UhtUpdIE4wag==", + "dev": true, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/plist": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.5.tgz", + "integrity": "sha512-83vX4eYdQp3vP9SxuYgEM/G/pJQqLUz/V/xzPrzruLs7fz7jxGQ1msZ/mg1nwZxUSuOp4sb+/bEIbRrbzZRxDA==", + "optional": true, + "peer": true, + "dependencies": { + "base64-js": "^1.5.1", + "xmlbuilder": "^9.0.7" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/plist/node_modules/xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", + "optional": true, + "peer": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "optional": true, + "peer": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss": { + "version": "8.4.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", + "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-colormin": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", + "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-convert-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.0.tgz", + "integrity": "sha512-GkyPbZEYJiWtQB0KZ0X6qusqFHUepguBCNFi9t5JJc7I2OTXG7C0twbTLvCfaKOLl3rSXmpAwV7W5txd91V84g==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-comments": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.1.tgz", + "integrity": "sha512-5JscyFmvkUxz/5/+TB3QTTT9Gi9jHkcn8dcmmuN68JQcv3aQg4y88yEHHhwFB52l/NkaJ43O0dbksGMAo49nfQ==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-empty": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", + "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-html": { + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-0.36.0.tgz", + "integrity": "sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==", + "dev": true, + "dependencies": { + "htmlparser2": "^3.10.0" + }, + "peerDependencies": { + "postcss": ">=5.0.0", + "postcss-syntax": ">=0.36.0" + } + }, + "node_modules/postcss-html/node_modules/dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "node_modules/postcss-html/node_modules/dom-serializer/node_modules/domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/postcss-html/node_modules/dom-serializer/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/postcss-html/node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "node_modules/postcss-html/node_modules/domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "dependencies": { + "domelementtype": "1" + } + }, + "node_modules/postcss-html/node_modules/domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/postcss-html/node_modules/entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "node_modules/postcss-html/node_modules/htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "dependencies": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "node_modules/postcss-less": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-3.1.4.tgz", + "integrity": "sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA==", + "dev": true, + "dependencies": { + "postcss": "^7.0.14" + }, + "engines": { + "node": ">=6.14.4" + } + }, + "node_modules/postcss-less/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/postcss-less/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-less/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-loader": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.0.0.tgz", + "integrity": "sha512-IDyttebFzTSY6DI24KuHUcBjbAev1i+RyICoPEWcAstZsj03r533uMXtDn506l6/wlsRYiS5XBdx7TpccCsyUg==", + "dev": true, + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.7" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-loader/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/postcss-media-query-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=", + "dev": true + }, + "node_modules/postcss-merge-longhand": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.3.tgz", + "integrity": "sha512-lX8GPGvZ0iGP/IboM7HXH5JwkXvXod1Rr8H8ixwiA372hArk0zP4ZcCy4z4Prg/bfNlbbTf0KCOjCF9kKnpP/w==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-rules": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.1.tgz", + "integrity": "sha512-8wv8q2cXjEuCcgpIB1Xx1pIy8/rhMPIQqYKNzEdyx37m6gpq83mQQdCxgIkFgliyEnKvdwJf/C61vN4tQDq4Ww==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", + "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "dev": true, + "dependencies": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-params": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.2.tgz", + "integrity": "sha512-aEP+p71S/urY48HWaRHasyx4WHQJyOYaKpQ6eXl8k0kxg66Wt/30VR6/woh8THgcpRbonJD5IeD+CzNhPi1L8g==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.0.tgz", + "integrity": "sha512-vYxvHkW+iULstA+ctVNx0VoRAR4THQQRkG77o0oa4/mBS0OzGvvzLIvHDv/nNEM0crzN2WIyFU5X7wZhaUK3RA==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-modules": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.3.1.tgz", + "integrity": "sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==", + "dev": true, + "dependencies": { + "generic-names": "^4.0.0", + "icss-replace-symbols": "^1.1.0", + "lodash.camelcase": "^4.3.0", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "string-hash": "^1.1.1" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.0.tgz", + "integrity": "sha512-8gmItgA4H5xiUxgN/3TVvXRoJxkAWLW6f/KKhdsH03atg0cB8ilXnrB5PpSshwVu/dD2ZsRFQcR1OEmSBDAgcQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.0.tgz", + "integrity": "sha512-IR3uBjc+7mcWGL6CtniKNQ4Rr5fTxwkaDHwMBDGGs1x9IVRkYIT/M4NelZWkAOBdV6v3Z9S46zqaKGlyzHSchw==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-string": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz", + "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "dev": true, + "dependencies": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", + "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-ordered-values": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.1.tgz", + "integrity": "sha512-7lxgXF0NaoMIgyihL/2boNAEZKiW0+HkMhdKMTD93CjW8TdCy2hSdj8lsAo+uwm7EDG16Da2Jdmtqpedl0cMfw==", + "dev": true, + "dependencies": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz", + "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-resolve-nested-selector": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", + "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=", + "dev": true + }, + "node_modules/postcss-safe-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", + "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", + "dev": true, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.3.3" + } + }, + "node_modules/postcss-sass": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.4.4.tgz", + "integrity": "sha512-BYxnVYx4mQooOhr+zer0qWbSPYnarAy8ZT7hAQtbxtgVf8gy+LSLT/hHGe35h14/pZDTw1DsxdbrwxBN++H+fg==", + "dev": true, + "dependencies": { + "gonzales-pe": "^4.3.0", + "postcss": "^7.0.21" + } + }, + "node_modules/postcss-sass/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/postcss-sass/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-sass/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/postcss-scss": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.3.tgz", + "integrity": "sha512-j4KxzWovfdHsyxwl1BxkUal/O4uirvHgdzMKS1aWJBAV0qh2qj5qAZqpeBfVUYGWv+4iK9Az7SPyZ4fyNju1uA==", + "dev": true, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.3.3" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-sorting": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-sorting/-/postcss-sorting-7.0.1.tgz", + "integrity": "sha512-iLBFYz6VRYyLJEJsBJ8M3TCqNcckVzz4wFounSc5Oez35ogE/X+aoC5fFu103Ot7NyvjU3/xqIXn93Gp3kJk4g==", + "dev": true, + "peerDependencies": { + "postcss": "^8.3.9" + } + }, + "node_modules/postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-syntax": { + "version": "0.36.2", + "resolved": "https://registry.npmjs.org/postcss-syntax/-/postcss-syntax-0.36.2.tgz", + "integrity": "sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==", + "dev": true, + "peerDependencies": { + "postcss": ">=5.0.0" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", + "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/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/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dev": true, + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "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==", + "devOptional": true + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "optional": true, + "peer": true, + "dependencies": { + "asap": "~2.0.3" + } + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "devOptional": true + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "devOptional": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "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==", + "devOptional": true, + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/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==", + "devOptional": true + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "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==", + "devOptional": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "node_modules/pvtsutils": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.2.2.tgz", + "integrity": "sha512-OALo5ZEdqiI127i64+CXwkCOyFHUA+tCQgaUO/MvRDFXWPr53f2sx28ECNztUEzuyu5xvuuD1EB/szg9mwJoGA==", + "dependencies": { + "tslib": "^2.3.1" + } + }, + "node_modules/pvutils": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz", + "integrity": "sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/qr-code-styling": { + "version": "1.5.1", + "resolved": "git+ssh://git@github.com/zubiden/qr-code-styling.git#10f7cf3ff854f658918b5b2bd3ed91f90627a686", + "license": "MIT", + "dependencies": { + "qrcode-generator": "^1.4.4" + } + }, + "node_modules/qrcode-generator": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/qrcode-generator/-/qrcode-generator-1.4.4.tgz", + "integrity": "sha512-HM7yY8O2ilqhmULxGMpcHSF1EhJJ9yBj8gvDEuZ6M+KGJ0YY2hKpnXvRD+hZPLrDVck3ExIGhmPtSdcjC+guuw==" + }, + "node_modules/qrcode-terminal": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.11.0.tgz", + "integrity": "sha1-/8bCii/Av7RwUrR+I/T0RqX7254=", + "optional": true, + "peer": true, + "bin": { + "qrcode-terminal": "bin/qrcode-terminal.js" + } + }, + "node_modules/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", + "dev": true, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "optional": true, + "peer": true + }, + "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==", + "devOptional": 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": "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/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.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", + "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "devOptional": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "devOptional": true, + "engines": { + "node": ">=0.10.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": ">=0.10.0" + } + }, + "node_modules/react-arborist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/react-arborist/-/react-arborist-1.2.0.tgz", + "integrity": "sha512-XVQisGeKQP7xVP71mw+PhAG0dVHFTDopw6qu+QvUiqukyLq5XFLdX6XS9cf56bSpb1zIMz6Gh+Fl/OcqlkgUsg==", + "dependencies": { + "memoize-one": "^6.0.0", + "react-dnd": "^14.0.3", + "react-dnd-html5-backend": "^14.0.1", + "react-window": "^1.8.6" + }, + "peerDependencies": { + "react": ">= 16.14", + "react-dom": ">= 16.14" + } + }, + "node_modules/react-devtools-core": { + "version": "4.24.6", + "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.24.6.tgz", + "integrity": "sha512-+6y6JAtAo1NUUxaCwCYTb13ViBpc7RjNTlj1HZRlDJmi7UYToj5+BNn8Duzz2YizzAzmRUWZkRM7OtqxnN6TnA==", + "optional": true, + "peer": true, + "dependencies": { + "shell-quote": "^1.6.1", + "ws": "^7" + } + }, + "node_modules/react-dnd": { + "version": "14.0.5", + "resolved": "https://registry.npmjs.org/react-dnd/-/react-dnd-14.0.5.tgz", + "integrity": "sha512-9i1jSgbyVw0ELlEVt/NkCUkxy1hmhJOkePoCH713u75vzHGyXhPDm28oLfc2NMSBjZRM1Y+wRjHXJT3sPrTy+A==", + "dependencies": { + "@react-dnd/invariant": "^2.0.0", + "@react-dnd/shallowequal": "^2.0.0", + "dnd-core": "14.0.1", + "fast-deep-equal": "^3.1.3", + "hoist-non-react-statics": "^3.3.2" + }, + "peerDependencies": { + "@types/hoist-non-react-statics": ">= 3.3.1", + "@types/node": ">= 12", + "@types/react": ">= 16", + "react": ">= 16.14" + }, + "peerDependenciesMeta": { + "@types/hoist-non-react-statics": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-dnd-html5-backend": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/react-dnd-html5-backend/-/react-dnd-html5-backend-14.1.0.tgz", + "integrity": "sha512-6ONeqEC3XKVf4eVmMTe0oPds+c5B9Foyj8p/ZKLb7kL2qh9COYxiBHv3szd6gztqi/efkmriywLUVlPotqoJyw==", + "dependencies": { + "dnd-core": "14.0.1" + } + }, + "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==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-dom/node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "devOptional": true + }, + "node_modules/react-native-codegen": { + "version": "0.0.17", + "resolved": "https://registry.npmjs.org/react-native-codegen/-/react-native-codegen-0.0.17.tgz", + "integrity": "sha512-7GIEUmAemH9uWwB6iYXNNsPoPgH06pxzGRmdBzK98TgFBdYJZ7CBuZFPMe4jmHQTPOkQazKZ/w5O6/71JBixmw==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/parser": "^7.14.0", + "flow-parser": "^0.121.0", + "jscodeshift": "^0.13.1", + "nullthrows": "^1.1.1" + } + }, + "node_modules/react-native-gradle-plugin": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/react-native-gradle-plugin/-/react-native-gradle-plugin-0.0.6.tgz", + "integrity": "sha512-eIlgtsmDp1jLC24dRn43hB3kEcZVqx6DUQbR0N1ABXGnMEafm9I3V3dUUeD1vh+Dy5WqijSoEwLNUPLgu5zDMg==", + "optional": true, + "peer": true + }, + "node_modules/react-refresh": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz", + "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-window": { + "version": "1.8.7", + "resolved": "https://registry.npmjs.org/react-window/-/react-window-1.8.7.tgz", + "integrity": "sha512-JHEZbPXBpKMmoNO1bNhoXOOLg/ujhL/BU4IqVU9r8eQPcy5KQnGHIHDRkJ0ns9IM5+Aq5LNwt3j8t3tIrePQzA==", + "dependencies": { + "@babel/runtime": "^7.0.0", + "memoize-one": ">=3.1.1 <6" + }, + "engines": { + "node": ">8.0.0" + }, + "peerDependencies": { + "react": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-window/node_modules/memoize-one": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", + "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" + }, + "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/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/read-pkg-up/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/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.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "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.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "devOptional": 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/readline": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz", + "integrity": "sha1-xYDXfvLPyHUrEySYBg3JeTp6wBw=", + "optional": true, + "peer": true + }, + "node_modules/recast": { + "version": "0.20.5", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.20.5.tgz", + "integrity": "sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ==", + "optional": true, + "peer": true, + "dependencies": { + "ast-types": "0.14.2", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tslib": "^2.0.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/recast/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "dependencies": { + "resolve": "^1.9.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "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/redux": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.0.tgz", + "integrity": "sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA==", + "dependencies": { + "@babel/runtime": "^7.9.2" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "devOptional": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", + "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", + "devOptional": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + }, + "node_modules/regenerator-transform": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", + "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "devOptional": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "optional": true, + "peer": true, + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz", + "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/regexpu-core": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", + "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", + "devOptional": true, + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.0.1", + "regjsgen": "^0.6.0", + "regjsparser": "^0.8.2", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/registry-auth-token": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", + "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", + "dev": true, + "dependencies": { + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "dev": true, + "dependencies": { + "rc": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regjsgen": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", + "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", + "devOptional": true + }, + "node_modules/regjsparser": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", + "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "devOptional": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "devOptional": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remark": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz", + "integrity": "sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==", + "dev": true, + "dependencies": { + "remark-parse": "^9.0.0", + "remark-stringify": "^9.0.0", + "unified": "^9.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", + "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", + "dev": true, + "dependencies": { + "mdast-util-from-markdown": "^0.8.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz", + "integrity": "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==", + "dev": true, + "dependencies": { + "mdast-util-to-markdown": "^0.6.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remove-trailing-slash": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/remove-trailing-slash/-/remove-trailing-slash-0.1.1.tgz", + "integrity": "sha512-o4S4Qh6L2jpnCy83ysZDau+VORNvnFw07CKSAymkd6ICNVEPisMyzlc00KlvvicsxKck94SEwhDnMNdICzO+tA==", + "optional": true, + "peer": true + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dev": true, + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "devOptional": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/replace-in-file": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/replace-in-file/-/replace-in-file-6.3.2.tgz", + "integrity": "sha512-Dbt5pXKvFVPL3WAaEB3ZX+95yP0CeAtIPJDwYzHbPP5EAHn+0UoegH/Wg3HKflU9dYBH8UnBC2NvY3P+9EZtTg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.2", + "glob": "^7.2.0", + "yargs": "^17.2.1" + }, + "bin": { + "replace-in-file": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/replace-in-file/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/replace-in-file/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/replace-in-file/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/replace-in-file/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/replace-in-file/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/replace-in-file/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/replace-in-file/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/replace-in-file/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/replace-in-file/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/replace-in-file/node_modules/yargs": { + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.0.tgz", + "integrity": "sha512-WJudfrk81yWFSOkZYpAZx4Nt7V4xp7S/uJkX0CnxovMCt1wCE8LNftPpNuF9X/u9gN5nsD7ycYtRcDf2pL3UiA==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/replace-in-file/node_modules/yargs-parser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "devOptional": 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==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "optional": true, + "peer": true + }, + "node_modules/requireg": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/requireg/-/requireg-0.2.2.tgz", + "integrity": "sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==", + "optional": true, + "peer": true, + "dependencies": { + "nested-error-stacks": "~2.0.1", + "rc": "~1.2.7", + "resolve": "~1.7.1" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/requireg/node_modules/resolve": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", + "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", + "optional": true, + "peer": true, + "dependencies": { + "path-parse": "^1.0.5" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "devOptional": true + }, + "node_modules/reselect": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.5.tgz", + "integrity": "sha512-uVdlz8J7OO+ASpBYoz1Zypgx0KasCY20H+N8JD13oUMtPvSHQuscrHop4KbXrbsBcdB9Ds7lVK7eRkBIfO43vQ==", + "optional": true, + "peer": true + }, + "node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "devOptional": true, + "dependencies": { + "is-core-module": "^2.8.1", + "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-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/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-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/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "deprecated": "https://github.com/lydell/resolve-url#deprecated", + "optional": true, + "peer": true + }, + "node_modules/resolve.exports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", + "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "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==", + "devOptional": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "devOptional": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "devOptional": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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==", + "devOptional": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", + "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safari-14-idb-fix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/safari-14-idb-fix/-/safari-14-idb-fix-3.0.0.tgz", + "integrity": "sha512-eBNFLob4PMq8JA1dGyFn6G97q3/WzNtFK4RnzT1fnLq+9RyrGknzYiM/9B12MnKAxuj1IXr7UKYtTNtjyKMBog==" + }, + "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==", + "devOptional": true + }, + "node_modules/safe-json-stringify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz", + "integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==", + "optional": true, + "peer": true + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "optional": true, + "peer": true, + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "devOptional": true + }, + "node_modules/sass": { + "version": "1.53.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.53.0.tgz", + "integrity": "sha512-zb/oMirbKhUgRQ0/GFz8TSAwRq2IlR29vOUJZOx0l8sV+CkHUfHa4u5nqrG+1VceZp7Jfj59SVW9ogdhTvJDcQ==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/sass-loader": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.0.2.tgz", + "integrity": "sha512-BbiqbVmbfJaWVeOOAu2o7DhYWtcNmTfvroVgFXa6k2hHheMxNAeDHLNoDy/Q5aoaVlz0LH+MbMktKwm9vN/j8Q==", + "dev": true, + "dependencies": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + } + } + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "devOptional": true + }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/scheduler": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "optional": true, + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "node_modules/selfsigned": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", + "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", + "dev": true, + "dependencies": { + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "devOptional": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", + "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "devOptional": true, + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "1.8.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "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==", + "devOptional": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "devOptional": true + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "devOptional": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/send/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==", + "devOptional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/sentence-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", + "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } + }, + "node_modules/serialize-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", + "integrity": "sha1-ULZ51WNc34Rme9yOWa9OW4HV9go=", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/serve/-/serve-13.0.2.tgz", + "integrity": "sha512-71R6fKvNgKrqARAag6lYJNnxDzpH7DCNrMuvPY5PLVaC2PDhJsGTj/34o4o4tPWhTuLgEXqvgnAWbATQ9zGZTQ==", + "dev": true, + "dependencies": { + "@zeit/schemas": "2.6.0", + "ajv": "6.12.6", + "arg": "2.0.0", + "boxen": "5.1.2", + "chalk": "2.4.1", + "clipboardy": "2.3.0", + "compression": "1.7.3", + "serve-handler": "6.1.3", + "update-check": "1.5.2" + }, + "bin": { + "serve": "bin/serve.js" + } + }, + "node_modules/serve-handler": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.3.tgz", + "integrity": "sha512-FosMqFBNrLyeiIDvP1zgO6YoTzFYHxLDEIavhlmQ+knB2Z7l1t+kGLHkZIDN7UVWqQAmKI3D20A6F6jo3nDd4w==", + "dev": true, + "dependencies": { + "bytes": "3.0.0", + "content-disposition": "0.5.2", + "fast-url-parser": "1.1.3", + "mime-types": "2.1.18", + "minimatch": "3.0.4", + "path-is-inside": "1.0.2", + "path-to-regexp": "2.2.1", + "range-parser": "1.2.0" + } + }, + "node_modules/serve-handler/node_modules/mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-handler/node_modules/mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "dev": true, + "dependencies": { + "mime-db": "~1.33.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-static": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", + "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "devOptional": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve/node_modules/chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "devOptional": true + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "optional": true, + "peer": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "optional": true, + "peer": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "optional": true, + "peer": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "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==", + "devOptional": true + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "devOptional": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", + "optional": true, + "peer": true + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "devOptional": true + }, + "node_modules/simple-plist": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-1.3.1.tgz", + "integrity": "sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==", + "optional": true, + "peer": true, + "dependencies": { + "bplist-creator": "0.1.0", + "bplist-parser": "0.3.1", + "plist": "^3.0.5" + } + }, + "node_modules/sirv": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz", + "integrity": "sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==", + "dev": true, + "dependencies": { + "@polka/url": "^1.0.0-next.20", + "mrmime": "^1.0.0", + "totalist": "^1.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "devOptional": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "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/slice-ansi/node_modules/ansi-styles": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz", + "integrity": "sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/slugify": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.5.tgz", + "integrity": "sha512-8mo9bslnBO3tr5PEVFzMPIWwWnipGS0xVbYf65zxDqfNwmzYn1LpiKNrR6DlClusuvo+hDHd1zKpmfAe83NQSQ==", + "devOptional": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "optional": true, + "peer": true, + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "optional": true, + "peer": true, + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "optional": true, + "peer": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "optional": true, + "peer": true, + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, + "peer": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "optional": true, + "peer": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "optional": true, + "peer": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "optional": true, + "peer": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "optional": true, + "peer": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, + "peer": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "optional": true, + "peer": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, + "peer": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "optional": true, + "peer": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "optional": true, + "peer": true + }, + "node_modules/snapdragon/node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "optional": true, + "peer": true, + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/socks": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", + "dev": true, + "dependencies": { + "ip": "^1.1.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.0.tgz", + "integrity": "sha512-wWqJhjb32Q6GsrUqzuFkukxb/zzide5quXYcMVpIjxalDBBYy2nqKCFQ/9+Ie4dvOYSQdOk3hUlZSdzZOd3zMQ==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", + "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dev": true, + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "devOptional": 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==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "deprecated": "See https://github.com/lydell/source-map-url#deprecated", + "optional": true, + "peer": true + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "dev": true + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/specificity": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/specificity/-/specificity-0.4.1.tgz", + "integrity": "sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==", + "dev": true, + "bin": { + "specificity": "bin/specificity" + } + }, + "node_modules/split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "optional": true, + "peer": true, + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "optional": true, + "peer": true, + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "devOptional": 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/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "node_modules/stack-utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", + "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/stackframe": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.1.tgz", + "integrity": "sha512-h88QkzREN/hy8eRdyNhhsO7RSJ5oyTqxxmmn0dzBIMUclZsjpfmrsg81vp8mjjAs2vAZ72nyWxRUwSwmh0e4xg==", + "optional": true, + "peer": true + }, + "node_modules/stacktrace-parser": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", + "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", + "optional": true, + "peer": true, + "dependencies": { + "type-fest": "^0.7.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/stacktrace-parser/node_modules/type-fest": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", + "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "optional": true, + "peer": true, + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "optional": true, + "peer": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "optional": true, + "peer": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, + "peer": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "optional": true, + "peer": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, + "peer": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "optional": true, + "peer": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "devOptional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/str2buf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/str2buf/-/str2buf-1.3.0.tgz", + "integrity": "sha512-xIBmHIUHYZDP4HyoXGHYNVmxlXLXDrtFHYT0eV6IOdEj3VO9ccaF1Ejl9Oq8iFjITllpT8FhaXb4KsNmw+3EuA==" + }, + "node_modules/stream-buffers": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz", + "integrity": "sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ=", + "optional": true, + "peer": true, + "engines": { + "node": ">= 0.10.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==", + "devOptional": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "devOptional": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/string-argv": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", + "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", + "dev": true, + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/string-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", + "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=", + "dev": true + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-natural-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", + "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==", + "dev": true + }, + "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/string-width/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/string-width/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", + "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.4.1", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "devOptional": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "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": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "devOptional": 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-hex-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha1-DF8VX+8RUTczd96du1iNoFUA428=", + "dependencies": { + "is-hex-prefixed": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/structured-headers": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/structured-headers/-/structured-headers-0.4.1.tgz", + "integrity": "sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==", + "optional": true, + "peer": true + }, + "node_modules/style-loader": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", + "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", + "dev": true, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/style-search": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", + "integrity": "sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI=", + "dev": true + }, + "node_modules/stylehacks": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", + "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/stylelint": { + "version": "14.9.1", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.9.1.tgz", + "integrity": "sha512-RdAkJdPiLqHawCSnu21nE27MjNXaVd4WcOHA4vK5GtIGjScfhNnaOuWR2wWdfKFAvcWQPOYe311iveiVKSmwsA==", + "dev": true, + "dependencies": { + "@csstools/selector-specificity": "^2.0.1", + "balanced-match": "^2.0.0", + "colord": "^2.9.2", + "cosmiconfig": "^7.0.1", + "css-functions-list": "^3.1.0", + "debug": "^4.3.4", + "execall": "^2.0.0", + "fast-glob": "^3.2.11", + "fastest-levenshtein": "^1.0.12", + "file-entry-cache": "^6.0.1", + "get-stdin": "^8.0.0", + "global-modules": "^2.0.0", + "globby": "^11.1.0", + "globjoin": "^0.1.4", + "html-tags": "^3.2.0", + "ignore": "^5.2.0", + "import-lazy": "^4.0.0", + "imurmurhash": "^0.1.4", + "is-plain-object": "^5.0.0", + "known-css-properties": "^0.25.0", + "mathml-tag-names": "^2.1.3", + "meow": "^9.0.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.14", + "postcss-media-query-parser": "^0.2.3", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-safe-parser": "^6.0.0", + "postcss-selector-parser": "^6.0.10", + "postcss-value-parser": "^4.2.0", + "resolve-from": "^5.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "style-search": "^0.1.0", + "supports-hyperlinks": "^2.2.0", + "svg-tags": "^1.0.0", + "table": "^6.8.0", + "v8-compile-cache": "^2.3.0", + "write-file-atomic": "^4.0.1" + }, + "bin": { + "stylelint": "bin/stylelint.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + } + }, + "node_modules/stylelint-config-clean-order": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/stylelint-config-clean-order/-/stylelint-config-clean-order-0.8.0.tgz", + "integrity": "sha512-/DSOrAtaCXX2Wh5M83r28jLl7VHY1JhlIdzjhxGxk/dDwKxu2ny77c5MQRZvRe3XX3dvfFqnFoCiX84F0rnzhQ==", + "dev": true, + "dependencies": { + "stylelint-order": "^5.0.0" + }, + "peerDependencies": { + "stylelint": ">=14" + } + }, + "node_modules/stylelint-config-recommended": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-7.0.0.tgz", + "integrity": "sha512-yGn84Bf/q41J4luis1AZ95gj0EQwRX8lWmGmBwkwBNSkpGSpl66XcPTulxGa/Z91aPoNGuIGBmFkcM1MejMo9Q==", + "dev": true, + "peerDependencies": { + "stylelint": "^14.4.0" + } + }, + "node_modules/stylelint-config-recommended-scss": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-6.0.0.tgz", + "integrity": "sha512-6QOe2/OzXV2AP5FE12A7+qtKdZik7Saf42SMMl84ksVBBPpTdrV+9HaCbPYiRMiwELY9hXCVdH4wlJ+YJb5eig==", + "dev": true, + "dependencies": { + "postcss-scss": "^4.0.2", + "stylelint-config-recommended": "^7.0.0", + "stylelint-scss": "^4.0.0" + }, + "peerDependencies": { + "stylelint": "^14.4.0" + } + }, + "node_modules/stylelint-declaration-block-no-ignored-properties": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/stylelint-declaration-block-no-ignored-properties/-/stylelint-declaration-block-no-ignored-properties-2.5.0.tgz", + "integrity": "sha512-UNz5nUC5GMgMb6GPc/pHUTC0+ydxTdj2mUn7XcKRdwQoiUzzUmWWdSf1aFv2UzrW4x8JYNReE1u5JOj7g0ThJw==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "stylelint": "^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0" + } + }, + "node_modules/stylelint-group-selectors": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/stylelint-group-selectors/-/stylelint-group-selectors-1.0.8.tgz", + "integrity": "sha512-h37z2JxLI+UKqSj0jNu3WbwtayB3wJCnAP1Pgr6tVgXsIX5w3vjIxU5O1AF8z90RJwNuoq2OyAjBq8DQZqwqbg==", + "dev": true, + "dependencies": { + "md5": "2.2.1", + "postcss": "^6.0.22", + "stylelint": "^13.8.0" + } + }, + "node_modules/stylelint-group-selectors/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/stylelint-group-selectors/node_modules/autoprefixer": { + "version": "9.8.8", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", + "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", + "dev": true, + "dependencies": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "picocolors": "^0.2.1", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + }, + "node_modules/stylelint-group-selectors/node_modules/autoprefixer/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/stylelint-group-selectors/node_modules/balanced-match": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", + "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", + "dev": true + }, + "node_modules/stylelint-group-selectors/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/stylelint-group-selectors/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/stylelint-group-selectors/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/stylelint-group-selectors/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/stylelint-group-selectors/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/stylelint-group-selectors/node_modules/known-css-properties": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.21.0.tgz", + "integrity": "sha512-sZLUnTqimCkvkgRS+kbPlYW5o8q5w1cu+uIisKpEWkj31I8mx8kNG162DwRav8Zirkva6N5uoFsm9kzK4mUXjw==", + "dev": true + }, + "node_modules/stylelint-group-selectors/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/stylelint-group-selectors/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/stylelint-group-selectors/node_modules/postcss-safe-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz", + "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==", + "dev": true, + "dependencies": { + "postcss": "^7.0.26" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/stylelint-group-selectors/node_modules/postcss-safe-parser/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/stylelint-group-selectors/node_modules/postcss-scss": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-2.1.1.tgz", + "integrity": "sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA==", + "dev": true, + "dependencies": { + "postcss": "^7.0.6" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/stylelint-group-selectors/node_modules/postcss-scss/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/stylelint-group-selectors/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/stylelint-group-selectors/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/stylelint-group-selectors/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/stylelint-group-selectors/node_modules/stylelint": { + "version": "13.13.1", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.13.1.tgz", + "integrity": "sha512-Mv+BQr5XTUrKqAXmpqm6Ddli6Ief+AiPZkRsIrAoUKFuq/ElkUh9ZMYxXD0iQNZ5ADghZKLOWz1h7hTClB7zgQ==", + "dev": true, + "dependencies": { + "@stylelint/postcss-css-in-js": "^0.37.2", + "@stylelint/postcss-markdown": "^0.36.2", + "autoprefixer": "^9.8.6", + "balanced-match": "^2.0.0", + "chalk": "^4.1.1", + "cosmiconfig": "^7.0.0", + "debug": "^4.3.1", + "execall": "^2.0.0", + "fast-glob": "^3.2.5", + "fastest-levenshtein": "^1.0.12", + "file-entry-cache": "^6.0.1", + "get-stdin": "^8.0.0", + "global-modules": "^2.0.0", + "globby": "^11.0.3", + "globjoin": "^0.1.4", + "html-tags": "^3.1.0", + "ignore": "^5.1.8", + "import-lazy": "^4.0.0", + "imurmurhash": "^0.1.4", + "known-css-properties": "^0.21.0", + "lodash": "^4.17.21", + "log-symbols": "^4.1.0", + "mathml-tag-names": "^2.1.3", + "meow": "^9.0.0", + "micromatch": "^4.0.4", + "normalize-selector": "^0.2.0", + "postcss": "^7.0.35", + "postcss-html": "^0.36.0", + "postcss-less": "^3.1.4", + "postcss-media-query-parser": "^0.2.3", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-safe-parser": "^4.0.2", + "postcss-sass": "^0.4.4", + "postcss-scss": "^2.1.1", + "postcss-selector-parser": "^6.0.5", + "postcss-syntax": "^0.36.2", + "postcss-value-parser": "^4.1.0", + "resolve-from": "^5.0.0", + "slash": "^3.0.0", + "specificity": "^0.4.1", + "string-width": "^4.2.2", + "strip-ansi": "^6.0.0", + "style-search": "^0.1.0", + "sugarss": "^2.0.0", + "svg-tags": "^1.0.0", + "table": "^6.6.0", + "v8-compile-cache": "^2.3.0", + "write-file-atomic": "^3.0.3" + }, + "bin": { + "stylelint": "bin/stylelint.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + } + }, + "node_modules/stylelint-group-selectors/node_modules/stylelint/node_modules/@stylelint/postcss-css-in-js": { + "version": "0.37.2", + "resolved": "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.2.tgz", + "integrity": "sha512-nEhsFoJurt8oUmieT8qy4nk81WRHmJynmVwn/Vts08PL9fhgIsMhk1GId5yAN643OzqEEb5S/6At2TZW7pqPDA==", + "dev": true, + "dependencies": { + "@babel/core": ">=7.9.0" + }, + "peerDependencies": { + "postcss": ">=7.0.0", + "postcss-syntax": ">=0.36.2" + } + }, + "node_modules/stylelint-group-selectors/node_modules/stylelint/node_modules/@stylelint/postcss-markdown": { + "version": "0.36.2", + "resolved": "https://registry.npmjs.org/@stylelint/postcss-markdown/-/postcss-markdown-0.36.2.tgz", + "integrity": "sha512-2kGbqUVJUGE8dM+bMzXG/PYUWKkjLIkRLWNh39OaADkiabDRdw8ATFCgbMz5xdIcvwspPAluSL7uY+ZiTWdWmQ==", + "deprecated": "Use the original unforked package instead: postcss-markdown", + "dev": true, + "dependencies": { + "remark": "^13.0.0", + "unist-util-find-all-after": "^3.0.2" + }, + "peerDependencies": { + "postcss": ">=7.0.0", + "postcss-syntax": ">=0.36.2" + } + }, + "node_modules/stylelint-group-selectors/node_modules/stylelint/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/stylelint-group-selectors/node_modules/stylelint/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/stylelint-group-selectors/node_modules/stylelint/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/stylelint-high-performance-animation": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/stylelint-high-performance-animation/-/stylelint-high-performance-animation-1.6.0.tgz", + "integrity": "sha512-RW3XbNLMoKcqY97NTNLXzfg4IGzCfaIf+s4aQem7BzN5IYqYLdYuU1WCqMCoiZHRILQIkrkNvcaQOAu7bA9qxw==", + "dev": true, + "peerDependencies": { + "stylelint": "^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0" + } + }, + "node_modules/stylelint-order": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-5.0.0.tgz", + "integrity": "sha512-OWQ7pmicXufDw5BlRqzdz3fkGKJPgLyDwD1rFY3AIEfIH/LQY38Vu/85v8/up0I+VPiuGRwbc2Hg3zLAsJaiyw==", + "dev": true, + "dependencies": { + "postcss": "^8.3.11", + "postcss-sorting": "^7.0.1" + }, + "peerDependencies": { + "stylelint": "^14.0.0" + } + }, + "node_modules/stylelint-scss": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-4.2.0.tgz", + "integrity": "sha512-HHHMVKJJ5RM9pPIbgJ/XA67h9H0407G68Rm69H4fzFbFkyDMcTV1Byep3qdze5+fJ3c0U7mJrbj6S0Fg072uZA==", + "dev": true, + "dependencies": { + "lodash": "^4.17.21", + "postcss-media-query-parser": "^0.2.3", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-selector-parser": "^6.0.6", + "postcss-value-parser": "^4.1.0" + }, + "peerDependencies": { + "stylelint": "^14.5.1" + } + }, + "node_modules/stylelint/node_modules/balanced-match": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", + "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", + "dev": true + }, + "node_modules/stylelint/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/stylelint/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/stylelint/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/stylelint/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/stylelint/node_modules/write-file-atomic": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.1.tgz", + "integrity": "sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/sucrase": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.21.0.tgz", + "integrity": "sha512-FjAhMJjDcifARI7bZej0Bi1yekjWQHoEvWIXhLPwDhC6O4iZ5PtGb86WV56riW87hzpgB13wwBKO9vKAiWu5VQ==", + "optional": true, + "peer": true, + "dependencies": { + "commander": "^4.0.0", + "glob": "7.1.6", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "optional": true, + "peer": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sudo-prompt": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz", + "integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==", + "optional": true, + "peer": true + }, + "node_modules/sugarss": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-2.0.0.tgz", + "integrity": "sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ==", + "dev": true, + "dependencies": { + "postcss": "^7.0.2" + } + }, + "node_modules/sugarss/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/sugarss/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/sugarss/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/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "devOptional": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", + "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "devOptional": true, + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/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==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/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==", + "devOptional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "devOptional": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-pathdata": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/svg-pathdata/-/svg-pathdata-6.0.3.tgz", + "integrity": "sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==", + "dev": true, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", + "dev": true + }, + "node_modules/svg2ttf": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/svg2ttf/-/svg2ttf-6.0.3.tgz", + "integrity": "sha512-CgqMyZrbOPpc+WqH7aga4JWkDPso23EgypLsbQ6gN3uoPWwwiLjXvzgrwGADBExvCRJrWFzAeK1bSoSpE7ixSQ==", + "dev": true, + "dependencies": { + "@xmldom/xmldom": "^0.7.2", + "argparse": "^2.0.1", + "cubic2quad": "^1.2.1", + "lodash": "^4.17.10", + "microbuffer": "^1.0.0", + "svgpath": "^2.1.5" + }, + "bin": { + "svg2ttf": "svg2ttf.js" + } + }, + "node_modules/svgicons2svgfont": { + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/svgicons2svgfont/-/svgicons2svgfont-10.0.6.tgz", + "integrity": "sha512-fUgQEVg3XwTbOHvlXahHGqCet5Wvfo1bV4DCvbSRvjsOCPCRunYbG4dUJCPegps37BMph3eOrfoobhH5AWuC6A==", + "dev": true, + "dependencies": { + "commander": "^7.2.0", + "geometry-interfaces": "^1.1.4", + "glob": "^7.1.6", + "neatequal": "^1.0.0", + "readable-stream": "^3.4.0", + "sax": "^1.2.4", + "svg-pathdata": "^6.0.0" + }, + "bin": { + "svgicons2svgfont": "bin/svgicons2svgfont.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/svgicons2svgfont/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/svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dev": true, + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/svgo/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/svgpath": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/svgpath/-/svgpath-2.5.0.tgz", + "integrity": "sha512-o/vohwqjUO9nDAh4rcjE3KaW/v//At8UJu2LJMybXidf5QLQLVA4bxH0//4YCsr+1H4Gw1Wi/Jc62ynzSBYidw==", + "dev": true + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "node_modules/table": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", + "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/table/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/table/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/table/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/table/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/table/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/table/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/table/node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/table/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/tapable": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz", + "integrity": "sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q=", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "devOptional": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "devOptional": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/temp": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz", + "integrity": "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==", + "optional": true, + "peer": true, + "dependencies": { + "rimraf": "~2.6.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/temp/node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "optional": true, + "peer": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/tempy": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.7.1.tgz", + "integrity": "sha512-vXPxwOyaNVi9nyczO16mxmHGpl6ASC5/TVhRRHpqeYHvKQm58EaWNvZXxAhR0lYYnBOQFjXjhzeLsaXdjxLjRg==", + "optional": true, + "peer": true, + "dependencies": { + "del": "^6.0.0", + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "devOptional": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.1.tgz", + "integrity": "sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ==", + "dev": true, + "dependencies": { + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", + "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "dev": true, + "dependencies": { + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.2" + }, + "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/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser-webpack-plugin/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/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/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "devOptional": true + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "optional": true, + "peer": true, + "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": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", + "optional": true, + "peer": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/throat": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", + "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", + "dev": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "devOptional": true + }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "optional": true, + "peer": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/through2/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "optional": true, + "peer": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/through2/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==", + "optional": true, + "peer": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "node_modules/timers-ext": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", + "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", + "dev": true, + "dependencies": { + "es5-ext": "~0.10.46", + "next-tick": "1" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "optional": true, + "peer": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "devOptional": 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": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "devOptional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "optional": true, + "peer": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, + "peer": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "optional": true, + "peer": true, + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.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==", + "devOptional": 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==", + "devOptional": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tonapi-sdk-js": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/tonapi-sdk-js/-/tonapi-sdk-js-0.12.0.tgz", + "integrity": "sha512-4QEgxwfVoW7VWOZw01nJJYAvtgr0V3uM+Qcm5X+20syJD5nAhOFR9UzPI9wA6kB0UJ42+SbXOznF2dIY0JG0Xw==", + "dependencies": { + "react-arborist": "^1.2.0" + } + }, + "node_modules/tonweb": { + "version": "0.0.54", + "resolved": "https://registry.npmjs.org/tonweb/-/tonweb-0.0.54.tgz", + "integrity": "sha512-1Q8ltYA182PNJc4JvOIzhAB6JGudgal0PjTiOCiBLW/RVAFVWVVj4Is+2ZJ2gUBzX2km0F/Y+Lj/ZLybAwcx9Q==", + "dependencies": { + "@ledgerhq/hw-transport-web-ble": "5.48.0", + "@ledgerhq/hw-transport-webhid": "5.48.0", + "@ledgerhq/hw-transport-webusb": "5.48.0", + "bn.js": "5.1.1", + "ethjs-unit": "0.1.6", + "isomorphic-webcrypto": "2.3.8", + "node-fetch": "2.6.7", + "tweetnacl": "1.0.3" + } + }, + "node_modules/tonweb-mnemonic": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tonweb-mnemonic/-/tonweb-mnemonic-1.0.1.tgz", + "integrity": "sha512-YQAEXQHBHb0dnNy50bwIutXwyWa6Den7+cLcXWoG7ZClcqo4bjALOr6tnIqI+hs5jab+AGSsRjilxcp8ao/CpA==", + "dependencies": { + "tweetnacl": "^1.0.3" + }, + "engines": { + "node": ">=15" + } + }, + "node_modules/totalist": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", + "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "dev": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tr46/node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/traverse": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", + "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=", + "optional": true, + "peer": true + }, + "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/trough": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "optional": true, + "peer": true + }, + "node_modules/tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "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": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "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" + } + }, + "node_modules/tsutils/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/ttf2eot": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ttf2eot/-/ttf2eot-2.0.0.tgz", + "integrity": "sha1-jmM3pYWr0WCKDISVirSDzmn2ZUs=", + "dev": true, + "dependencies": { + "argparse": "^1.0.6", + "microbuffer": "^1.0.0" + }, + "bin": { + "ttf2eot": "ttf2eot.js" + } + }, + "node_modules/ttf2eot/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/ttf2woff": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ttf2woff/-/ttf2woff-3.0.0.tgz", + "integrity": "sha512-OvmFcj70PhmAsVQKfC15XoKH55cRWuaRzvr2fpTNhTNer6JBpG8n6vOhRrIgxMjcikyYt88xqYXMMVapJ4Rjvg==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1", + "pako": "^1.0.0" + }, + "bin": { + "ttf2woff": "ttf2woff.js" + } + }, + "node_modules/ttf2woff/node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "node_modules/ttf2woff2": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/ttf2woff2/-/ttf2woff2-4.0.5.tgz", + "integrity": "sha512-zpoU0NopfjoyVqkFeQ722SyKk/n607mm5OHxuDS/wCCSy82B8H3hHXrezftA2KMbKqfJIjie2lsJHdvPnBGbsw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "bindings": "^1.5.0", + "bufferstreams": "^3.0.0", + "nan": "^2.14.2", + "node-gyp": "^9.0.0" + }, + "bin": { + "ttf2woff2": "bin/ttf2woff2.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + }, + "node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, + "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-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "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==", + "devOptional": 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==", + "devOptional": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.6.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz", + "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/ua-parser-js": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz", + "integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + } + ], + "optional": true, + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/uglify-es": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", + "deprecated": "support for ECMAScript is superseded by `uglify-js` as of v3.13.0", + "optional": true, + "peer": true, + "dependencies": { + "commander": "~2.13.0", + "source-map": "~0.6.1" + }, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/uglify-es/node_modules/commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", + "optional": true, + "peer": true + }, + "node_modules/uglify-es/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uglify-js": { + "version": "3.15.5", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.5.tgz", + "integrity": "sha512-hNM5q5GbBRB5xB+PMqVRcgYe4c8jbyZ1pzZhS6jbq54/4F2gFK869ZheiE5A8/t+W5jtTNpWef/5Q9zk639FNQ==", + "dev": true, + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "devOptional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "devOptional": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "devOptional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "devOptional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unified": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", + "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", + "dev": true, + "dependencies": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified/node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "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" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/unified/node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "optional": true, + "peer": true, + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/union-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "devOptional": 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==", + "devOptional": true, + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "optional": true, + "peer": true, + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/unist-util-find-all-after": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-3.0.2.tgz", + "integrity": "sha512-xaTC/AGZ0rIM2gM28YVRAFPIZpzbpDtU3dRmp7EXlNVA8ziQc4hY3H7BHXM1J49nEmiqc3svnqMReW+PGqbZKQ==", + "dev": true, + "dependencies": { + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "devOptional": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "devOptional": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "optional": true, + "peer": true, + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "optional": true, + "peer": true, + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "optional": true, + "peer": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/update-check": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/update-check/-/update-check-1.5.2.tgz", + "integrity": "sha512-1TrmYLuLj/5ZovwUS7fFd1jMH3NnFDN1y1A8dboedIDt7zs/zJMo6TwwlhYKkSeEwzleeiSBV5/3c9ufAQWDaQ==", + "dev": true, + "dependencies": { + "registry-auth-token": "3.3.2", + "registry-url": "3.1.0" + } + }, + "node_modules/upper-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", + "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/upper-case-first": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", + "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/uri-js/node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "deprecated": "Please see https://github.com/lydell/urix#deprecated", + "optional": true, + "peer": true + }, + "node_modules/url-join": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz", + "integrity": "sha1-TTNA6AfTdzvamZH4MFrNzCpmXSo=", + "optional": true, + "peer": true + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "optional": true, + "peer": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "devOptional": true + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "devOptional": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "devOptional": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "node_modules/v8-to-istanbul": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", + "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/v8-to-istanbul/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/valid-url": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz", + "integrity": "sha1-HBRHm0DxOXp1eC8RXkCGRHQzogA=", + "optional": true, + "peer": 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/validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "optional": true, + "peer": true, + "dependencies": { + "builtins": "^1.0.3" + } + }, + "node_modules/varstream": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/varstream/-/varstream-0.3.2.tgz", + "integrity": "sha1-GKxklHZfP/GjWtmkvgU77BiKXeE=", + "dev": true, + "dependencies": { + "readable-stream": "^1.0.33" + }, + "bin": { + "json2varstream": "cli/json2varstream.js", + "varstream2json": "cli/varstream2json.js" + }, + "engines": { + "node": ">=0.10.*" + } + }, + "node_modules/varstream/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "node_modules/varstream/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/varstream/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "devOptional": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile/node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "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" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/vlq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz", + "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==", + "optional": true, + "peer": true + }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "dependencies": { + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "devOptional": true, + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/watchpack": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "optional": true, + "peer": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webcrypto-core": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-1.7.2.tgz", + "integrity": "sha512-GUblRwka3JiP/dduk9/Hdkbm7/+ZqVPISJj9Fq1rZ/JBSInmaeVbeH0KuIy4/gtoC7aWpu6DEnYk0VhkZXmFSA==", + "dependencies": { + "@peculiar/asn1-schema": "^2.1.0", + "@peculiar/json-schema": "^1.1.12", + "asn1js": "^2.3.2", + "pvtsutils": "^1.2.2", + "tslib": "^2.3.1" + } + }, + "node_modules/webcrypto-shim": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/webcrypto-shim/-/webcrypto-shim-0.1.7.tgz", + "integrity": "sha512-JAvAQR5mRNRxZW2jKigWMjCMkjSdmP5cColRP1U/pTg69VgHXEi1orv5vVpJ55Zc5MIaPc1aaurzd9pjv2bveg==" + }, + "node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true, + "engines": { + "node": ">=10.4" + } + }, + "node_modules/webpack": { + "version": "5.72.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.1.tgz", + "integrity": "sha512-dXG5zXCLspQR4krZVR6QgajnZOjW2K/djHvdcRaDQvsjV9z9vaW6+ja5dZOYbqBBjF6kGXka/2ZyxNdc+8Jung==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.9.3", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "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-bundle-analyzer": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz", + "integrity": "sha512-GUMZlM3SKwS8Z+CKeIFx7CVoHn3dXFcUAjT/dcZQQmfSZGvitPfMob2ipjai7ovFFqPvTqkEZ/leL4O0YOdAYQ==", + "dev": true, + "dependencies": { + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "chalk": "^4.1.0", + "commander": "^7.2.0", + "gzip-size": "^6.0.0", + "lodash": "^4.17.20", + "opener": "^1.5.2", + "sirv": "^1.0.7", + "ws": "^7.3.1" + }, + "bin": { + "webpack-bundle-analyzer": "lib/bin/analyzer.js" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/webpack-bundle-analyzer/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/webpack-bundle-analyzer/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/webpack-bundle-analyzer/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/webpack-bundle-analyzer/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/webpack-bundle-analyzer/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/webpack-bundle-analyzer/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/webpack-bundle-analyzer/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/webpack-bundle-analyzer/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/webpack-cli": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz", + "integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.1.1", + "@webpack-cli/info": "^1.4.1", + "@webpack-cli/serve": "^1.6.1", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "@webpack-cli/migrate": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-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/webpack-cli/node_modules/interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz", + "integrity": "sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.1", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-middleware/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/webpack-dev-middleware/node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.9.0.tgz", + "integrity": "sha512-+Nlb39iQSOSsFv0lWUuUTim3jDQO8nhK3E68f//J2r5rIcp4lULHXz2oZ0UVdEeWXEh5lSzYUlzarZhDAeAVQw==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.1", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.0.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.4.2" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-server/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-server/node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/webpack-dev-server/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/webpack-dev-server/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/webpack-dev-server/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/enhanced-resolve": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", + "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack/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/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/whatwg-fetch": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", + "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==", + "optional": true, + "peer": true + }, + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "dependencies": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "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/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-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "optional": true, + "peer": true + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wide-align/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/wide-align/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/wide-align/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/widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, + "dependencies": { + "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/widest-line/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/widest-line/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/widest-line/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/wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "node_modules/wonka": { + "version": "4.0.15", + "resolved": "https://registry.npmjs.org/wonka/-/wonka-4.0.15.tgz", + "integrity": "sha512-U0IUQHKXXn6PFo9nqsHphVCE5m3IntqZNB9Jjn7EB1lrR7YTDY3YWgFvEvwniTzXSvOH/XMzAZaIfJF/LvHYXg==", + "optional": true, + "peer": true + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "devOptional": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "devOptional": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "devOptional": true + }, + "node_modules/wrap-ansi/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==", + "devOptional": true + }, + "node_modules/wrap-ansi/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==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/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==", + "devOptional": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "devOptional": true + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", + "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", + "devOptional": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xcode": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/xcode/-/xcode-3.0.1.tgz", + "integrity": "sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==", + "optional": true, + "peer": true, + "dependencies": { + "simple-plist": "^1.1.0", + "uuid": "^7.0.3" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/xcode/node_modules/uuid": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", + "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==", + "optional": true, + "peer": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "node_modules/xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "optional": true, + "peer": true, + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xml2js/node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "optional": true, + "peer": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xmlbuilder": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-14.0.0.tgz", + "integrity": "sha512-ts+B2rSe4fIckR6iquDjsKbQFK2NlUk6iG5nf14mDEyldgoc2nEKZ3jZWMPTxGQwVgToSjt6VGIho1H8/fNFTg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "node_modules/xmldoc": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/xmldoc/-/xmldoc-1.1.2.tgz", + "integrity": "sha512-ruPC/fyPNck2BD1dpz0AZZyrEwMOrWTO5lDdIXS91rs3wtm4j+T8Rp2o+zoOYkkAxJTZRPOSnOGei1egoRmKMQ==", + "optional": true, + "peer": true, + "dependencies": { + "sax": "^1.2.1" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "optional": true, + "peer": true, + "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==", + "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==" + }, + "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": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/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/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/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==", + "optional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", + "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", + "devOptional": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.0" + } + }, + "@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "devOptional": true, + "requires": { + "@babel/highlight": "^7.16.7" + } + }, + "@babel/compat-data": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", + "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==", + "devOptional": true + }, + "@babel/core": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.10.tgz", + "integrity": "sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA==", + "devOptional": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.10", + "@babel/helper-compilation-targets": "^7.17.10", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helpers": "^7.17.9", + "@babel/parser": "^7.17.10", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.10", + "@babel/types": "^7.17.10", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + } + }, + "@babel/eslint-parser": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.17.0.tgz", + "integrity": "sha512-PUEJ7ZBXbRkbq3qqM/jZ2nIuakUBqCYc7Qf52Lj7dlZ6zERnqisdHioL0l4wwQZnmskMeasqUNzLBFKs3nylXA==", + "dev": true, + "requires": { + "eslint-scope": "^5.1.1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.10.tgz", + "integrity": "sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg==", + "devOptional": true, + "requires": { + "@babel/types": "^7.17.10", + "@jridgewell/gen-mapping": "^0.1.0", + "jsesc": "^2.5.1" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "devOptional": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", + "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", + "devOptional": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz", + "integrity": "sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ==", + "devOptional": true, + "requires": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.20.2", + "semver": "^6.3.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz", + "integrity": "sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==", + "devOptional": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz", + "integrity": "sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==", + "devOptional": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "regexpu-core": "^5.0.1" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", + "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", + "devOptional": true, + "requires": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "devOptional": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", + "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", + "devOptional": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-function-name": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "devOptional": true, + "requires": { + "@babel/template": "^7.16.7", + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "devOptional": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", + "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", + "devOptional": true, + "requires": { + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "devOptional": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-module-transforms": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", + "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", + "devOptional": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "devOptional": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "devOptional": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", + "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", + "devOptional": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-wrap-function": "^7.16.8", + "@babel/types": "^7.16.8" + } + }, + "@babel/helper-replace-supers": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "devOptional": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-simple-access": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "devOptional": true, + "requires": { + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "devOptional": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "devOptional": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "devOptional": true + }, + "@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "devOptional": true + }, + "@babel/helper-wrap-function": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", + "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", + "devOptional": true, + "requires": { + "@babel/helper-function-name": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.8", + "@babel/types": "^7.16.8" + } + }, + "@babel/helpers": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", + "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", + "devOptional": true, + "requires": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0" + } + }, + "@babel/highlight": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "devOptional": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.10.tgz", + "integrity": "sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ==", + "devOptional": true + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz", + "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", + "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.7" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", + "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", + "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", + "devOptional": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz", + "integrity": "sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==", + "devOptional": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.17.6", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-proposal-decorators": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.8.tgz", + "integrity": "sha512-U69odN4Umyyx1xO1rTII0IDkAEC+RNlcKXtqOblfpzqy1C+aOplb76BQNq0+XdpVkOaPlpEDwd++joY8FNFJKA==", + "devOptional": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.17.6", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/plugin-syntax-decorators": "^7.17.0", + "charcodes": "^0.2.0" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", + "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-default-from": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.16.7.tgz", + "integrity": "sha512-+cENpW1rgIjExn+o5c8Jw/4BuH4eGKKYvkMB8/0ZxFQ9mC0t4z09VsPIwNg6waF69QYC81zxGeAsREGuqQoKeg==", + "optional": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-export-default-from": "^7.16.7" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", + "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", + "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", + "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", + "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", + "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz", + "integrity": "sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==", + "devOptional": true, + "requires": { + "@babel/compat-data": "^7.17.0", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.16.7" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", + "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", + "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", + "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", + "devOptional": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.10", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", + "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", + "devOptional": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", + "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", + "devOptional": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-decorators": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.0.tgz", + "integrity": "sha512-qWe85yCXsvDEluNP0OyeQjH63DlhAR3W7K9BxxU1MvbDb48tgBG+Ao6IJJ6smPDrrVzSQZrbF6donpkFBMcs3A==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-default-from": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.16.7.tgz", + "integrity": "sha512-4C3E4NsrLOgftKaTYTULhHsuQrGv3FHrBzOMDiS7UYKIpgGBkAdawg4h+EI8zPeK9M0fiIIh72hIwsI24K7MbA==", + "optional": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-flow": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.16.7.tgz", + "integrity": "sha512-UDo3YGQO0jH6ytzVwgSLv9i/CzMcUjbKenL67dTrAZPPv6GFAtDhe6jqnvmoKzC/7htNTohhos+onPtDMqJwaQ==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz", + "integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz", + "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", + "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", + "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", + "devOptional": true, + "requires": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", + "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", + "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", + "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", + "devOptional": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", + "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz", + "integrity": "sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", + "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", + "devOptional": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", + "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", + "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", + "devOptional": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-flow-strip-types": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.16.7.tgz", + "integrity": "sha512-mzmCq3cNsDpZZu9FADYYyfZJIOrSONmHcop2XEKPdBNMa4PDC4eEvcOvzZaCNcjKu72v0XQlA5y1g58aLRXdYg==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-flow": "^7.16.7" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", + "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", + "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", + "devOptional": true, + "requires": { + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", + "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", + "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", + "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", + "devOptional": true, + "requires": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz", + "integrity": "sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw==", + "devOptional": true, + "requires": { + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz", + "integrity": "sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==", + "devOptional": true, + "requires": { + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", + "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", + "devOptional": true, + "requires": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.10.tgz", + "integrity": "sha512-v54O6yLaJySCs6mGzaVOUw9T967GnH38T6CQSAtnzdNPwu84l2qAjssKzo/WSO8Yi7NF+7ekm5cVbF/5qiIgNA==", + "devOptional": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.17.0" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", + "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-object-assign": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.16.7.tgz", + "integrity": "sha512-R8mawvm3x0COTJtveuoqZIjNypn2FjfvXZr4pSQ8VhEFBuQGBz4XhHasZtHXjgXU4XptZ4HtGof3NoYc93ZH9Q==", + "optional": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", + "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", + "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", + "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz", + "integrity": "sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz", + "integrity": "sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ==", + "devOptional": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-jsx": "^7.16.7", + "@babel/types": "^7.17.0" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz", + "integrity": "sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==", + "dev": true, + "requires": { + "@babel/plugin-transform-react-jsx": "^7.16.7" + } + }, + "@babel/plugin-transform-react-jsx-self": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.16.7.tgz", + "integrity": "sha512-oe5VuWs7J9ilH3BCCApGoYjHoSO48vkjX2CbA5bFVhIuO2HKxA3vyF7rleA4o6/4rTDbk6r8hBW7Ul8E+UZrpA==", + "optional": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-react-jsx-source": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.16.7.tgz", + "integrity": "sha512-rONFiQz9vgbsnaMtQlZCjIRwhJvlrPET8TabIUK2hzlXw9B9s2Ieaxte1SCOOXMbWRHodbKixNf3BLcWVOQ8Bw==", + "optional": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-react-pure-annotations": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz", + "integrity": "sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz", + "integrity": "sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ==", + "devOptional": true, + "requires": { + "regenerator-transform": "^0.15.0" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", + "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.0.tgz", + "integrity": "sha512-fr7zPWnKXNc1xoHfrIU9mN/4XKX4VLZ45Q+oMhfsYIaHvg7mHgmhfOy/ckRWqDK7XF3QDigRpkh5DKq6+clE8A==", + "devOptional": true, + "requires": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "semver": "^6.3.0" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", + "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", + "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", + "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", + "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", + "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz", + "integrity": "sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==", + "devOptional": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-typescript": "^7.16.7" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", + "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", + "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", + "devOptional": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/preset-env": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.17.10.tgz", + "integrity": "sha512-YNgyBHZQpeoBSRBg0xixsZzfT58Ze1iZrajvv0lJc70qDDGuGfonEnMGfWeSY0mQ3JTuCWFbMkzFRVafOyJx4g==", + "devOptional": true, + "requires": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-compilation-targets": "^7.17.10", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-async-generator-functions": "^7.16.8", + "@babel/plugin-proposal-class-properties": "^7.16.7", + "@babel/plugin-proposal-class-static-block": "^7.17.6", + "@babel/plugin-proposal-dynamic-import": "^7.16.7", + "@babel/plugin-proposal-export-namespace-from": "^7.16.7", + "@babel/plugin-proposal-json-strings": "^7.16.7", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", + "@babel/plugin-proposal-numeric-separator": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.17.3", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-private-methods": "^7.16.11", + "@babel/plugin-proposal-private-property-in-object": "^7.16.7", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.7", + "@babel/plugin-transform-async-to-generator": "^7.16.8", + "@babel/plugin-transform-block-scoped-functions": "^7.16.7", + "@babel/plugin-transform-block-scoping": "^7.16.7", + "@babel/plugin-transform-classes": "^7.16.7", + "@babel/plugin-transform-computed-properties": "^7.16.7", + "@babel/plugin-transform-destructuring": "^7.17.7", + "@babel/plugin-transform-dotall-regex": "^7.16.7", + "@babel/plugin-transform-duplicate-keys": "^7.16.7", + "@babel/plugin-transform-exponentiation-operator": "^7.16.7", + "@babel/plugin-transform-for-of": "^7.16.7", + "@babel/plugin-transform-function-name": "^7.16.7", + "@babel/plugin-transform-literals": "^7.16.7", + "@babel/plugin-transform-member-expression-literals": "^7.16.7", + "@babel/plugin-transform-modules-amd": "^7.16.7", + "@babel/plugin-transform-modules-commonjs": "^7.17.9", + "@babel/plugin-transform-modules-systemjs": "^7.17.8", + "@babel/plugin-transform-modules-umd": "^7.16.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.17.10", + "@babel/plugin-transform-new-target": "^7.16.7", + "@babel/plugin-transform-object-super": "^7.16.7", + "@babel/plugin-transform-parameters": "^7.16.7", + "@babel/plugin-transform-property-literals": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.17.9", + "@babel/plugin-transform-reserved-words": "^7.16.7", + "@babel/plugin-transform-shorthand-properties": "^7.16.7", + "@babel/plugin-transform-spread": "^7.16.7", + "@babel/plugin-transform-sticky-regex": "^7.16.7", + "@babel/plugin-transform-template-literals": "^7.16.7", + "@babel/plugin-transform-typeof-symbol": "^7.16.7", + "@babel/plugin-transform-unicode-escapes": "^7.16.7", + "@babel/plugin-transform-unicode-regex": "^7.16.7", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.17.10", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.22.1", + "semver": "^6.3.0" + } + }, + "@babel/preset-flow": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.16.7.tgz", + "integrity": "sha512-6ceP7IyZdUYQ3wUVqyRSQXztd1YmFHWI4Xv11MIqAlE4WqxBSd/FZ61V9k+TS5Gd4mkHOtQtPp9ymRpxH4y1Ug==", + "optional": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-flow-strip-types": "^7.16.7" + } + }, + "@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/preset-react": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.7.tgz", + "integrity": "sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-react-display-name": "^7.16.7", + "@babel/plugin-transform-react-jsx": "^7.16.7", + "@babel/plugin-transform-react-jsx-development": "^7.16.7", + "@babel/plugin-transform-react-pure-annotations": "^7.16.7" + } + }, + "@babel/preset-typescript": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz", + "integrity": "sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-typescript": "^7.16.7" + } + }, + "@babel/register": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.17.7.tgz", + "integrity": "sha512-fg56SwvXRifootQEDQAu1mKdjh5uthPzdO0N6t358FktfL4XjAVXuH58ULoiW8mesxiOgNIrxiImqEwv0+hRRA==", + "optional": true, + "peer": true, + "requires": { + "clone-deep": "^4.0.1", + "find-cache-dir": "^2.0.0", + "make-dir": "^2.1.0", + "pirates": "^4.0.5", + "source-map-support": "^0.5.16" + }, + "dependencies": { + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "optional": true, + "peer": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "optional": true, + "peer": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "optional": true, + "peer": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "optional": true, + "peer": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "optional": true, + "peer": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "optional": true, + "peer": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "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==", + "optional": true, + "peer": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "optional": true, + "peer": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "optional": true, + "peer": true + } + } + }, + "@babel/runtime": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.8.tgz", + "integrity": "sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/runtime-corejs3": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.17.8.tgz", + "integrity": "sha512-ZbYSUvoSF6dXZmMl/CYTMOvzIFnbGfv4W3SEHYgMvNsFTeLaF2gkGAF4K2ddmtSK4Emej+0aYcnSC6N5dPCXUQ==", + "dev": true, + "requires": { + "core-js-pure": "^3.20.2", + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "devOptional": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/traverse": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.10.tgz", + "integrity": "sha512-VmbrTHQteIdUUQNTb+zE12SHS/xQVIShmBPhlNP12hD5poF2pbITW1Z4172d03HegaQWhLffdkRJYtAzp0AGcw==", + "devOptional": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.10", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.10", + "@babel/types": "^7.17.10", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.10.tgz", + "integrity": "sha512-9O26jG0mBYfGkUYCYZRnBwbVLd1UZOICEr2Em6InB6jVfsAv1GKgwXHmrSg+WFWDmeKTA6vyTZiN8tCSM5Oo3A==", + "devOptional": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "@csstools/selector-specificity": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz", + "integrity": "sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==", + "dev": true, + "requires": {} + }, + "@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true + }, + "@eslint/eslintrc": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.3.tgz", + "integrity": "sha512-uGo44hIwoLGNyduRpjdEpovcbMdd+Nv7amtmJxnKmI8xj6yd5LncmSwDa5NgX/41lIFJtkjD6YdVfgEzPfJ5UA==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.3.2", + "globals": "^13.9.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" + }, + "dependencies": { + "globals": { + "version": "13.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", + "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "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 + } + } + }, + "@expo/bunyan": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@expo/bunyan/-/bunyan-4.0.0.tgz", + "integrity": "sha512-Ydf4LidRB/EBI+YrB+cVLqIseiRfjUI/AeHBgjGMtq3GroraDu81OV7zqophRgupngoL3iS3JUMDMnxO7g39qA==", + "optional": true, + "peer": true, + "requires": { + "mv": "~2", + "safe-json-stringify": "~1", + "uuid": "^8.0.0" + } + }, + "@expo/cli": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-0.1.4.tgz", + "integrity": "sha512-A9yq0+3ntqc7eNot4QfhAtAqx8bT50uleeQfTwhCiBPlArQ+zL2sHJVR5Vy79o80PJLQ0KoP3sxsCs1nkZ6rWw==", + "optional": true, + "peer": true, + "requires": { + "@babel/runtime": "^7.14.0", + "@expo/code-signing-certificates": "^0.0.2", + "@expo/config": "~6.0.23", + "@expo/config-plugins": "~4.1.4", + "@expo/dev-server": "~0.1.110", + "@expo/devcert": "^1.0.0", + "@expo/json-file": "^8.2.35", + "@expo/metro-config": "~0.3.16", + "@expo/osascript": "^2.0.31", + "@expo/package-manager": "~0.0.52", + "@expo/plist": "^0.0.18", + "@expo/prebuild-config": "~4.0.0", + "@expo/rudder-sdk-node": "1.1.1", + "@expo/spawn-async": "1.5.0", + "@expo/xcpretty": "^4.1.1", + "@urql/core": "2.3.6", + "@urql/exchange-retry": "0.3.0", + "accepts": "^1.3.8", + "arg": "4.1.0", + "better-opn": "~3.0.2", + "bplist-parser": "^0.3.1", + "cacache": "^15.3.0", + "chalk": "^4.0.0", + "ci-info": "^3.3.0", + "env-editor": "^0.4.1", + "form-data": "^3.0.1", + "freeport-async": "2.0.0", + "fs-extra": "~8.1.0", + "getenv": "^1.0.0", + "graphql": "15.8.0", + "graphql-tag": "^2.10.1", + "internal-ip": "4.3.0", + "is-root": "^2.1.0", + "js-yaml": "^3.13.1", + "json-schema-deref-sync": "^0.13.0", + "md5-file": "^3.2.3", + "md5hex": "^1.0.0", + "minipass": "3.1.6", + "node-fetch": "^2.6.7", + "node-forge": "^1.3.1", + "npm-package-arg": "^7.0.0", + "ora": "3.4.0", + "pretty-bytes": "5.6.0", + "progress": "2.0.3", + "prompts": "^2.3.2", + "qrcode-terminal": "0.11.0", + "requireg": "^0.2.2", + "resolve-from": "^5.0.0", + "semver": "^6.3.0", + "slugify": "^1.3.4", + "structured-headers": "^0.4.1", + "tar": "^6.0.5", + "tempy": "^0.7.1", + "terminal-link": "^2.1.1", + "text-table": "^0.2.0", + "url-join": "4.0.0", + "uuid": "^3.4.0", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "optional": true, + "peer": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "arg": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz", + "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==", + "optional": true, + "peer": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "optional": true, + "peer": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "optional": true, + "peer": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "optional": true, + "peer": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "optional": true, + "peer": true, + "requires": { + "chalk": "^2.0.1" + }, + "dependencies": { + "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==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "optional": true, + "peer": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "optional": true, + "peer": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "optional": true, + "peer": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "optional": true, + "peer": true + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "optional": true, + "peer": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "ora": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", + "optional": true, + "peer": true, + "requires": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "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==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "optional": true, + "peer": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "optional": true, + "peer": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "optional": true, + "peer": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "optional": true, + "peer": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "optional": true, + "peer": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "optional": true, + "peer": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "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==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "optional": true, + "peer": true + } + } + }, + "@expo/code-signing-certificates": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@expo/code-signing-certificates/-/code-signing-certificates-0.0.2.tgz", + "integrity": "sha512-vnPHFjwOqxQ1VLztktY+fYCfwvLzjqpzKn09rchcQE7Sdf0wtW5fFtIZBEFOOY5wasp8tXSnp627zrAwazPHzg==", + "optional": true, + "peer": true, + "requires": { + "node-forge": "^1.2.1", + "nullthrows": "^1.1.1" + } + }, + "@expo/config": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-6.0.23.tgz", + "integrity": "sha512-htanDTaSgtnBrVhAfjVsj8h/t95Kj4clR/nPCm8Puf8H2M7zW6XLV4XV4Pp1fvGZxzBSP+yod+7SBhwa44Q/jQ==", + "optional": true, + "peer": true, + "requires": { + "@babel/code-frame": "~7.10.4", + "@expo/config-plugins": "4.1.4", + "@expo/config-types": "^45.0.0", + "@expo/json-file": "8.2.36", + "getenv": "^1.0.0", + "glob": "7.1.6", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "semver": "7.3.2", + "slugify": "^1.3.4", + "sucrase": "^3.20.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "optional": true, + "peer": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "optional": true, + "peer": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "optional": true, + "peer": true + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "optional": true, + "peer": true + } + } + }, + "@expo/config-plugins": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-4.1.4.tgz", + "integrity": "sha512-fkOjXnSieQfVSWVLKhst0DnCAyeHksvWky1CldFCQllhDB1HHBiP09Z8pamVB783n3qr/1HNZiSp6k2iUcaSoA==", + "optional": true, + "peer": true, + "requires": { + "@expo/config-types": "^45.0.0", + "@expo/json-file": "8.2.36", + "@expo/plist": "0.0.18", + "@expo/sdk-runtime-versions": "^1.0.0", + "@react-native/normalize-color": "^2.0.0", + "chalk": "^4.1.2", + "debug": "^4.3.1", + "find-up": "~5.0.0", + "getenv": "^1.0.0", + "glob": "7.1.6", + "resolve-from": "^5.0.0", + "semver": "^7.3.5", + "slash": "^3.0.0", + "xcode": "^3.0.1", + "xml2js": "0.4.23" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "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==", + "optional": true, + "peer": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "optional": true, + "peer": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true + }, + "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==", + "optional": true, + "peer": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "optional": true, + "peer": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "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==", + "optional": true, + "peer": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "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==", + "optional": true, + "peer": true + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "optional": true, + "peer": true + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "optional": true, + "peer": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "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==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@expo/config-types": { + "version": "45.0.0", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-45.0.0.tgz", + "integrity": "sha512-/QGhhLWyaGautgEyU50UJr5YqKJix5t77ePTwreOVAhmZH+ff3nrrtYTTnccx+qF08ZNQmfAyYMCD3rQfzpiJA==", + "optional": true, + "peer": true + }, + "@expo/dev-server": { + "version": "0.1.110", + "resolved": "https://registry.npmjs.org/@expo/dev-server/-/dev-server-0.1.110.tgz", + "integrity": "sha512-nWulXr4p69yCiR5rS9AmIuYzjIANEjGdGqyHms6vH0dBHYAESnTnlPaurSEi7CQebtXnAhi9srsJGko07wx5DA==", + "optional": true, + "peer": true, + "requires": { + "@expo/bunyan": "4.0.0", + "@expo/metro-config": "0.3.16", + "@expo/osascript": "2.0.33", + "body-parser": "1.19.0", + "chalk": "^4.0.0", + "connect": "^3.7.0", + "fs-extra": "9.0.0", + "node-fetch": "^2.6.0", + "open": "^8.3.0", + "resolve-from": "^5.0.0", + "semver": "7.3.2", + "serialize-error": "6.0.0", + "temp-dir": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "optional": true, + "peer": true, + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + } + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "optional": true, + "peer": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "optional": true, + "peer": true, + "requires": { + "ms": "2.0.0" + } + }, + "fs-extra": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz", + "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==", + "optional": true, + "peer": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "optional": true, + "peer": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "optional": true, + "peer": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "optional": true, + "peer": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "optional": true, + "peer": true + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "optional": true, + "peer": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "optional": true, + "peer": true + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "optional": true, + "peer": true + }, + "serialize-error": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-6.0.0.tgz", + "integrity": "sha512-3vmBkMZLQO+BR4RPHcyRGdE09XCF6cvxzk2N2qn8Er3F91cy8Qt7VvEbZBOpaL53qsBbe2cFOefU6tRY6WDelA==", + "optional": true, + "peer": true, + "requires": { + "type-fest": "^0.12.0" + } + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "optional": true, + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "optional": true, + "peer": true + }, + "type-fest": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.12.0.tgz", + "integrity": "sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg==", + "optional": true, + "peer": true + }, + "universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", + "optional": true, + "peer": true + } + } + }, + "@expo/devcert": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@expo/devcert/-/devcert-1.0.0.tgz", + "integrity": "sha512-cahGyQCmpZmHpn2U04NR9KwsOIZy7Rhsw8Fg4q+A6563lIJxbkrgPnxq/O3NQAh3ohEvOXOOnoFx0b4yycCkpQ==", + "optional": true, + "peer": true, + "requires": { + "application-config-path": "^0.1.0", + "command-exists": "^1.2.4", + "debug": "^3.1.0", + "eol": "^0.9.1", + "get-port": "^3.2.0", + "glob": "^7.1.2", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "password-prompt": "^1.0.4", + "rimraf": "^2.6.2", + "sudo-prompt": "^8.2.0", + "tmp": "^0.0.33", + "tslib": "^1.10.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "optional": true, + "peer": true, + "requires": { + "ms": "^2.1.1" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "optional": true, + "peer": true, + "requires": { + "glob": "^7.1.3" + } + }, + "sudo-prompt": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-8.2.5.tgz", + "integrity": "sha512-rlBo3HU/1zAJUrkY6jNxDOC9eVYliG6nS4JA8u8KAshITd07tafMc/Br7xQwCSseXwJ2iCcHCE8SNWX3q8Z+kw==", + "optional": true, + "peer": true + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true, + "peer": true + } + } + }, + "@expo/image-utils": { + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.3.20.tgz", + "integrity": "sha512-NgF/80XENyCS+amwC0P6uk1fauEtUq7gijD19jvl2xknJaADq8M2dMCRHwWMVOXosr2v46f3Z++G/NjmyOVS7A==", + "optional": true, + "peer": true, + "requires": { + "@expo/spawn-async": "1.5.0", + "chalk": "^4.0.0", + "fs-extra": "9.0.0", + "getenv": "^1.0.0", + "jimp-compact": "0.16.1", + "mime": "^2.4.4", + "node-fetch": "^2.6.0", + "parse-png": "^2.1.0", + "resolve-from": "^5.0.0", + "semver": "7.3.2", + "tempy": "0.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", + "optional": true, + "peer": true + }, + "fs-extra": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz", + "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==", + "optional": true, + "peer": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "optional": true, + "peer": true + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "optional": true, + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", + "optional": true, + "peer": true + }, + "tempy": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.3.0.tgz", + "integrity": "sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==", + "optional": true, + "peer": true, + "requires": { + "temp-dir": "^1.0.0", + "type-fest": "^0.3.1", + "unique-string": "^1.0.0" + } + }, + "type-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", + "optional": true, + "peer": true + }, + "unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "optional": true, + "peer": true, + "requires": { + "crypto-random-string": "^1.0.0" + } + }, + "universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", + "optional": true, + "peer": true + } + } + }, + "@expo/json-file": { + "version": "8.2.36", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.36.tgz", + "integrity": "sha512-tOZfTiIFA5KmMpdW9KF7bc6CFiGjb0xnbieJhTGlHrLL+ps2G0OkqmuZ3pFEXBOMnJYUVpnSy++52LFxvpa5ZQ==", + "optional": true, + "peer": true, + "requires": { + "@babel/code-frame": "~7.10.4", + "json5": "^1.0.1", + "write-file-atomic": "^2.3.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "optional": true, + "peer": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "optional": true, + "peer": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "optional": true, + "peer": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + } + } + }, + "@expo/metro-config": { + "version": "0.3.16", + "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.3.16.tgz", + "integrity": "sha512-rMYYpJibi1M8p9jGyU9f4lSNKZC6NSWzfEJsX8yd8gFbMBZV41DqyNzkrl1bx90DzYoLKB8kEPhkDdCJ8bGd/A==", + "optional": true, + "peer": true, + "requires": { + "@expo/config": "6.0.23", + "@expo/json-file": "8.2.36", + "chalk": "^4.1.0", + "debug": "^4.3.2", + "find-yarn-workspace-root": "~2.0.0", + "getenv": "^1.0.0", + "resolve-from": "^5.0.0", + "sucrase": "^3.20.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "optional": true, + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@expo/osascript": { + "version": "2.0.33", + "resolved": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.0.33.tgz", + "integrity": "sha512-FQinlwHrTlJbntp8a7NAlCKedVXe06Va/0DSLXRO8lZVtgbEMrYYSUZWQNcOlNtc58c2elNph6z9dMOYwSo3JQ==", + "optional": true, + "peer": true, + "requires": { + "@expo/spawn-async": "^1.5.0", + "exec-async": "^2.2.0" + } + }, + "@expo/package-manager": { + "version": "0.0.53", + "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-0.0.53.tgz", + "integrity": "sha512-Kg4ZWCuNCBqy6aznNGdD8rt3wSlTIHujfx+yfdm0Ewtq7uLhiyzKoMyh3RV331BdLu2YOSZpozNm2YZ/K/B0CQ==", + "optional": true, + "peer": true, + "requires": { + "@expo/json-file": "8.2.36", + "@expo/spawn-async": "^1.5.0", + "ansi-regex": "^5.0.0", + "chalk": "^4.0.0", + "find-up": "^5.0.0", + "find-yarn-workspace-root": "~2.0.0", + "npm-package-arg": "^7.0.0", + "rimraf": "^3.0.2", + "split": "^1.0.1", + "sudo-prompt": "9.1.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "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==", + "optional": true, + "peer": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true + }, + "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==", + "optional": true, + "peer": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "optional": true, + "peer": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "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==", + "optional": true, + "peer": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "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==", + "optional": true, + "peer": true + }, + "sudo-prompt": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.1.1.tgz", + "integrity": "sha512-es33J1g2HjMpyAhz8lOR+ICmXXAqTuKbuXuUWLhOLew20oN9oUCgCJx615U/v7aioZg7IX5lIh9x34vwneu4pA==", + "optional": true, + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@expo/plist": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.18.tgz", + "integrity": "sha512-+48gRqUiz65R21CZ/IXa7RNBXgAI/uPSdvJqoN9x1hfL44DNbUoWHgHiEXTx7XelcATpDwNTz6sHLfy0iNqf+w==", + "optional": true, + "peer": true, + "requires": { + "@xmldom/xmldom": "~0.7.0", + "base64-js": "^1.2.3", + "xmlbuilder": "^14.0.0" + } + }, + "@expo/prebuild-config": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-4.0.0.tgz", + "integrity": "sha512-h+4tdP94ihzp9Zz6o+k+W+RLNKQ0Lfxu1bUSLsE8u1bFTU0AWSF5sTC3yhG3ABgi+9W9DlwPMwoDGNX12bL3LA==", + "optional": true, + "peer": true, + "requires": { + "@expo/config": "6.0.23", + "@expo/config-plugins": "4.1.4", + "@expo/config-types": "^45.0.0", + "@expo/image-utils": "0.3.20", + "@expo/json-file": "8.2.36", + "debug": "^4.3.1", + "expo-modules-autolinking": "~0.7.0", + "fs-extra": "^9.0.0", + "resolve-from": "^5.0.0", + "semver": "7.3.2", + "xml2js": "0.4.23" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "optional": true, + "peer": true + }, + "expo-modules-autolinking": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-0.7.1.tgz", + "integrity": "sha512-HKPcwXuRztEjhQRHxwhLXyAblkOsSi3n7aaBV6qgrOOi0WL/E3di8E2fowlHiiQW/i9vJDemMcvq0ZTCYW+bFg==", + "optional": true, + "peer": true, + "requires": { + "chalk": "^4.1.0", + "commander": "^7.2.0", + "fast-glob": "^3.2.5", + "find-up": "^5.0.0", + "fs-extra": "^9.1.0" + } + }, + "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==", + "optional": true, + "peer": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "optional": true, + "peer": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true + }, + "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==", + "optional": true, + "peer": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "optional": true, + "peer": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "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==", + "optional": true, + "peer": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "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==", + "optional": true, + "peer": true + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "optional": true, + "peer": true + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "optional": true, + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "optional": true, + "peer": true + } + } + }, + "@expo/rudder-sdk-node": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@expo/rudder-sdk-node/-/rudder-sdk-node-1.1.1.tgz", + "integrity": "sha512-uy/hS/awclDJ1S88w9UGpc6Nm9XnNUjzOAAib1A3PVAnGQIwebg8DpFqOthFBTlZxeuV/BKbZ5jmTbtNZkp1WQ==", + "optional": true, + "peer": true, + "requires": { + "@expo/bunyan": "^4.0.0", + "@segment/loosely-validate-event": "^2.0.0", + "fetch-retry": "^4.1.1", + "md5": "^2.2.1", + "node-fetch": "^2.6.1", + "remove-trailing-slash": "^0.1.0", + "uuid": "^8.3.2" + } + }, + "@expo/sdk-runtime-versions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@expo/sdk-runtime-versions/-/sdk-runtime-versions-1.0.0.tgz", + "integrity": "sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==", + "optional": true, + "peer": true + }, + "@expo/spawn-async": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.5.0.tgz", + "integrity": "sha512-LB7jWkqrHo+5fJHNrLAFdimuSXQ2MQ4lA7SQW5bf/HbsXuV2VrT/jN/M8f/KoWt0uJMGN4k/j7Opx4AvOOxSew==", + "optional": true, + "peer": true, + "requires": { + "cross-spawn": "^6.0.5" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "optional": true, + "peer": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "optional": true, + "peer": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "optional": true, + "peer": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "optional": true, + "peer": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "optional": true, + "peer": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "optional": true, + "peer": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "@expo/vector-icons": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/@expo/vector-icons/-/vector-icons-13.0.0.tgz", + "integrity": "sha512-TI+l71+5aSKnShYclFa14Kum+hQMZ86b95SH6tQUG3qZEmLTarvWpKwqtTwQKqvlJSJrpFiSFu3eCuZokY6zWA==", + "optional": true, + "peer": true + }, + "@expo/xcpretty": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@expo/xcpretty/-/xcpretty-4.1.2.tgz", + "integrity": "sha512-B2Nu52RFpXvZejEUllXnPQtKUoUcO799FHEAAU3quTb3Q10irUxhYAI2H+xRLg3pDYZEO7w09CoNYO8zHfeQrw==", + "optional": true, + "peer": true, + "requires": { + "@babel/code-frame": "7.10.4", + "chalk": "^4.1.0", + "find-up": "^5.0.0", + "js-yaml": "^4.1.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "optional": true, + "peer": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "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==", + "optional": true, + "peer": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true + }, + "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==", + "optional": true, + "peer": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "optional": true, + "peer": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "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==", + "optional": true, + "peer": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "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==", + "optional": true, + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@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==", + "devOptional": true + }, + "@graphql-typed-document-node/core": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.1.1.tgz", + "integrity": "sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg==", + "optional": true, + "peer": true, + "requires": {} + }, + "@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "optional": true, + "peer": true + }, + "@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "optional": true, + "peer": true, + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@humanwhocodes/config-array": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@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 + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-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 + }, + "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 + }, + "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 + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jest/console": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/core": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", + "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", + "dev": true, + "requires": { + "@jest/console": "^27.5.1", + "@jest/reporters": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^27.5.1", + "jest-config": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-resolve-dependencies": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "jest-watcher": "^27.5.1", + "micromatch": "^4.0.4", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/create-cache-key-function": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-27.5.1.tgz", + "integrity": "sha512-dmH1yW+makpTSURTy8VzdUwFnfQh1G8R+DxO2Ho2FFmBbKFEVm+3jWdvFhE2VqB/LATCTokkP0dotjyQyw5/AQ==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^27.5.1" + } + }, + "@jest/environment": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "dev": true, + "requires": { + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1" + } + }, + "@jest/fake-timers": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + } + }, + "@jest/globals": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "dev": true, + "requires": { + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + } + }, + "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 + }, + "jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/reporters": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-haste-map": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "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 + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/source-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "dev": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@jest/test-result": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "dev": true, + "requires": { + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "@jest/test-sequencer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", + "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", + "dev": true, + "requires": { + "@jest/test-result": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-runtime": "^27.5.1" + } + }, + "@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "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 + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "devOptional": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "devOptional": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "devOptional": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "devOptional": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", + "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", + "devOptional": true + }, + "@jridgewell/set-array": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", + "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", + "devOptional": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", + "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", + "devOptional": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", + "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", + "devOptional": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@ledgerhq/devices": { + "version": "5.51.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/devices/-/devices-5.51.1.tgz", + "integrity": "sha512-4w+P0VkbjzEXC7kv8T1GJ/9AVaP9I6uasMZ/JcdwZBS3qwvKo5A5z9uGhP5c7TvItzcmPb44b5Mw2kT+WjUuAA==", + "requires": { + "@ledgerhq/errors": "^5.50.0", + "@ledgerhq/logs": "^5.50.0", + "rxjs": "6", + "semver": "^7.3.5" + }, + "dependencies": { + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@ledgerhq/errors": { + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/errors/-/errors-5.50.0.tgz", + "integrity": "sha512-gu6aJ/BHuRlpU7kgVpy2vcYk6atjB4iauP2ymF7Gk0ez0Y/6VSMVSJvubeEQN+IV60+OBK0JgeIZG7OiHaw8ow==" + }, + "@ledgerhq/hw-transport": { + "version": "5.51.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-5.51.1.tgz", + "integrity": "sha512-6wDYdbWrw9VwHIcoDnqWBaDFyviyjZWv6H9vz9Vyhe4Qd7TIFmbTl/eWs6hZvtZBza9K8y7zD8ChHwRI4s9tSw==", + "requires": { + "@ledgerhq/devices": "^5.51.1", + "@ledgerhq/errors": "^5.50.0", + "events": "^3.3.0" + } + }, + "@ledgerhq/hw-transport-web-ble": { + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-web-ble/-/hw-transport-web-ble-5.48.0.tgz", + "integrity": "sha512-ezgssFvxc4/UbfwIxwg9jEn0/yiND8TW6bDkaE3kAqKCa8ZYYgFtms8iRqjTOJlqcbSYkudbNhP74jtY0NxfdA==", + "requires": { + "@ledgerhq/devices": "^5.48.0", + "@ledgerhq/errors": "^5.48.0", + "@ledgerhq/hw-transport": "^5.48.0", + "@ledgerhq/logs": "^5.48.0", + "rxjs": "^6.6.7" + }, + "dependencies": { + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@ledgerhq/hw-transport-webhid": { + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-webhid/-/hw-transport-webhid-5.48.0.tgz", + "integrity": "sha512-g6TYxgPX3MqP3jQ4SJaJjlM+2SwUSk4Si/9MeKLwz5ySbiD3bSTh/Gbzv8VBCaHPO4fILujc5vW/xejJuMzR8w==", + "requires": { + "@ledgerhq/devices": "^5.48.0", + "@ledgerhq/errors": "^5.48.0", + "@ledgerhq/hw-transport": "^5.48.0", + "@ledgerhq/logs": "^5.48.0" + } + }, + "@ledgerhq/hw-transport-webusb": { + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-webusb/-/hw-transport-webusb-5.48.0.tgz", + "integrity": "sha512-tO+p11aRQx9q9ifmi/NCbCBKQ738lp+PROy1BWSzjCJcUEz1sKTLeRTLE2Xze25KebhuM2YR1NgkX5LN1z4upA==", + "requires": { + "@ledgerhq/devices": "^5.48.0", + "@ledgerhq/errors": "^5.48.0", + "@ledgerhq/hw-transport": "^5.48.0", + "@ledgerhq/logs": "^5.48.0" + } + }, + "@ledgerhq/logs": { + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/logs/-/logs-5.50.0.tgz", + "integrity": "sha512-swKHYCOZUGyVt4ge0u8a7AwNcA//h4nx5wIi0sruGye1IJ5Cva0GyK9L2/WdX+kWVTKp92ZiEo1df31lrWGPgA==" + }, + "@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "dev": true + }, + "@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==", + "devOptional": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "devOptional": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "devOptional": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@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, + "requires": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + }, + "dependencies": { + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "optional": true, + "peer": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@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==", + "optional": true, + "peer": true, + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "optional": true, + "peer": true + } + } + }, + "@peculiar/asn1-schema": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.1.0.tgz", + "integrity": "sha512-D6g4C5YRKC/iPujMAOXuZ7YGdaoMx8GsvWzfVSyx2LYeL38ECOKNywlYAuwbqQvON64lgsYdAujWQPX8hhoBLw==", + "requires": { + "@types/asn1js": "^2.0.2", + "asn1js": "^2.3.1", + "pvtsutils": "^1.2.1", + "tslib": "^2.3.1" + } + }, + "@peculiar/json-schema": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/@peculiar/json-schema/-/json-schema-1.1.12.tgz", + "integrity": "sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==", + "requires": { + "tslib": "^2.0.0" + } + }, + "@peculiar/webcrypto": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@peculiar/webcrypto/-/webcrypto-1.3.3.tgz", + "integrity": "sha512-+jkp16Hp18HkphJlMtqsQKjyDWJBh0AhDuoB+vVakuIRbkBdaFb7v26Ldm25altjiYhCyQnR5NChHxwSTvbXJw==", + "requires": { + "@peculiar/asn1-schema": "^2.1.0", + "@peculiar/json-schema": "^1.1.12", + "pvtsutils": "^1.2.2", + "tslib": "^2.3.1", + "webcrypto-core": "^1.7.2" + } + }, + "@playwright/test": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.22.0.tgz", + "integrity": "sha512-ExcAjiECo3uTG5Sl5H4a7rKp/5TEHTI87dv9NHYEoUFuOHPhSVxB7QsuM70ktO+wTTZ9KzhwzcegxAGRmUFKEA==", + "dev": true, + "requires": { + "playwright-core": "1.22.0" + } + }, + "@polka/url": { + "version": "1.0.0-next.21", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", + "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", + "dev": true + }, + "@react-dnd/asap": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@react-dnd/asap/-/asap-4.0.1.tgz", + "integrity": "sha512-kLy0PJDDwvwwTXxqTFNAAllPHD73AycE9ypWeln/IguoGBEbvFcPDbCV03G52bEcC5E+YgupBE0VzHGdC8SIXg==" + }, + "@react-dnd/invariant": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@react-dnd/invariant/-/invariant-2.0.0.tgz", + "integrity": "sha512-xL4RCQBCBDJ+GRwKTFhGUW8GXa4yoDfJrPbLblc3U09ciS+9ZJXJ3Qrcs/x2IODOdIE5kQxvMmE2UKyqUictUw==" + }, + "@react-dnd/shallowequal": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@react-dnd/shallowequal/-/shallowequal-2.0.0.tgz", + "integrity": "sha512-Pc/AFTdwZwEKJxFJvlxrSmGe/di+aAOBn60sremrpLo6VI/6cmiUYNNwlI5KNYttg7uypzA3ILPMPgxB2GYZEg==" + }, + "@react-native-community/cli-debugger-ui": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-7.0.3.tgz", + "integrity": "sha512-G4SA6jFI0j22o+j+kYP8/7sxzbCDqSp2QiHA/X5E0lsGEd2o9qN2zbIjiFr8b8k+VVAYSUONhoC0+uKuINvmkA==", + "optional": true, + "peer": true, + "requires": { + "serve-static": "^1.13.1" + } + }, + "@react-native-community/cli-hermes": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-6.3.0.tgz", + "integrity": "sha512-Uhbm9bubyZLZ12vFCIfWbE/Qi3SBTbYIN/TC08EudTLhv/KbPomCQnmFsnJ7AXQFuOZJs73mBxoEAYSbRbwyVA==", + "optional": true, + "peer": true, + "requires": { + "@react-native-community/cli-platform-android": "^6.3.0", + "@react-native-community/cli-tools": "^6.2.0", + "chalk": "^4.1.2", + "hermes-profile-transformer": "^0.0.6", + "ip": "^1.1.5" + }, + "dependencies": { + "@react-native-community/cli-platform-android": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-6.3.0.tgz", + "integrity": "sha512-d5ufyYcvrZoHznYm5bjBXaiHIJv552t5gYtQpnUsxBhHSQ8QlaNmlLUyeSPRDfOw4ND9b0tPHqs4ufwx6vp/fQ==", + "optional": true, + "peer": true, + "requires": { + "@react-native-community/cli-tools": "^6.2.0", + "chalk": "^4.1.2", + "execa": "^1.0.0", + "fs-extra": "^8.1.0", + "glob": "^7.1.3", + "jetifier": "^1.6.2", + "lodash": "^4.17.15", + "logkitty": "^0.7.1", + "slash": "^3.0.0", + "xmldoc": "^1.1.2" + } + }, + "@react-native-community/cli-tools": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-6.2.0.tgz", + "integrity": "sha512-08ssz4GMEnRxC/1FgTTN/Ud7mExQi5xMphItPjfHiTxpZPhrFn+IMx6mya0ncFEhhxQ207wYlJMRLPRRdBZ8oA==", + "optional": true, + "peer": true, + "requires": { + "appdirsjs": "^1.2.4", + "chalk": "^4.1.2", + "lodash": "^4.17.15", + "mime": "^2.4.1", + "node-fetch": "^2.6.0", + "open": "^6.2.0", + "semver": "^6.3.0", + "shell-quote": "1.6.1" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "optional": true, + "peer": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "optional": true, + "peer": true + } + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "optional": true, + "peer": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.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" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "optional": true, + "peer": true, + "requires": { + "pump": "^3.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "optional": true, + "peer": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "optional": true, + "peer": true + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "optional": true, + "peer": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "optional": true, + "peer": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "optional": true, + "peer": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "optional": true, + "peer": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "optional": true, + "peer": true + }, + "shell-quote": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", + "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "optional": true, + "peer": true, + "requires": { + "array-filter": "~0.0.0", + "array-map": "~0.0.0", + "array-reduce": "~0.0.0", + "jsonify": "~0.0.0" + } + }, + "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==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "optional": true, + "peer": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "@react-native-community/cli-platform-android": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-7.0.1.tgz", + "integrity": "sha512-nOr0aMkxAymCnbtsQwXBlyoRN2Y+IzC7Qz5T+/zyWwEbTY8SKQI8uV+8+qttUvzSvuXa2PeXsTWluuliOS8KCw==", + "optional": true, + "peer": true, + "requires": { + "@react-native-community/cli-tools": "^7.0.1", + "chalk": "^4.1.2", + "execa": "^1.0.0", + "fs-extra": "^8.1.0", + "glob": "^7.1.3", + "jetifier": "^1.6.2", + "lodash": "^4.17.15", + "logkitty": "^0.7.1", + "slash": "^3.0.0", + "xmldoc": "^1.1.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "optional": true, + "peer": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "optional": true, + "peer": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.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" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "optional": true, + "peer": true, + "requires": { + "pump": "^3.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "optional": true, + "peer": true + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "optional": true, + "peer": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "optional": true, + "peer": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "optional": true, + "peer": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "optional": true, + "peer": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "optional": true, + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "optional": true, + "peer": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "@react-native-community/cli-platform-ios": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-7.0.1.tgz", + "integrity": "sha512-PLRIbzrCzSedmpjuFtQqcqUD45G8q7sEciI1lf5zUbVMXqjIBwJWS7iz8235PyWwj8J4MNHohLC+oyRueFtbGg==", + "optional": true, + "peer": true, + "requires": { + "@react-native-community/cli-tools": "^7.0.1", + "chalk": "^4.1.2", + "execa": "^1.0.0", + "glob": "^7.1.3", + "js-yaml": "^3.13.1", + "lodash": "^4.17.15", + "ora": "^5.4.1", + "plist": "^3.0.2", + "xcode": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "optional": true, + "peer": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "optional": true, + "peer": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "optional": true, + "peer": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.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" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "optional": true, + "peer": true, + "requires": { + "pump": "^3.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "optional": true, + "peer": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "optional": true, + "peer": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "optional": true, + "peer": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "optional": true, + "peer": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "optional": true, + "peer": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "optional": true, + "peer": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "optional": true, + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "optional": true, + "peer": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "@react-native-community/cli-plugin-metro": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-7.0.3.tgz", + "integrity": "sha512-HJrEkFbxv9DNixsGwO+Q0zCcZMghDltyzeB9yQ//D5ZR4ZUEuAIPrRDdEp9xVw0WkBxAIZs6KXLux2/yPMwLhA==", + "optional": true, + "peer": true, + "requires": { + "@react-native-community/cli-server-api": "^7.0.3", + "@react-native-community/cli-tools": "^6.2.0", + "chalk": "^4.1.2", + "metro": "^0.67.0", + "metro-config": "^0.67.0", + "metro-core": "^0.67.0", + "metro-react-native-babel-transformer": "^0.67.0", + "metro-resolver": "^0.67.0", + "metro-runtime": "^0.67.0", + "readline": "^1.3.0" + }, + "dependencies": { + "@react-native-community/cli-tools": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-6.2.0.tgz", + "integrity": "sha512-08ssz4GMEnRxC/1FgTTN/Ud7mExQi5xMphItPjfHiTxpZPhrFn+IMx6mya0ncFEhhxQ207wYlJMRLPRRdBZ8oA==", + "optional": true, + "peer": true, + "requires": { + "appdirsjs": "^1.2.4", + "chalk": "^4.1.2", + "lodash": "^4.17.15", + "mime": "^2.4.1", + "node-fetch": "^2.6.0", + "open": "^6.2.0", + "semver": "^6.3.0", + "shell-quote": "1.6.1" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "optional": true, + "peer": true + }, + "open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "optional": true, + "peer": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "shell-quote": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", + "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "optional": true, + "peer": true, + "requires": { + "array-filter": "~0.0.0", + "array-map": "~0.0.0", + "array-reduce": "~0.0.0", + "jsonify": "~0.0.0" + } + }, + "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==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@react-native-community/cli-server-api": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-7.0.3.tgz", + "integrity": "sha512-JDrLsrkBgNxbG2u3fouoVGL9tKrXUrTsaNwr+oCV+3XyMwbVe42r/OaQ681/iW/7mHXjuVkDnMcp7BMg7e2yJg==", + "optional": true, + "peer": true, + "requires": { + "@react-native-community/cli-debugger-ui": "^7.0.3", + "@react-native-community/cli-tools": "^6.2.0", + "compression": "^1.7.1", + "connect": "^3.6.5", + "errorhandler": "^1.5.0", + "nocache": "^2.1.0", + "pretty-format": "^26.6.2", + "serve-static": "^1.13.1", + "ws": "^7.5.1" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "optional": true, + "peer": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@react-native-community/cli-tools": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-6.2.0.tgz", + "integrity": "sha512-08ssz4GMEnRxC/1FgTTN/Ud7mExQi5xMphItPjfHiTxpZPhrFn+IMx6mya0ncFEhhxQ207wYlJMRLPRRdBZ8oA==", + "optional": true, + "peer": true, + "requires": { + "appdirsjs": "^1.2.4", + "chalk": "^4.1.2", + "lodash": "^4.17.15", + "mime": "^2.4.1", + "node-fetch": "^2.6.0", + "open": "^6.2.0", + "semver": "^6.3.0", + "shell-quote": "1.6.1" + } + }, + "@types/yargs": { + "version": "15.0.14", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", + "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", + "optional": true, + "peer": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "optional": true, + "peer": true + }, + "open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "optional": true, + "peer": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + }, + "shell-quote": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", + "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "optional": true, + "peer": true, + "requires": { + "array-filter": "~0.0.0", + "array-map": "~0.0.0", + "array-reduce": "~0.0.0", + "jsonify": "~0.0.0" + } + }, + "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==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@react-native-community/cli-tools": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-7.0.1.tgz", + "integrity": "sha512-0xra4hKNA5PR2zYVXsDMNiXMGaDNoNRYMY6eTP2aVIxQbqIcVMDWSyCA8wMWX5iOpMWg0cZGaQ6a77f3Rlb34g==", + "optional": true, + "peer": true, + "requires": { + "appdirsjs": "^1.2.4", + "chalk": "^4.1.2", + "lodash": "^4.17.15", + "mime": "^2.4.1", + "node-fetch": "^2.6.0", + "open": "^6.2.0", + "ora": "^5.4.1", + "semver": "^6.3.0", + "shell-quote": "^1.7.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "optional": true, + "peer": true + }, + "open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "optional": true, + "peer": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "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==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@react-native-community/cli-types": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-6.0.0.tgz", + "integrity": "sha512-K493Fk2DMJC0ZM8s8gnfseKxGasIhuDaCUDeLZcoCSFlrjKEuEs1BKKEJiev0CARhKEXKOyyp/uqYM9nWhisNw==", + "optional": true, + "peer": true, + "requires": { + "ora": "^3.4.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "optional": true, + "peer": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "optional": true, + "peer": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "optional": true, + "peer": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "optional": true, + "peer": true + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "optional": true, + "peer": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "ora": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", + "optional": true, + "peer": true, + "requires": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + } + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "optional": true, + "peer": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "optional": true, + "peer": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "@react-native/assets": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@react-native/assets/-/assets-1.0.0.tgz", + "integrity": "sha512-KrwSpS1tKI70wuKl68DwJZYEvXktDHdZMG0k2AXD/rJVSlB23/X2CB2cutVR0HwNMJIal9HOUOBB2rVfa6UGtQ==", + "optional": true, + "peer": true + }, + "@react-native/normalize-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@react-native/normalize-color/-/normalize-color-2.0.0.tgz", + "integrity": "sha512-Wip/xsc5lw8vsBlmY2MO/gFLp3MvuZ2baBZjDeTjjndMgM0h5sxz7AZR62RDPGgstp8Np7JzjvVqVT7tpFZqsw==", + "optional": true, + "peer": true + }, + "@react-native/polyfills": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@react-native/polyfills/-/polyfills-2.0.0.tgz", + "integrity": "sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ==", + "optional": true, + "peer": true + }, + "@rushstack/eslint-patch": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.1.1.tgz", + "integrity": "sha512-BUyKJGdDWqvWC5GEhyOiUrGNi9iJUr4CU0O2WxJL6QJhHeeA/NVBalH+FeK0r/x/W0rPymXt5s78TDS7d6lCwg==", + "dev": true + }, + "@segment/loosely-validate-event": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@segment/loosely-validate-event/-/loosely-validate-event-2.0.0.tgz", + "integrity": "sha512-ZMCSfztDBqwotkl848ODgVcAmN4OItEWDCkshcKz0/W6gGSQayuuCtWV/MlodFivAZD793d6UgANd6wCXUfrIw==", + "optional": true, + "peer": true, + "requires": { + "component-type": "^1.2.1", + "join-component": "^1.1.0" + } + }, + "@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "optional": true, + "peer": true, + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@sideway/formula": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", + "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==", + "optional": true, + "peer": true + }, + "@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "optional": true, + "peer": true + }, + "@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "@testing-library/jest-dom": { + "version": "5.16.4", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.16.4.tgz", + "integrity": "sha512-Gy+IoFutbMQcky0k+bqqumXZ1cTGswLsFqmNLzNdSKkU9KGV2u9oXhukCbbJ9/LRPKiqwxEE8VpV/+YZlfkPUA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.9.2", + "@types/testing-library__jest-dom": "^5.9.1", + "aria-query": "^5.0.0", + "chalk": "^3.0.0", + "css": "^3.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.5.6", + "lodash": "^4.17.15", + "redent": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true + }, + "@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true + }, + "@types/asn1js": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@types/asn1js/-/asn1js-2.0.2.tgz", + "integrity": "sha512-t4YHCgtD+ERvH0FyxvNlYwJ2ezhqw7t+Ygh4urQ7dJER8i185JPv6oIM3ey5YQmGN6Zp9EMbpohkjZi9t3UxwA==" + }, + "@types/babel__core": { + "version": "7.1.19", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", + "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", + "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/chrome": { + "version": "0.0.191", + "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.191.tgz", + "integrity": "sha512-hXYHJJ1Y265xKCw0o2Kz4CnR8aUhOMdyxK1AinET4EDr3fhpEMvOFDwdqz9LUX4syfTVYWb8w7vfC12s112ehg==", + "dev": true, + "requires": { + "@types/filesystem": "*", + "@types/har-format": "*" + } + }, + "@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dev": true, + "requires": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "@types/croppie": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@types/croppie/-/croppie-2.6.1.tgz", + "integrity": "sha512-5hUL4mzuE0mzva4KXPxrvBlargTcs9bqisjQBOZ76W6FkxoCvPVvXMSwtevUhD6r+YqgBh3gumR3gBhxuc4wdQ==", + "dev": true + }, + "@types/eslint": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", + "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "dev": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true + }, + "@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "dev": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.28", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", + "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/filesystem": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/filesystem/-/filesystem-0.0.32.tgz", + "integrity": "sha512-Yuf4jR5YYMR2DVgwuCiP11s0xuVRyPKmz8vo6HBY3CGdeMj8af93CFZX+T82+VD1+UqHOxTq31lO7MI7lepBtQ==", + "dev": true, + "requires": { + "@types/filewriter": "*" + } + }, + "@types/filewriter": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/filewriter/-/filewriter-0.0.29.tgz", + "integrity": "sha512-BsPXH/irW0ht0Ji6iw/jJaK8Lj3FJemon2gvEqHKpCdDCeemHa+rI3WBGq5z7cDMZgoLjY40oninGxqk+8NzNQ==", + "dev": true + }, + "@types/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "devOptional": true, + "requires": { + "@types/node": "*" + } + }, + "@types/har-format": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@types/har-format/-/har-format-1.2.8.tgz", + "integrity": "sha512-OP6L9VuZNdskgNN3zFQQ54ceYD8OLq5IbqO4VK91ORLfOm7WdT/CiT/pHEBSQEqCInJ2y3O6iCm/zGtPElpgJQ==", + "dev": true + }, + "@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true + }, + "@types/http-proxy": { + "version": "1.17.8", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.8.tgz", + "integrity": "sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "devOptional": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "devOptional": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "devOptional": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-fUy7YRpT+rHXto1YlL+J9rs0uLGyiqVt3ZOTQR+4ROc47yNl8WLdVLgUloBRhOxP1PZvguHl44T3H0wAWxahYQ==", + "dev": true, + "requires": { + "jest-matcher-utils": "^27.0.0", + "pretty-format": "^27.0.0" + } + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true + }, + "@types/mdast": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", + "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true + }, + "@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "dev": true + }, + "@types/node": { + "version": "17.0.23", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.23.tgz", + "integrity": "sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==", + "devOptional": true + }, + "@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "@types/prettier": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.4.tgz", + "integrity": "sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA==", + "dev": true + }, + "@types/prop-types": { + "version": "15.7.4", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", + "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==", + "devOptional": true + }, + "@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "@types/react": { + "version": "18.0.9", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.9.tgz", + "integrity": "sha512-9bjbg1hJHUm4De19L1cHiW0Jvx3geel6Qczhjd0qY5VKVE2X5+x77YxAepuCwVh4vrgZJdgEJw48zrhRIeF4Nw==", + "devOptional": true, + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "@types/react-dom": { + "version": "18.0.4", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.4.tgz", + "integrity": "sha512-FgTtbqPOCI3dzZPZoC2T/sx3L34qxy99ITWn4eoSA95qPyXDMH0ALoAqUp49ITniiJFsXUVBtalh/KffMpg21Q==", + "dev": true, + "requires": { + "@types/react": "*" + } + }, + "@types/retry": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", + "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", + "dev": true + }, + "@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", + "devOptional": true + }, + "@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "requires": { + "@types/express": "*" + } + }, + "@types/serve-static": { + "version": "1.13.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "dev": true, + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "@types/testing-library__jest-dom": { + "version": "5.14.3", + "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.3.tgz", + "integrity": "sha512-oKZe+Mf4ioWlMuzVBaXQ9WDnEm1+umLx0InILg+yvZVBBDmzV5KfZyLrCvadtWcx8+916jLmHafcmqqffl+iIw==", + "dev": true, + "requires": { + "@types/jest": "*" + } + }, + "@types/unist": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", + "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", + "dev": true + }, + "@types/wicg-mediasession": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@types/wicg-mediasession/-/wicg-mediasession-1.1.3.tgz", + "integrity": "sha512-lzoszzJJfW9vcaIxf6tDx3lCJq/4oaD+mplA7sCV7W21PGdR6yUPwErN047ziIcwFx61w8WMURIwUyj1V7KJIQ==", + "dev": true + }, + "@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "devOptional": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "devOptional": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.23.0.tgz", + "integrity": "sha512-hEcSmG4XodSLiAp1uxv/OQSGsDY6QN3TcRU32gANp+19wGE1QQZLRS8/GV58VRUoXhnkuJ3ZxNQ3T6Z6zM59DA==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.23.0", + "@typescript-eslint/type-utils": "5.23.0", + "@typescript-eslint/utils": "5.23.0", + "debug": "^4.3.2", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.2.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "dependencies": { + "@typescript-eslint/scope-manager": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.23.0.tgz", + "integrity": "sha512-EhjaFELQHCRb5wTwlGsNMvzK9b8Oco4aYNleeDlNuL6qXWDF47ch4EhVNPh8Rdhf9tmqbN4sWDk/8g+Z/J8JVw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.23.0", + "@typescript-eslint/visitor-keys": "5.23.0" + } + }, + "@typescript-eslint/types": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.23.0.tgz", + "integrity": "sha512-NfBsV/h4dir/8mJwdZz7JFibaKC3E/QdeMEDJhiAE3/eMkoniZ7MjbEMCGXw6MZnZDMN3G9S0mH/6WUIj91dmw==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.23.0.tgz", + "integrity": "sha512-xE9e0lrHhI647SlGMl+m+3E3CKPF1wzvvOEWnuE3CCjjT7UiRnDGJxmAcVKJIlFgK6DY9RB98eLr1OPigPEOGg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.23.0", + "@typescript-eslint/visitor-keys": "5.23.0", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/utils": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.23.0.tgz", + "integrity": "sha512-dbgaKN21drqpkbbedGMNPCtRPZo1IOUr5EI9Jrrh99r5UW5Q0dz46RKXeSBoPV+56R6dFKpbrdhgUNSJsDDRZA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.23.0", + "@typescript-eslint/types": "5.23.0", + "@typescript-eslint/typescript-estree": "5.23.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.23.0.tgz", + "integrity": "sha512-Vd4mFNchU62sJB8pX19ZSPog05B0Y0CE2UxAZPT5k4iqhRYjPnqyY3woMxCd0++t9OTqkgjST+1ydLBi7e2Fvg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.23.0", + "eslint-visitor-keys": "^3.0.0" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/experimental-utils": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.16.0.tgz", + "integrity": "sha512-bitZtqO13XX64/UOQKoDbVg2H4VHzbHnWWlTRc7ofq7SuQyPCwEycF1Zmn5ZAMTJZ3p5uMS7xJGUdOtZK7LrNw==", + "dev": true, + "requires": { + "@typescript-eslint/utils": "5.16.0" + } + }, + "@typescript-eslint/parser": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.23.0.tgz", + "integrity": "sha512-V06cYUkqcGqpFjb8ttVgzNF53tgbB/KoQT/iB++DOIExKmzI9vBJKjZKt/6FuV9c+zrDsvJKbJ2DOCYwX91cbw==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.23.0", + "@typescript-eslint/types": "5.23.0", + "@typescript-eslint/typescript-estree": "5.23.0", + "debug": "^4.3.2" + }, + "dependencies": { + "@typescript-eslint/scope-manager": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.23.0.tgz", + "integrity": "sha512-EhjaFELQHCRb5wTwlGsNMvzK9b8Oco4aYNleeDlNuL6qXWDF47ch4EhVNPh8Rdhf9tmqbN4sWDk/8g+Z/J8JVw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.23.0", + "@typescript-eslint/visitor-keys": "5.23.0" + } + }, + "@typescript-eslint/types": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.23.0.tgz", + "integrity": "sha512-NfBsV/h4dir/8mJwdZz7JFibaKC3E/QdeMEDJhiAE3/eMkoniZ7MjbEMCGXw6MZnZDMN3G9S0mH/6WUIj91dmw==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.23.0.tgz", + "integrity": "sha512-xE9e0lrHhI647SlGMl+m+3E3CKPF1wzvvOEWnuE3CCjjT7UiRnDGJxmAcVKJIlFgK6DY9RB98eLr1OPigPEOGg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.23.0", + "@typescript-eslint/visitor-keys": "5.23.0", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.23.0.tgz", + "integrity": "sha512-Vd4mFNchU62sJB8pX19ZSPog05B0Y0CE2UxAZPT5k4iqhRYjPnqyY3woMxCd0++t9OTqkgjST+1ydLBi7e2Fvg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.23.0", + "eslint-visitor-keys": "^3.0.0" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.16.0.tgz", + "integrity": "sha512-P+Yab2Hovg8NekLIR/mOElCDPyGgFZKhGoZA901Yax6WR6HVeGLbsqJkZ+Cvk5nts/dAlFKm8PfL43UZnWdpIQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.16.0", + "@typescript-eslint/visitor-keys": "5.16.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.23.0.tgz", + "integrity": "sha512-iuI05JsJl/SUnOTXA9f4oI+/4qS/Zcgk+s2ir+lRmXI+80D8GaGwoUqs4p+X+4AxDolPpEpVUdlEH4ADxFy4gw==", + "dev": true, + "requires": { + "@typescript-eslint/utils": "5.23.0", + "debug": "^4.3.2", + "tsutils": "^3.21.0" + }, + "dependencies": { + "@typescript-eslint/scope-manager": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.23.0.tgz", + "integrity": "sha512-EhjaFELQHCRb5wTwlGsNMvzK9b8Oco4aYNleeDlNuL6qXWDF47ch4EhVNPh8Rdhf9tmqbN4sWDk/8g+Z/J8JVw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.23.0", + "@typescript-eslint/visitor-keys": "5.23.0" + } + }, + "@typescript-eslint/types": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.23.0.tgz", + "integrity": "sha512-NfBsV/h4dir/8mJwdZz7JFibaKC3E/QdeMEDJhiAE3/eMkoniZ7MjbEMCGXw6MZnZDMN3G9S0mH/6WUIj91dmw==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.23.0.tgz", + "integrity": "sha512-xE9e0lrHhI647SlGMl+m+3E3CKPF1wzvvOEWnuE3CCjjT7UiRnDGJxmAcVKJIlFgK6DY9RB98eLr1OPigPEOGg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.23.0", + "@typescript-eslint/visitor-keys": "5.23.0", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/utils": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.23.0.tgz", + "integrity": "sha512-dbgaKN21drqpkbbedGMNPCtRPZo1IOUr5EI9Jrrh99r5UW5Q0dz46RKXeSBoPV+56R6dFKpbrdhgUNSJsDDRZA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.23.0", + "@typescript-eslint/types": "5.23.0", + "@typescript-eslint/typescript-estree": "5.23.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.23.0.tgz", + "integrity": "sha512-Vd4mFNchU62sJB8pX19ZSPog05B0Y0CE2UxAZPT5k4iqhRYjPnqyY3woMxCd0++t9OTqkgjST+1ydLBi7e2Fvg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.23.0", + "eslint-visitor-keys": "^3.0.0" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/types": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.16.0.tgz", + "integrity": "sha512-oUorOwLj/3/3p/HFwrp6m/J2VfbLC8gjW5X3awpQJ/bSG+YRGFS4dpsvtQ8T2VNveV+LflQHjlLvB6v0R87z4g==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.16.0.tgz", + "integrity": "sha512-SE4VfbLWUZl9MR+ngLSARptUv2E8brY0luCdgmUevU6arZRY/KxYoLI/3V/yxaURR8tLRN7bmZtJdgmzLHI6pQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.16.0", + "@typescript-eslint/visitor-keys": "5.16.0", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/utils": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.16.0.tgz", + "integrity": "sha512-iYej2ER6AwmejLWMWzJIHy3nPJeGDuCqf8Jnb+jAQVoPpmWzwQOfa9hWVB8GIQE5gsCv/rfN4T+AYb/V06WseQ==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.16.0", + "@typescript-eslint/types": "5.16.0", + "@typescript-eslint/typescript-estree": "5.16.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.16.0.tgz", + "integrity": "sha512-jqxO8msp5vZDhikTwq9ubyMHqZ67UIvawohr4qF3KhlpL7gzSjOd+8471H3nh5LyABkaI85laEKKU8SnGUK5/g==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.16.0", + "eslint-visitor-keys": "^3.0.0" + } + }, + "@unimodules/core": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@unimodules/core/-/core-7.1.2.tgz", + "integrity": "sha512-lY+e2TAFuebD3vshHMIRqru3X4+k7Xkba4Wa7QsDBd+ex4c4N2dHAO61E2SrGD9+TRBD8w/o7mzK6ljbqRnbyg==", + "optional": true, + "requires": { + "compare-versions": "^3.4.0" + } + }, + "@unimodules/react-native-adapter": { + "version": "6.3.9", + "resolved": "https://registry.npmjs.org/@unimodules/react-native-adapter/-/react-native-adapter-6.3.9.tgz", + "integrity": "sha512-i9/9Si4AQ8awls+YGAKkByFbeAsOPgUNeLoYeh2SQ3ddjxJ5ZJDtq/I74clDnpDcn8zS9pYlcDJ9fgVJa39Glw==", + "optional": true, + "requires": { + "expo-modules-autolinking": "^0.0.3", + "invariant": "^2.2.4" + } + }, + "@urql/core": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@urql/core/-/core-2.3.6.tgz", + "integrity": "sha512-PUxhtBh7/8167HJK6WqBv6Z0piuiaZHQGYbhwpNL9aIQmLROPEdaUYkY4wh45wPQXcTpnd11l0q3Pw+TI11pdw==", + "optional": true, + "peer": true, + "requires": { + "@graphql-typed-document-node/core": "^3.1.0", + "wonka": "^4.0.14" + } + }, + "@urql/exchange-retry": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@urql/exchange-retry/-/exchange-retry-0.3.0.tgz", + "integrity": "sha512-hHqer2mcdVC0eYnVNbWyi28AlGOPb2vjH3lP3/Bc8Lc8BjhMsDwFMm7WhoP5C1+cfbr/QJ6Er3H/L08wznXxfg==", + "optional": true, + "peer": true, + "requires": { + "@urql/core": ">=2.3.1", + "wonka": "^4.0.14" + } + }, + "@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "requires": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webpack-cli/configtest": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz", + "integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==", + "dev": true, + "requires": {} + }, + "@webpack-cli/info": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.1.tgz", + "integrity": "sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==", + "dev": true, + "requires": { + "envinfo": "^7.7.3" + } + }, + "@webpack-cli/serve": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz", + "integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==", + "dev": true, + "requires": {} + }, + "@xmldom/xmldom": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.5.tgz", + "integrity": "sha512-V3BIhmY36fXZ1OtVcI9W+FxQqxVLsPKcNjWigIaa81dLC9IolJl5Mt4Cvhmr0flUnjSpTdrbMTSbXqYqV5dT6A==", + "devOptional": true + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "@zeit/schemas": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.6.0.tgz", + "integrity": "sha512-uUrgZ8AxS+Lio0fZKAipJjAh415JyrOZowliZAzmnJSsf7piVL5w+G0+gFJ0KSu3QRhvui/7zuvpLz03YjXAhg==", + "dev": true + }, + "abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "optional": true, + "peer": true, + "requires": { + "event-target-shim": "^5.0.0" + } + }, + "absolute-path": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/absolute-path/-/absolute-path-0.0.0.tgz", + "integrity": "sha1-p4di+9rftSl76ZsV01p4Wy8JW/c=", + "optional": true, + "peer": true + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "devOptional": true, + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "dev": true + }, + "acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + } + } + }, + "acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true, + "requires": {} + }, + "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, + "requires": {} + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "devOptional": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "requires": { + "ajv": "^8.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "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 + } + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "requires": {} + }, + "anser": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz", + "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==", + "optional": true, + "peer": true + }, + "ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dev": true, + "requires": { + "string-width": "^4.1.0" + }, + "dependencies": { + "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 + }, + "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 + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + } + } + }, + "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==", + "devOptional": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-fragments": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz", + "integrity": "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==", + "optional": true, + "peer": true, + "requires": { + "colorette": "^1.0.7", + "slice-ansi": "^2.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "optional": true, + "peer": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "optional": true, + "peer": true + }, + "colorette": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", + "optional": true, + "peer": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "optional": true, + "peer": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "optional": true, + "peer": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "devOptional": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "devOptional": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", + "optional": true, + "peer": true + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "devOptional": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "appdirsjs": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.6.tgz", + "integrity": "sha512-D8wJNkqMCeQs3kLasatELsddox/Xqkhp+J07iXGyL54fVN7oc+nmNfYzGuCs1IEP6uBw+TfpuO3JKwc+lECy4w==", + "optional": true, + "peer": true + }, + "application-config-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/application-config-path/-/application-config-path-0.1.0.tgz", + "integrity": "sha1-GTxfCoZUGkxm+6Hi3DhYM2LqXo8=", + "optional": true, + "peer": true + }, + "aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true + }, + "are-we-there-yet": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", + "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + } + }, + "arg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arg/-/arg-2.0.0.tgz", + "integrity": "sha512-XxNTUzKnz1ctK3ZIcI2XUPlD96wbHP2nGqkPKpvk/HNRlPveYrXIVSTk9m3LcqOgDPg3B1nMvdV/K8wZd7PG4w==", + "dev": true + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "devOptional": true + }, + "aria-query": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.0.tgz", + "integrity": "sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg==", + "dev": true + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "optional": true, + "peer": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "optional": true, + "peer": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "optional": true, + "peer": true + }, + "array-filter": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", + "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", + "optional": true, + "peer": true + }, + "array-find": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-find/-/array-find-1.0.0.tgz", + "integrity": "sha1-bI4obRHtdoMn+OYuzuhzU8o+eLg=", + "dev": true + }, + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "array-includes": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", + "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.7" + } + }, + "array-map": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", + "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", + "optional": true, + "peer": true + }, + "array-reduce": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", + "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", + "optional": true, + "peer": true + }, + "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==", + "devOptional": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "optional": true, + "peer": true + }, + "array.prototype.flat": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", + "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0" + } + }, + "array.prototype.flatmap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz", + "integrity": "sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0" + } + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "optional": true, + "peer": true + }, + "asmcrypto.js": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/asmcrypto.js/-/asmcrypto.js-0.22.0.tgz", + "integrity": "sha512-usgMoyXjMbx/ZPdzTSXExhMPur2FTdz/Vo5PVx2gIaBcdAAJNOFlsdgqveM8Cff7W0v+xrf9BwjOV26JSAF9qA==" + }, + "asn1js": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-2.3.2.tgz", + "integrity": "sha512-IYzujqcOk7fHaePpTyvD3KPAA0AjT3qZlaQAw76zmPPAV/XTjhO+tbHjbFbIQZIhw+fk9wCSfb0Z6K+JHe8Q2g==", + "requires": { + "pvutils": "latest" + } + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "optional": true, + "peer": true + }, + "ast-types": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz", + "integrity": "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==", + "optional": true, + "peer": true, + "requires": { + "tslib": "^2.0.1" + } + }, + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", + "dev": true + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, + "async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "optional": true, + "peer": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "optional": true, + "peer": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "devOptional": true + }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "optional": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "devOptional": true + }, + "autoprefixer": { + "version": "10.4.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz", + "integrity": "sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==", + "dev": true, + "requires": { + "browserslist": "^4.20.3", + "caniuse-lite": "^1.0.30001335", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + } + }, + "axe-core": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.1.tgz", + "integrity": "sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw==", + "dev": true + }, + "axobject-query": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", + "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", + "dev": true + }, + "b64-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/b64-lite/-/b64-lite-1.4.0.tgz", + "integrity": "sha512-aHe97M7DXt+dkpa8fHlCcm1CnskAHrJqEfMI0KN7dwqlzml/aUe1AGt6lk51HzrSfVD67xOso84sOpr+0wIe2w==", + "requires": { + "base-64": "^0.1.0" + } + }, + "b64u-lite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/b64u-lite/-/b64u-lite-1.1.0.tgz", + "integrity": "sha512-929qWGDVCRph7gQVTC6koHqQIpF4vtVaSbwLltFQo44B1bYUquALswZdBKFfrJCPEnsCOvWkJsPdQYZ/Ukhw8A==", + "requires": { + "b64-lite": "^1.4.0" + } + }, + "babel-core": { + "version": "7.0.0-bridge.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", + "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", + "optional": true, + "peer": true, + "requires": {} + }, + "babel-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "dev": true, + "requires": { + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "babel-loader": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", + "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", + "dev": true, + "requires": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "devOptional": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + } + }, + "babel-plugin-jest-hoist": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "dev": true, + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + } + }, + "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==", + "dev": true, + "requires": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + } + }, + "babel-plugin-module-resolver": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-module-resolver/-/babel-plugin-module-resolver-4.1.0.tgz", + "integrity": "sha512-MlX10UDheRr3lb3P0WcaIdtCSRlxdQsB1sBqL7W0raF070bGl1HQQq5K3T2vf2XAYie+ww+5AKC/WrkjRO2knA==", + "optional": true, + "peer": true, + "requires": { + "find-babel-config": "^1.2.0", + "glob": "^7.1.6", + "pkg-up": "^3.1.0", + "reselect": "^4.0.0", + "resolve": "^1.13.1" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", + "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", + "devOptional": true, + "requires": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.1", + "semver": "^6.1.1" + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", + "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", + "devOptional": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.1", + "core-js-compat": "^3.21.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", + "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", + "devOptional": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.1" + } + }, + "babel-plugin-react-native-web": { + "version": "0.17.7", + "resolved": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.17.7.tgz", + "integrity": "sha512-UBLfIsfU3vi//Ab4i0WSWAfm1whLTK9uJoH0RPZ6a67eS/h9JGYjKy7+1RpHxSBviHi9NIMiYfWseTLjyIsE1g==", + "optional": true, + "peer": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "7.0.0-beta.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz", + "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==", + "optional": true, + "peer": true + }, + "babel-plugin-transform-react-remove-prop-types": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", + "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==", + "dev": true + }, + "babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + } + }, + "babel-preset-expo": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-9.1.0.tgz", + "integrity": "sha512-dFcgT7AY5n15bLnfOM6R25f8Lh7YSALj4zeGze6aspYHfVrREYcovVG0eMGpY9V24fnwByNRv85lElc1jAj1Mw==", + "optional": true, + "peer": true, + "requires": { + "@babel/plugin-proposal-decorators": "^7.12.9", + "@babel/plugin-transform-react-jsx": "^7.12.17", + "@babel/preset-env": "^7.12.9", + "babel-plugin-module-resolver": "^4.1.0", + "babel-plugin-react-native-web": "~0.17.1", + "metro-react-native-babel-preset": "~0.67.0" + } + }, + "babel-preset-fbjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz", + "integrity": "sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==", + "optional": true, + "peer": true, + "requires": { + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/plugin-syntax-class-properties": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-block-scoped-functions": "^7.0.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.0.0", + "@babel/plugin-transform-flow-strip-types": "^7.0.0", + "@babel/plugin-transform-for-of": "^7.0.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-member-expression-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-object-super": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-property-literals": "^7.0.0", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-template-literals": "^7.0.0", + "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0" + } + }, + "babel-preset-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^27.5.1", + "babel-preset-current-node-syntax": "^1.0.0" + } + }, + "babel-preset-react-app": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz", + "integrity": "sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==", + "dev": true, + "requires": { + "@babel/core": "^7.16.0", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-decorators": "^7.16.4", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-transform-flow-strip-types": "^7.16.0", + "@babel/plugin-transform-react-display-name": "^7.16.0", + "@babel/plugin-transform-runtime": "^7.16.4", + "@babel/preset-env": "^7.16.4", + "@babel/preset-react": "^7.16.0", + "@babel/preset-typescript": "^7.16.0", + "@babel/runtime": "^7.16.3", + "babel-plugin-macros": "^3.1.0", + "babel-plugin-transform-react-remove-prop-types": "^0.4.24" + } + }, + "bail": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "devOptional": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "optional": true, + "peer": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "optional": true, + "peer": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "base-64": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/base-64/-/base-64-0.1.0.tgz", + "integrity": "sha1-eAqZyE59YAJgNhURxId2E78k9rs=" + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "optional": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "better-opn": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", + "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==", + "optional": true, + "peer": true, + "requires": { + "open": "^8.0.4" + } + }, + "big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "optional": true, + "peer": true + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "optional": true, + "peer": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "blueimp-md5": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz", + "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==", + "optional": true, + "peer": true + }, + "bn.js": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.1.tgz", + "integrity": "sha512-IUTD/REb78Z2eodka1QZyyEk66pciRcP6Sroka0aI3tG/iwIdYLrBD62RsubR7vqdt3WyX8p4jxeatzmRSphtA==" + }, + "body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.9.7", + "raw-body": "2.4.3", + "type-is": "~1.6.18" + }, + "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "bonjour-service": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.12.tgz", + "integrity": "sha512-pMmguXYCu63Ug37DluMKEHdxc+aaIf/ay4YbF8Gxtba+9d3u+rmEWy61VK3Z3hp8Rskok3BunHYnG0dUHAsblw==", + "dev": true, + "requires": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.4" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "boxen": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "dev": true, + "requires": { + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "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 + }, + "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 + }, + "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 + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "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 + } + } + }, + "bplist-creator": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.1.0.tgz", + "integrity": "sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==", + "optional": true, + "peer": true, + "requires": { + "stream-buffers": "2.2.x" + } + }, + "bplist-parser": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.1.tgz", + "integrity": "sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==", + "optional": true, + "peer": true, + "requires": { + "big-integer": "1.6.x" + } + }, + "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, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "devOptional": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "browserlist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserlist/-/browserlist-1.0.1.tgz", + "integrity": "sha512-nYq9jiWv+qXcgrJxQzivfEc7Wo2GvAKkeRViE5L3cUJpq4SZO6NZR710I/8T+OjE5BPECbzpm8rpUkwslE3nTg==", + "dev": true, + "requires": { + "chalk": "^2.4.1" + } + }, + "browserslist": { + "version": "4.20.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", + "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", + "devOptional": true, + "requires": { + "caniuse-lite": "^1.0.30001332", + "electron-to-chromium": "^1.4.118", + "escalade": "^3.1.1", + "node-releases": "^2.0.3", + "picocolors": "^1.0.0" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "devOptional": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "optional": true, + "peer": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "optional": true, + "peer": true, + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "optional": true, + "peer": true + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "optional": true, + "peer": true + }, + "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==", + "devOptional": true + }, + "bufferstreams": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bufferstreams/-/bufferstreams-3.0.0.tgz", + "integrity": "sha512-Qg0ggJUWJq90vtg4lDsGN9CDWvzBMQxhiEkSOD/sJfYt6BLect3eV1/S6K7SCSKJ34n60rf6U5eUPmQENVE4UA==", + "dev": true, + "requires": { + "readable-stream": "^3.4.0" + } + }, + "builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", + "optional": true, + "peer": true + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "devOptional": true + }, + "cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "optional": true, + "peer": true, + "requires": { + "@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" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "optional": true, + "peer": true + } + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "optional": true, + "peer": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "devOptional": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "optional": true, + "peer": true, + "requires": { + "callsites": "^2.0.0" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "optional": true, + "peer": true + } + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "optional": true, + "peer": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "requires": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "devOptional": true + }, + "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, + "requires": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + } + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001340", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001340.tgz", + "integrity": "sha512-jUNz+a9blQTQVu4uFcn17uAD8IDizPzQkIKh3LCJfg9BkyIqExYYdyc/ZSlWUSKb8iYiXxKsxbv4zYSvkqjrxw==", + "devOptional": true + }, + "capital-case": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", + "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "devOptional": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "change-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", + "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", + "dev": true, + "requires": { + "camel-case": "^4.1.2", + "capital-case": "^1.0.4", + "constant-case": "^3.0.4", + "dot-case": "^3.0.4", + "header-case": "^2.0.4", + "no-case": "^3.0.4", + "param-case": "^3.0.4", + "pascal-case": "^3.1.2", + "path-case": "^3.0.4", + "sentence-case": "^3.0.4", + "snake-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true + }, + "character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true + }, + "character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true + }, + "character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true + }, + "charcodes": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/charcodes/-/charcodes-0.2.0.tgz", + "integrity": "sha512-Y4kiDb+AM4Ecy58YkuZrrSRJBDQdQ2L+NyS1vHHFtNtUjgutcZfx3yp1dAONI/oPaPmyGfCLx5CxL+zauIMyKQ==", + "devOptional": true + }, + "charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=", + "devOptional": true + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "devOptional": true + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true + }, + "ci-info": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", + "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "devOptional": true + }, + "cjs-module-lexer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "optional": true, + "peer": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "optional": true, + "peer": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "optional": true, + "peer": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, + "peer": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "optional": true, + "peer": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, + "peer": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "optional": true, + "peer": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "optional": true, + "peer": true + } + } + }, + "clean-css": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.2.4.tgz", + "integrity": "sha512-nKseG8wCzEuji/4yrgM/5cthL9oTDc5UOQyFMvW/Q53oP6gLH690o1NbuTh6Y18nujr7BxlsFuS7gXLnLzKJGg==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "devOptional": true + }, + "cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "dev": true + }, + "cli-color": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.2.tgz", + "integrity": "sha512-g4JYjrTW9MGtCziFNjkqp3IMpGhnJyeB0lOtRPjQkYhXzKYr6tYnXKyEVnMzITxhpbahsEW9KsxOYIDKwcsIBw==", + "dev": true, + "requires": { + "d": "^1.0.1", + "es5-ext": "^0.10.59", + "es6-iterator": "^2.0.3", + "memoizee": "^0.4.15", + "timers-ext": "^0.1.7" + } + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "devOptional": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "optional": true, + "peer": true + }, + "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, + "requires": { + "slice-ansi": "^5.0.0", + "string-width": "^5.0.0" + } + }, + "clipboardy": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz", + "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", + "dev": true, + "requires": { + "arch": "^2.1.1", + "execa": "^1.0.0", + "is-wsl": "^2.1.1" + }, + "dependencies": { + "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, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.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" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "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 + }, + "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 + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + } + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "optional": true, + "peer": true + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "devOptional": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "dependencies": { + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "devOptional": true, + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "clone-regexp": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-2.2.0.tgz", + "integrity": "sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q==", + "dev": true, + "requires": { + "is-regexp": "^2.0.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "optional": true, + "peer": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "devOptional": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "devOptional": true + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, + "colord": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz", + "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==", + "dev": true + }, + "colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "devOptional": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", + "optional": true, + "peer": true + }, + "commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "devOptional": true + }, + "compare-versions": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", + "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", + "optional": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "optional": true, + "peer": true + }, + "component-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-type/-/component-type-1.2.1.tgz", + "integrity": "sha1-ikeQFwAjjk/DIml3EjAibyS0Fak=", + "optional": true, + "peer": true + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "devOptional": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz", + "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==", + "devOptional": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.14", + "debug": "2.6.9", + "on-headers": "~1.0.1", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "devOptional": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "devOptional": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "devOptional": true + }, + "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 + }, + "connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "optional": true, + "peer": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "optional": true, + "peer": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "optional": true, + "peer": true + } + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "constant-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", + "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case": "^2.0.2" + } + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", + "dev": true + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "devOptional": true + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "devOptional": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "optional": true, + "peer": true + }, + "copy-webpack-plugin": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", + "dev": true, + "requires": { + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.1", + "globby": "^13.1.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "globby": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz", + "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==", + "dev": true, + "requires": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" + } + }, + "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 + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + }, + "slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true + } + } + }, + "core-js-compat": { + "version": "3.22.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.5.tgz", + "integrity": "sha512-rEF75n3QtInrYICvJjrAgV03HwKiYvtKHdPtaba1KucG+cNZ4NJnH9isqt979e67KZlhpbCOTwnsvnIr+CVeOg==", + "devOptional": true, + "requires": { + "browserslist": "^4.20.3", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "devOptional": true + } + } + }, + "core-js-pure": { + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.21.1.tgz", + "integrity": "sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ==", + "dev": true + }, + "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==", + "devOptional": true + }, + "cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "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, + "requires": { + "cross-spawn": "^7.0.1" + } + }, + "cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "optional": true, + "peer": true, + "requires": { + "node-fetch": "2.6.7" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=", + "devOptional": true + }, + "crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "optional": true, + "peer": true + }, + "css": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", + "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "source-map": "^0.6.1", + "source-map-resolve": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "css-declaration-sorter": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.2.2.tgz", + "integrity": "sha512-Ufadglr88ZLsrvS11gjeu/40Lw74D9Am/Jpr3LlYm5Q4ZP5KdlUhG+6u2EjyXeZcxmZ2h1ebCKngDjolpeLHpg==", + "dev": true, + "requires": {} + }, + "css-functions-list": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.1.0.tgz", + "integrity": "sha512-/9lCvYZaUbBGvYUgYGFJ4dcYiyqdhSjG7IPVluoV8A1ILjkF7ilmhp1OGUz8n+nmBcu0RNrQAzgD8B6FJbrt2w==", + "dev": true + }, + "css-loader": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz", + "integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==", + "dev": true, + "requires": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.7", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.5" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "css-minimizer-webpack-plugin": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz", + "integrity": "sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==", + "dev": true, + "requires": { + "cssnano": "^5.0.6", + "jest-worker": "^27.0.2", + "postcss": "^8.3.5", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "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 + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + }, + "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 + } + } + }, + "css-select": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", + "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^5.1.0", + "domhandler": "^4.3.0", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "css-what": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", + "dev": true + }, + "css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "cssnano": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.5.tgz", + "integrity": "sha512-VZO1e+bRRVixMeia1zKagrv0lLN1B/r/u12STGNNUFxnp97LIFgZHQa0JxqlwEkvzUyA9Oz/WnCTAFkdEbONmg==", + "dev": true, + "requires": { + "cssnano-preset-default": "^5.2.5", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + } + }, + "cssnano-preset-default": { + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.5.tgz", + "integrity": "sha512-WopL7PzN7sos3X8B54/QGl+CZUh1f0qN4ds+y2d5EPwRSSc3jsitVw81O+Uyop0pXyOfPfZxnc+LmA8w/Ki/WQ==", + "dev": true, + "requires": { + "css-declaration-sorter": "^6.0.3", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.0", + "postcss-convert-values": "^5.1.0", + "postcss-discard-comments": "^5.1.1", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.3", + "postcss-merge-rules": "^5.1.1", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.2", + "postcss-minify-selectors": "^5.2.0", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.0", + "postcss-normalize-repeat-style": "^5.1.0", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.0", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.1", + "postcss-reduce-initial": "^5.1.0", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" + } + }, + "cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "dev": true, + "requires": {} + }, + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "requires": { + "css-tree": "^1.1.2" + } + }, + "cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + } + } + }, + "csstype": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.11.tgz", + "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==", + "devOptional": true + }, + "cubic2quad": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/cubic2quad/-/cubic2quad-1.2.1.tgz", + "integrity": "sha512-wT5Y7mO8abrV16gnssKdmIhIbA9wSkeMzhh27jAguKrV82i24wER0vL5TGhUJ9dbJNDcigoRZ0IAHFEEEI4THQ==", + "dev": true + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "dag-map": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/dag-map/-/dag-map-1.0.2.tgz", + "integrity": "sha1-6DefBBAA7VYfxRVHXB7SyF7s6Nc=", + "optional": true, + "peer": true + }, + "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 + }, + "data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "requires": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + } + }, + "dayjs": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.2.tgz", + "integrity": "sha512-F4LXf1OeU9hrSYRPTTj/6FbO4HTjPKXvEIC1P2kcnFurViINCVk3ZV0xAS3XVx9MkMsXbbqlK6hjseaYbgKEHw==", + "optional": true, + "peer": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "devOptional": true, + "requires": { + "ms": "2.1.2" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "devOptional": true + } + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "devOptional": true + }, + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "dev": true, + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + } + } + }, + "decimal.js": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", + "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "devOptional": true + }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "devOptional": true + }, + "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 + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, + "default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "requires": { + "execa": "^5.0.0" + } + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "optional": true, + "peer": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "devOptional": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "devOptional": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "optional": true, + "peer": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "del": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", + "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", + "optional": true, + "peer": true, + "requires": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "devOptional": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "denodeify": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz", + "integrity": "sha1-OjYof1A05pnnV3kBBSwubJQlFjE=", + "optional": true, + "peer": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "devOptional": true + }, + "deprecated-react-native-prop-types": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-2.3.0.tgz", + "integrity": "sha512-pWD0voFtNYxrVqvBMYf5gq3NA2GCpfodS1yNynTPc93AYA/KEMGeWDqqeUB6R2Z9ZofVhks2aeJXiuQqKNpesA==", + "optional": true, + "peer": true, + "requires": { + "@react-native/normalize-color": "*", + "invariant": "*", + "prop-types": "*" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "devOptional": true + }, + "detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true + }, + "detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "devOptional": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "dnd-core": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/dnd-core/-/dnd-core-14.0.1.tgz", + "integrity": "sha512-+PVS2VPTgKFPYWo3vAFEA8WPbTf7/xo43TifH9G8S1KqnrQu0o77A3unrF5yOugy4mIz7K5wAVFHUcha7wsz6A==", + "requires": { + "@react-dnd/asap": "^4.0.0", + "@react-dnd/invariant": "^2.0.0", + "redux": "^4.1.1" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.3.1.tgz", + "integrity": "sha512-spBwIj0TK0Ey3666GwIdWVfUpLyubpU53BTCu8iPn4r4oXd9O14Hjg3EHw3ts2oed77/SeckunUYCyRlSngqHw==", + "dev": true, + "requires": { + "@leichtgewicht/ip-codec": "^2.0.1" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-accessibility-api": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.13.tgz", + "integrity": "sha512-R305kwb5CcMDIpSHUnLyIAp7SrSPBx6F0VfQFB3M75xVMHhXJJIdePYgbPPh1o57vCHNu5QztokWUPsLjWzFqw==", + "dev": true + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "requires": { + "utila": "~0.4" + } + }, + "dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true + }, + "domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, + "requires": { + "webidl-conversions": "^5.0.0" + }, + "dependencies": { + "webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true + } + } + }, + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "dotenv": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.1.tgz", + "integrity": "sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==", + "dev": true + }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "devOptional": true + }, + "electron-to-chromium": { + "version": "1.4.137", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.137.tgz", + "integrity": "sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA==", + "devOptional": true + }, + "emittery": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "dev": true + }, + "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 + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "devOptional": true + }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "optional": true, + "requires": { + "iconv-lite": "^0.6.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "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==", + "devOptional": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz", + "integrity": "sha1-TW5omzcl+GCQknzMhs2fFjW4ni4=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.2.0", + "tapable": "^0.1.8" + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "env-editor": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/env-editor/-/env-editor-0.4.2.tgz", + "integrity": "sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==", + "optional": true, + "peer": true + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true + }, + "envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "devOptional": true + }, + "eol": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/eol/-/eol-0.9.1.tgz", + "integrity": "sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==", + "optional": true, + "peer": true + }, + "err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "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==", + "devOptional": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "error-stack-parser": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.7.tgz", + "integrity": "sha512-chLOW0ZGRf4s8raLrDxa5sdkvPec5YdvwbFnqJme4rk0rFajP8mPtrDL1+I+CwrQDCjswDA5sREX7jYQDQs9vA==", + "optional": true, + "peer": true, + "requires": { + "stackframe": "^1.1.1" + } + }, + "errorhandler": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz", + "integrity": "sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==", + "optional": true, + "peer": true, + "requires": { + "accepts": "~1.3.7", + "escape-html": "~1.0.3" + } + }, + "es-abstract": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + } + }, + "es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true + }, + "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, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es5-ext": { + "version": "0.10.61", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.61.tgz", + "integrity": "sha512-yFhIqQAzu2Ca2I4SE2Au3rxVfmohU9Y7wqGR+s7+H7krk26NXhIRAZDgqd6xqjCEFUomDEA3/Bo/7fKmIkW1kA==", + "dev": true, + "requires": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "devOptional": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "devOptional": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "devOptional": true + }, + "escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + } + } + }, + "eslint": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.15.0.tgz", + "integrity": "sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA==", + "dev": true, + "requires": { + "@eslint/eslintrc": "^1.2.3", + "@humanwhocodes/config-array": "^0.9.2", + "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.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.2", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.6.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "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", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "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 + }, + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "globals": { + "version": "13.13.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", + "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "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 + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "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 + } + } + }, + "eslint-config-airbnb": { + "version": "19.0.4", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz", + "integrity": "sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==", + "dev": true, + "requires": { + "eslint-config-airbnb-base": "^15.0.0", + "object.assign": "^4.1.2", + "object.entries": "^1.1.5" + } + }, + "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, + "requires": { + "confusing-browser-globals": "^1.0.10", + "object.assign": "^4.1.2", + "object.entries": "^1.1.5", + "semver": "^6.3.0" + } + }, + "eslint-config-airbnb-typescript": { + "version": "16.1.4", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-16.1.4.tgz", + "integrity": "sha512-dfm2cEaYXh4mCYd+RyJO8+PQfd5/zp8WwrCeRznly5qD9W5tal3KTjgdInYWuEAdwWnNJxWcmQ/HFiA4bfkM1g==", + "dev": true, + "requires": { + "eslint-config-airbnb-base": "^15.0.0" + } + }, + "eslint-config-react-app": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz", + "integrity": "sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==", + "dev": true, + "requires": { + "@babel/core": "^7.16.0", + "@babel/eslint-parser": "^7.16.3", + "@rushstack/eslint-patch": "^1.1.0", + "@typescript-eslint/eslint-plugin": "^5.5.0", + "@typescript-eslint/parser": "^5.5.0", + "babel-preset-react-app": "^10.0.1", + "confusing-browser-globals": "^1.0.11", + "eslint-plugin-flowtype": "^8.0.3", + "eslint-plugin-import": "^2.25.3", + "eslint-plugin-jest": "^25.3.0", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-react": "^7.27.1", + "eslint-plugin-react-hooks": "^4.3.0", + "eslint-plugin-testing-library": "^5.0.1" + } + }, + "eslint-import-resolver-node": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "dev": true, + "requires": { + "debug": "^3.2.7", + "resolve": "^1.20.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-import-resolver-webpack": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.13.2.tgz", + "integrity": "sha512-XodIPyg1OgE2h5BDErz3WJoK7lawxKTJNhgPNafRST6csC/MZC+L5P6kKqsZGRInpbgc02s/WZMrb4uGJzcuRg==", + "dev": true, + "requires": { + "array-find": "^1.0.0", + "debug": "^3.2.7", + "enhanced-resolve": "^0.9.1", + "find-root": "^1.1.0", + "has": "^1.0.3", + "interpret": "^1.4.0", + "is-core-module": "^2.7.0", + "is-regex": "^1.1.4", + "lodash": "^4.17.21", + "resolve": "^1.20.0", + "semver": "^5.7.1" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "eslint-module-utils": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", + "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", + "dev": true, + "requires": { + "debug": "^3.2.7", + "find-up": "^2.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-plugin-flowtype": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz", + "integrity": "sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==", + "dev": true, + "requires": { + "lodash": "^4.17.21", + "string-natural-compare": "^3.0.1" + } + }, + "eslint-plugin-import": { + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", + "dev": true, + "requires": { + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.3", + "has": "^1.0.3", + "is-core-module": "^2.8.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.5", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-plugin-jest": { + "version": "25.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz", + "integrity": "sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "^5.0.0" + } + }, + "eslint-plugin-jsx-a11y": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz", + "integrity": "sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.3", + "aria-query": "^4.2.2", + "array-includes": "^3.1.4", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.3.5", + "axobject-query": "^2.2.0", + "damerau-levenshtein": "^1.0.7", + "emoji-regex": "^9.2.2", + "has": "^1.0.3", + "jsx-ast-utils": "^3.2.1", + "language-tags": "^1.0.5", + "minimatch": "^3.0.4" + }, + "dependencies": { + "aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + } + } + } + }, + "eslint-plugin-no-async-without-await": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-async-without-await/-/eslint-plugin-no-async-without-await-1.2.0.tgz", + "integrity": "sha1-wuZNrqB8sjNV/GGKFviRo7dO2lA=", + "dev": true + }, + "eslint-plugin-no-null": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-null/-/eslint-plugin-no-null-1.0.2.tgz", + "integrity": "sha1-EjaoEjkTkKGHetQAfCbnRTQclR8=", + "dev": true, + "requires": {} + }, + "eslint-plugin-react": { + "version": "7.29.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz", + "integrity": "sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ==", + "dev": true, + "requires": { + "array-includes": "^3.1.4", + "array.prototype.flatmap": "^1.2.5", + "doctrine": "^2.1.0", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.5", + "object.fromentries": "^2.0.5", + "object.hasown": "^1.1.0", + "object.values": "^1.1.5", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.3", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.6" + }, + "dependencies": { + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "resolve": { + "version": "2.0.0-next.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", + "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + } + } + }, + "eslint-plugin-react-hooks": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.5.0.tgz", + "integrity": "sha512-8k1gRt7D7h03kd+SAAlzXkQwWK22BnK6GKZG+FJA6BAGy22CFvl8kCIXKpVux0cCxMWDQUPqSok0LKaZ0aOcCw==", + "dev": true, + "requires": {} + }, + "eslint-plugin-teactn": { + "version": "git+ssh://git@github.com/korenskoy/eslint-plugin-teactn.git#c2c39dd005d58c07c24c4361de804dce1c6261b5", + "integrity": "sha512-8Xedzwbkp50WfJUMhstW5ZOc7KKmWbzEyZMPIqTlF2kHnMrMuic6yZ9Q06hM2/AVtGIw48XK2NOXZIM7qMXHIA==", + "dev": true, + "from": "eslint-plugin-teactn@git+https://github.com/korenskoy/eslint-plugin-teactn#c2c39dd005d58c07c24c4361de804dce1c6261b5", + "requires": { + "eslint-plugin-react": "^7.16.0", + "eslint-rule-composer": "^0.3.0" + } + }, + "eslint-plugin-testing-library": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.1.0.tgz", + "integrity": "sha512-YSNzasJUbyhOTe14ZPygeOBvcPvcaNkwHwrj4vdf+uirr2D32JTDaKi6CP5Os2aWtOcvt4uBSPXp9h5xGoqvWQ==", + "dev": true, + "requires": { + "@typescript-eslint/utils": "^5.13.0" + } + }, + "eslint-rule-composer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz", + "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==", + "dev": true + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "dependencies": { + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + } + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + }, + "espree": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", + "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", + "dev": true, + "requires": { + "acorn": "^8.7.1", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "devOptional": true + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "devOptional": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "devOptional": true + }, + "ethjs-unit": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", + "integrity": "sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk=", + "requires": { + "bn.js": "4.11.6", + "number-to-bn": "1.7.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" + } + } + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "optional": true, + "peer": true + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + }, + "exec-async": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/exec-async/-/exec-async-2.2.0.tgz", + "integrity": "sha1-x8WtLu80eNODkMbdOs/orw78gwE=", + "optional": true, + "peer": true + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "execall": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/execall/-/execall-2.0.0.tgz", + "integrity": "sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow==", + "dev": true, + "requires": { + "clone-regexp": "^2.1.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "optional": true, + "peer": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "optional": true, + "peer": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "optional": true, + "peer": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "optional": true, + "peer": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "optional": true, + "peer": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, + "peer": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "optional": true, + "peer": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, + "peer": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "optional": true, + "peer": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "optional": true, + "peer": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "optional": true, + "peer": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "optional": true, + "peer": true + } + } + }, + "expo": { + "version": "45.0.4", + "resolved": "https://registry.npmjs.org/expo/-/expo-45.0.4.tgz", + "integrity": "sha512-S/6rwmgG+1cyHP1hCmylk9FLnavUWd/haWgVc8sUNiavaMBu/vCjeLUESFVJdYRKKN9i+avSzHdAVdKytNYo6A==", + "optional": true, + "peer": true, + "requires": { + "@babel/runtime": "^7.14.0", + "@expo/cli": "0.1.4", + "@expo/vector-icons": "^13.0.0", + "babel-preset-expo": "~9.1.0", + "cross-spawn": "^6.0.5", + "expo-application": "~4.1.0", + "expo-asset": "~8.5.0", + "expo-constants": "~13.1.1", + "expo-error-recovery": "~3.1.0", + "expo-file-system": "~14.0.0", + "expo-font": "~10.1.0", + "expo-keep-awake": "~10.1.1", + "expo-modules-autolinking": "0.8.1", + "expo-modules-core": "0.9.2", + "fbemitter": "^3.0.0", + "getenv": "^1.0.0", + "invariant": "^2.2.4", + "md5-file": "^3.2.3", + "node-fetch": "^2.6.7", + "pretty-format": "^26.5.2", + "uuid": "^3.4.0" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "optional": true, + "peer": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.14", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", + "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", + "optional": true, + "peer": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "optional": true, + "peer": true + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "optional": true, + "peer": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "expo-modules-autolinking": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-0.8.1.tgz", + "integrity": "sha512-S8qfaXCv//7tQWV9M+JKx3CF7ypYhDdSUbkUQdaVO/r8D76/aRTArY/aRw1yEfaAOzyK8C8diDToV1itl51DfQ==", + "optional": true, + "peer": true, + "requires": { + "chalk": "^4.1.0", + "commander": "^7.2.0", + "fast-glob": "^3.2.5", + "find-up": "^5.0.0", + "fs-extra": "^9.1.0" + } + }, + "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==", + "optional": true, + "peer": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "optional": true, + "peer": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true + }, + "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==", + "optional": true, + "peer": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "optional": true, + "peer": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "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==", + "optional": true, + "peer": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "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==", + "optional": true, + "peer": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "optional": true, + "peer": true + }, + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "optional": true, + "peer": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "optional": true, + "peer": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "optional": true, + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "optional": true, + "peer": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "optional": true, + "peer": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "optional": true, + "peer": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "expo-application": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-4.1.0.tgz", + "integrity": "sha512-Z2kctgVMpYZB1Iwaxd+XcMBq7h8EEY50GGrwxXsb1OHHQKN+WEVGBWxjvtPkAroqCdujLaB5HBay46gvUHRDQg==", + "optional": true, + "peer": true, + "requires": {} + }, + "expo-asset": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-8.5.0.tgz", + "integrity": "sha512-k3QErZYxb6e6rPkJ1sG5yIJ7bhd4RFvnFStz0ZCO6SfktGygBAjTz5aTOLaaomiCIObRiBQ4byky/RLdli/NLw==", + "optional": true, + "peer": true, + "requires": { + "blueimp-md5": "^2.10.0", + "invariant": "^2.2.4", + "md5-file": "^3.2.3", + "path-browserify": "^1.0.0", + "url-parse": "^1.5.9" + } + }, + "expo-constants": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-13.1.1.tgz", + "integrity": "sha512-QRVHrrMCLenBzWZ8M+EvCXM+jjdQzFMW27YQHRac3SGGoND1hWr81scOmGwlFo2wLZrYXm8HcYt1E6ry3IIwrA==", + "optional": true, + "peer": true, + "requires": { + "@expo/config": "^6.0.14", + "uuid": "^3.3.2" + }, + "dependencies": { + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "optional": true, + "peer": true + } + } + }, + "expo-error-recovery": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/expo-error-recovery/-/expo-error-recovery-3.1.0.tgz", + "integrity": "sha512-qUxCW7kPB6AVX5h3ZPVnxw4LLZWsRwAPBtRDlh1UDN7GWZ+CQN1SNk0w0BPotjNtSlXEZSFDqKqtoDDAUYjNmg==", + "optional": true, + "peer": true, + "requires": {} + }, + "expo-file-system": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-14.0.0.tgz", + "integrity": "sha512-Asva7ehLUq/PIem6Y+/OQvoIqhFqYDd7l4l49yDRDgLSbK2I7Fr8qGhDeDpnUXrMVamg2uwt9zRGhyrjFNRhVw==", + "optional": true, + "peer": true, + "requires": { + "@expo/config-plugins": "^4.0.14", + "uuid": "^3.4.0" + }, + "dependencies": { + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "optional": true, + "peer": true + } + } + }, + "expo-font": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-10.1.0.tgz", + "integrity": "sha512-vmhzpE95Ym4iOj8IELof+C/3Weert2B3LyxV5rBjGosjzBdov+o+S6b5mN7Yc9kyEGykwB6k7npL45X3hFYDQA==", + "optional": true, + "peer": true, + "requires": { + "fontfaceobserver": "^2.1.0" + } + }, + "expo-keep-awake": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-10.1.1.tgz", + "integrity": "sha512-9zC0sdhQljUeMr2yQ7o4kzEZXVAy82fFOAZE1+TwPL7qR0b0sphe7OJ5T1GX1qLcwuVaJ8YewaPoLSHRk79+Rg==", + "optional": true, + "peer": true, + "requires": {} + }, + "expo-modules-autolinking": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-0.0.3.tgz", + "integrity": "sha512-azkCRYj/DxbK4udDuDxA9beYzQTwpJ5a9QA0bBgha2jHtWdFGF4ZZWSY+zNA5mtU3KqzYt8jWHfoqgSvKyu1Aw==", + "optional": true, + "requires": { + "chalk": "^4.1.0", + "commander": "^7.2.0", + "fast-glob": "^3.2.5", + "find-up": "~5.0.0", + "fs-extra": "^9.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true + }, + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "optional": true + }, + "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==", + "optional": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "optional": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true + }, + "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==", + "optional": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "optional": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "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==", + "optional": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "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==", + "optional": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "optional": true + } + } + }, + "expo-modules-core": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-0.9.2.tgz", + "integrity": "sha512-p/C0GJxFIIDGwmrWi70Q0ggfsgeUFS25ZkkBgoaHT7MVgiMjlKA/DCC3D6ZUkHl/JlzUm0aTftIGS8LWXsnZBw==", + "optional": true, + "peer": true, + "requires": { + "compare-versions": "^3.4.0", + "invariant": "^2.2.4" + } + }, + "expo-random": { + "version": "12.1.2", + "resolved": "https://registry.npmjs.org/expo-random/-/expo-random-12.1.2.tgz", + "integrity": "sha512-ajB+Mwff9PdglsyLliaU4K9BtVwKvAVVI2hQhnvlS3QgsAhHf+jQVUfAysQJHuioF6ADMEsab/kRUy4Dy03aoQ==", + "optional": true, + "requires": { + "base64-js": "^1.3.0" + } + }, + "express": { + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", + "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", + "dev": true, + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.19.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.4.2", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.9.7", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.17.2", + "serve-static": "1.14.2", + "setprototypeof": "1.2.0", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "requires": { + "safe-buffer": "5.2.1" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "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 + } + } + }, + "ext": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", + "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", + "dev": true, + "requires": { + "type": "^2.5.0" + }, + "dependencies": { + "type": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.6.0.tgz", + "integrity": "sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "optional": true, + "peer": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "optional": true, + "peer": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "optional": true, + "peer": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "optional": true, + "peer": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "optional": true, + "peer": true + } + } + }, + "fantasticon": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/fantasticon/-/fantasticon-1.2.3.tgz", + "integrity": "sha512-VoPXI8+wbLq4qooK2LAFRcqKtOCR20+InF/Io/9I1kLp3IT+LwqJgeFijFvp9a3HRZptfCAxNvazoVHn4kihzQ==", + "dev": true, + "requires": { + "change-case": "^4.1.2", + "cli-color": "^2.0.0", + "commander": "^7.2.0", + "glob": "^7.2.0", + "handlebars": "^4.7.7", + "slugify": "^1.6.0", + "svg2ttf": "^6.0.3", + "svgicons2svgfont": "^10.0.3", + "ttf2eot": "^2.0.0", + "ttf2woff": "^3.0.0", + "ttf2woff2": "^4.0.4" + }, + "dependencies": { + "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 + } + } + }, + "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==" + }, + "fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "devOptional": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "devOptional": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "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 + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fast-url-parser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", + "integrity": "sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0=", + "dev": true, + "requires": { + "punycode": "^1.3.2" + } + }, + "fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "devOptional": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "devOptional": true, + "requires": { + "bser": "2.1.1" + } + }, + "fbemitter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz", + "integrity": "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==", + "optional": true, + "peer": true, + "requires": { + "fbjs": "^3.0.0" + } + }, + "fbjs": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.4.tgz", + "integrity": "sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ==", + "optional": true, + "peer": true, + "requires": { + "cross-fetch": "^3.1.5", + "fbjs-css-vars": "^1.0.0", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.30" + } + }, + "fbjs-css-vars": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==", + "optional": true, + "peer": true + }, + "fetch-retry": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/fetch-retry/-/fetch-retry-4.1.1.tgz", + "integrity": "sha512-e6eB7zN6UBSwGVwrbWVH+gdLnkW9WwHhmq2YDK1Sh30pzx1onRVGBvogTlUeWxwTa+L86NYdo4hFkh7O8ZjSnA==", + "optional": true, + "peer": true + }, + "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, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true + }, + "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==", + "devOptional": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "devOptional": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "devOptional": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "devOptional": true + } + } + }, + "find-babel-config": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/find-babel-config/-/find-babel-config-1.2.0.tgz", + "integrity": "sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA==", + "optional": true, + "peer": true, + "requires": { + "json5": "^0.5.1", + "path-exists": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "optional": true, + "peer": true + } + } + }, + "find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "dev": true + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "find-yarn-workspace-root": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", + "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", + "optional": true, + "peer": true, + "requires": { + "micromatch": "^4.0.2" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "dev": true + }, + "flow-parser": { + "version": "0.121.0", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.121.0.tgz", + "integrity": "sha512-1gIBiWJNR0tKUNv8gZuk7l9rVX06OuLzY9AoGio7y/JT4V1IZErEMEq2TJS+PFcw/y0RshZ1J/27VfK1UQzYVg==", + "optional": true, + "peer": true + }, + "follow-redirects": { + "version": "1.14.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", + "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", + "dev": true + }, + "fontfaceobserver": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.1.0.tgz", + "integrity": "sha512-ReOsO2F66jUa0jmv2nlM/s1MiutJx/srhAe2+TE8dJCMi02ZZOcCTxTCQFr3Yet+uODUtnr4Mewg+tNQ+4V1Ng==", + "optional": true, + "peer": true + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "optional": true, + "peer": true + }, + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "devOptional": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true + }, + "fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "optional": true, + "peer": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "freeport-async": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/freeport-async/-/freeport-async-2.0.0.tgz", + "integrity": "sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ==", + "optional": true, + "peer": true + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "devOptional": true + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "optional": true, + "peer": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "dependencies": { + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "optional": true, + "peer": true, + "requires": { + "graceful-fs": "^4.1.6" + } + } + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "devOptional": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "devOptional": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "devOptional": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "dev": true, + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "dependencies": { + "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 + }, + "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 + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + } + } + }, + "generic-names": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-4.0.0.tgz", + "integrity": "sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==", + "dev": true, + "requires": { + "loader-utils": "^3.2.0" + }, + "dependencies": { + "loader-utils": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz", + "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==", + "dev": true + } + } + }, + "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==", + "devOptional": true + }, + "geometry-interfaces": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/geometry-interfaces/-/geometry-interfaces-1.1.4.tgz", + "integrity": "sha512-qD6OdkT6NcES9l4Xx3auTpwraQruU7dARbQPVO71MKvkGYw5/z/oIiGymuFXrRaEQa5Y67EIojUpaLeGEa5hGA==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "devOptional": true + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "devOptional": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", + "optional": true, + "peer": true + }, + "get-stdin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", + "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", + "dev": true + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "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, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "optional": true, + "peer": true + }, + "getenv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/getenv/-/getenv-1.0.0.tgz", + "integrity": "sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg==", + "optional": true, + "peer": true + }, + "git-revision-webpack-plugin": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/git-revision-webpack-plugin/-/git-revision-webpack-plugin-5.0.0.tgz", + "integrity": "sha512-RptQN/4UKcEPkCBmRy8kLPo5i8MnF8+XfAgFYN9gbwmKLTLx4YHsQw726H+C5+sIGDixDkmGL3IxPA2gKo+u4w==", + "dev": true, + "requires": {} + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "devOptional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "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 + }, + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dev": true, + "requires": { + "global-prefix": "^3.0.0" + } + }, + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dev": true, + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "dependencies": { + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "devOptional": true + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "devOptional": true, + "requires": { + "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" + } + }, + "globjoin": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", + "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=", + "dev": true + }, + "gonzales-pe": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz", + "integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "graceful-fs": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", + "devOptional": true + }, + "graphql": { + "version": "15.8.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz", + "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==", + "optional": true, + "peer": true + }, + "graphql-tag": { + "version": "2.12.6", + "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", + "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", + "optional": true, + "peer": true, + "requires": { + "tslib": "^2.1.0" + } + }, + "gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dev": true, + "requires": { + "duplexer": "^0.1.2" + } + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "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 + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "devOptional": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "devOptional": true + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "devOptional": true + }, + "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, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "optional": true, + "peer": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "optional": true, + "peer": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "optional": true, + "peer": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, + "peer": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "optional": true, + "peer": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "header-case": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", + "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", + "dev": true, + "requires": { + "capital-case": "^1.0.4", + "tslib": "^2.0.3" + } + }, + "hermes-engine": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/hermes-engine/-/hermes-engine-0.11.0.tgz", + "integrity": "sha512-7aMUlZja2IyLYAcZ69NBnwJAR5ZOYlSllj0oMpx08a8HzxHOys0eKCzfphrf6D0vX1JGO1QQvVsQKe6TkYherw==", + "optional": true, + "peer": true + }, + "hermes-estree": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.5.0.tgz", + "integrity": "sha512-1h8rvG23HhIR5K6Kt0e5C7BC72J1Ath/8MmSta49vxXp/j6wl7IMHvIRFYBQr35tWnQY97dSGR2uoAJ5pHUQkg==", + "optional": true, + "peer": true + }, + "hermes-parser": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.5.0.tgz", + "integrity": "sha512-ARnJBScKAkkq8j3BHrNGBUv/4cSpZNbKDsVizEtzmsFeqC67Dopa5s4XRe+e3wN52Dh5Mj2kDB5wJvhcxwDkPg==", + "optional": true, + "peer": true, + "requires": { + "hermes-estree": "0.5.0" + } + }, + "hermes-profile-transformer": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz", + "integrity": "sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==", + "optional": true, + "peer": true, + "requires": { + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "optional": true, + "peer": true + } + } + }, + "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==", + "requires": { + "react-is": "^16.7.0" + }, + "dependencies": { + "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==" + } + } + }, + "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, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.5" + } + }, + "html-entities": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", + "dev": true + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dev": true, + "requires": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + } + }, + "html-tags": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz", + "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==", + "dev": true + }, + "html-webpack-plugin": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", + "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", + "dev": true, + "requires": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "dependencies": { + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + } + } + }, + "htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "devOptional": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + } + }, + "http-parser-js": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", + "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", + "dev": true + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, + "http-proxy-middleware": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.4.tgz", + "integrity": "sha512-m/4FxX17SUvz4lJ5WPXOHDUuCwIqXLfLHs1s0uZ3oYjhoXlx9csYxaOa0ElDEJ+h8Q4iJ1s+lTMbiCa4EXIJqg==", + "dev": true, + "requires": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "dependencies": { + "is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true + } + } + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "dev": true, + "requires": { + "ms": "^2.0.0" + } + }, + "husky": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/husky/-/husky-7.0.4.tgz", + "integrity": "sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "devOptional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "dev": true + }, + "icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "requires": {} + }, + "idb-keyval": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.1.0.tgz", + "integrity": "sha512-u/qHZ75rlD3gH+Zah8dAJVJcGW/RfCnfNrFkElC5RpRCnpsCXXhqjVk+6MoVKJ3WhmNbRYdI6IIVP88e+5sxGw==", + "requires": { + "safari-14-idb-fix": "^3.0.0" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "optional": true, + "peer": true + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "devOptional": true + }, + "image-size": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.6.3.tgz", + "integrity": "sha512-47xSUiQioGaB96nqtp5/q55m0aBQSQdyIloMOc/x+QVTDZLNmXE892IIDrJ0hM1A5vcNUDD5tDffkSP5lCaIIA==", + "optional": true, + "peer": true + }, + "immutable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", + "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "dev": true + }, + "import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "devOptional": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "devOptional": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "devOptional": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "devOptional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "devOptional": true + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "devOptional": true + }, + "internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "optional": true, + "peer": true, + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "optional": true, + "peer": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "optional": true, + "peer": true, + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "optional": true, + "peer": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.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" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "optional": true, + "peer": true, + "requires": { + "pump": "^3.0.0" + } + }, + "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==", + "optional": true, + "peer": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "optional": true, + "peer": true + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "optional": true, + "peer": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "optional": true, + "peer": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "optional": true, + "peer": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "optional": true, + "peer": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "optional": true, + "peer": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "optional": true, + "peer": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "optional": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "devOptional": true + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "optional": true, + "peer": true + }, + "ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "dev": true + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "optional": true, + "peer": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true + }, + "is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "devOptional": true + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-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, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "devOptional": true + }, + "is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true + }, + "is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "devOptional": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "optional": true, + "peer": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "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, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "optional": true, + "peer": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "optional": true, + "peer": true + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "devOptional": true + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "optional": true, + "peer": true, + "requires": { + "is-plain-object": "^2.0.4" + }, + "dependencies": { + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "optional": true, + "peer": true, + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "devOptional": true + }, + "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 + }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "devOptional": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-hex-prefixed": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha1-fY035q135dEnFIkTxXPggtd39VQ=" + }, + "is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true + }, + "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==", + "optional": true, + "peer": true + }, + "is-invalid-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-invalid-path/-/is-invalid-path-0.1.0.tgz", + "integrity": "sha1-MHqFWzzxqTi0TqcNLGEQYFNxTzQ=", + "optional": true, + "peer": true, + "requires": { + "is-glob": "^2.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "optional": true, + "peer": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "optional": true, + "peer": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", + "dev": true + }, + "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 + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "devOptional": true + }, + "is-number-object": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", + "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "optional": true, + "peer": true + }, + "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==", + "optional": true, + "peer": true + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true + }, + "is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, + "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, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-regexp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-2.1.0.tgz", + "integrity": "sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==", + "dev": true + }, + "is-root": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", + "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", + "optional": true, + "peer": true + }, + "is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "dev": true + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "devOptional": true + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "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, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "devOptional": true + }, + "is-valid-path": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-valid-path/-/is-valid-path-0.1.1.tgz", + "integrity": "sha1-EQ+f90w39mPh7HkV60UfLbk6yd8=", + "optional": true, + "peer": true, + "requires": { + "is-invalid-path": "^0.1.0" + } + }, + "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, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "optional": true, + "peer": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "devOptional": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "devOptional": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "devOptional": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "devOptional": true + }, + "isomorphic-webcrypto": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/isomorphic-webcrypto/-/isomorphic-webcrypto-2.3.8.tgz", + "integrity": "sha512-XddQSI0WYlSCjxtm1AI8kWQOulf7hAN3k3DclF1sxDJZqOe0pcsOt675zvWW91cZH9hYs3nlA3Ev8QK5i80SxQ==", + "requires": { + "@peculiar/webcrypto": "^1.0.22", + "@unimodules/core": "*", + "@unimodules/react-native-adapter": "*", + "asmcrypto.js": "^0.22.0", + "b64-lite": "^1.3.1", + "b64u-lite": "^1.0.1", + "expo-random": "*", + "msrcrypto": "^1.5.6", + "react-native-securerandom": "^0.1.1", + "str2buf": "^1.3.0", + "webcrypto-shim": "^0.1.4" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "optional": true, + "peer": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@react-native-community/cli": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-7.0.3.tgz", + "integrity": "sha512-WyJOA829KAhU1pw2MDQt0YhOS9kyR2KqyqgJyTuQhzFVCBPX4F5aDEkZYYn4jdldaDHCPrLJ3ho3gxYTXy+x7w==", + "optional": true, + "peer": true, + "requires": { + "@react-native-community/cli-debugger-ui": "^7.0.3", + "@react-native-community/cli-hermes": "^6.3.0", + "@react-native-community/cli-plugin-metro": "^7.0.3", + "@react-native-community/cli-server-api": "^7.0.3", + "@react-native-community/cli-tools": "^6.2.0", + "@react-native-community/cli-types": "^6.0.0", + "appdirsjs": "^1.2.4", + "chalk": "^4.1.2", + "command-exists": "^1.2.8", + "commander": "^2.19.0", + "cosmiconfig": "^5.1.0", + "deepmerge": "^3.2.0", + "envinfo": "^7.7.2", + "execa": "^1.0.0", + "find-up": "^4.1.0", + "fs-extra": "^8.1.0", + "glob": "^7.1.3", + "graceful-fs": "^4.1.3", + "joi": "^17.2.1", + "leven": "^3.1.0", + "lodash": "^4.17.15", + "minimist": "^1.2.0", + "node-stream-zip": "^1.9.1", + "ora": "^3.4.0", + "pretty-format": "^26.6.2", + "prompts": "^2.4.0", + "semver": "^6.3.0", + "serve-static": "^1.13.1", + "strip-ansi": "^5.2.0", + "sudo-prompt": "^9.0.0", + "wcwidth": "^1.0.1" + } + }, + "@react-native-community/cli-tools": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-6.2.0.tgz", + "integrity": "sha512-08ssz4GMEnRxC/1FgTTN/Ud7mExQi5xMphItPjfHiTxpZPhrFn+IMx6mya0ncFEhhxQ207wYlJMRLPRRdBZ8oA==", + "optional": true, + "peer": true, + "requires": { + "appdirsjs": "^1.2.4", + "chalk": "^4.1.2", + "lodash": "^4.17.15", + "mime": "^2.4.1", + "node-fetch": "^2.6.0", + "open": "^6.2.0", + "semver": "^6.3.0", + "shell-quote": "1.6.1" + } + }, + "@types/yargs": { + "version": "15.0.14", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", + "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", + "optional": true, + "peer": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "optional": true, + "peer": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "optional": true, + "peer": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "optional": true, + "peer": true + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "optional": true, + "peer": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "optional": true, + "peer": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "optional": true, + "peer": true + } + } + }, + "deepmerge": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.3.0.tgz", + "integrity": "sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA==", + "optional": true, + "peer": true + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "optional": true, + "peer": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.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" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "optional": true, + "peer": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "optional": true, + "peer": true, + "requires": { + "pump": "^3.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "optional": true, + "peer": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "optional": true, + "peer": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "optional": true, + "peer": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "optional": true, + "peer": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "optional": true, + "peer": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "optional": true, + "peer": true, + "requires": { + "chalk": "^2.0.1" + }, + "dependencies": { + "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==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "optional": true, + "peer": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "optional": true, + "peer": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "optional": true, + "peer": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "optional": true, + "peer": true + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "optional": true, + "peer": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "optional": true, + "peer": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "optional": true, + "peer": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "ora": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", + "optional": true, + "peer": true, + "requires": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "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==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "optional": true, + "peer": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "optional": true, + "peer": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "optional": true, + "peer": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "optional": true, + "peer": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "optional": true, + "peer": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "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==", + "optional": true, + "peer": true + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "optional": true, + "peer": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "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==", + "optional": true, + "peer": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "optional": true, + "peer": true + }, + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + }, + "promise": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz", + "integrity": "sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q==", + "optional": true, + "peer": true, + "requires": { + "asap": "~2.0.6" + } + }, + "react": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "optional": true, + "peer": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "react-native": { + "version": "0.68.2", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.68.2.tgz", + "integrity": "sha512-qNMz+mdIirCEmlrhapAtAG+SWVx6MAiSfCbFNhfHqiqu1xw1OKXdzIrjaBEPihRC2pcORCoCHduHGQe/Pz9Yuw==", + "optional": true, + "peer": true, + "requires": { + "@jest/create-cache-key-function": "^27.0.1", + "@react-native-community/cli": "^7.0.3", + "@react-native-community/cli-platform-android": "^7.0.1", + "@react-native-community/cli-platform-ios": "^7.0.1", + "@react-native/assets": "1.0.0", + "@react-native/normalize-color": "2.0.0", + "@react-native/polyfills": "2.0.0", + "abort-controller": "^3.0.0", + "anser": "^1.4.9", + "base64-js": "^1.1.2", + "deprecated-react-native-prop-types": "^2.3.0", + "event-target-shim": "^5.0.1", + "hermes-engine": "~0.11.0", + "invariant": "^2.2.4", + "jsc-android": "^250230.2.1", + "metro-react-native-babel-transformer": "0.67.0", + "metro-runtime": "0.67.0", + "metro-source-map": "0.67.0", + "nullthrows": "^1.1.1", + "pretty-format": "^26.5.2", + "promise": "^8.0.3", + "react-devtools-core": "^4.23.0", + "react-native-codegen": "^0.0.17", + "react-native-gradle-plugin": "^0.0.6", + "react-refresh": "^0.4.0", + "react-shallow-renderer": "16.14.1", + "regenerator-runtime": "^0.13.2", + "scheduler": "^0.20.2", + "stacktrace-parser": "^0.1.3", + "use-subscription": ">=1.0.0 <1.6.0", + "whatwg-fetch": "^3.0.0", + "ws": "^6.1.4" + } + }, + "react-native-securerandom": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/react-native-securerandom/-/react-native-securerandom-0.1.1.tgz", + "integrity": "sha1-8TBiOkEsM4sK+t7bwgTFy7i/IHA=", + "optional": true, + "requires": { + "base64-js": "*" + } + }, + "react-shallow-renderer": { + "version": "16.14.1", + "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.14.1.tgz", + "integrity": "sha512-rkIMcQi01/+kxiTE9D3fdS959U1g7gs+/rborw++42m1O9FAQiNI/UNRZExVUoAOprn4umcXf+pFRou8i4zuBg==", + "optional": true, + "peer": true, + "requires": { + "object-assign": "^4.1.1", + "react-is": "^16.12.0 || ^17.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "optional": true, + "peer": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "optional": true, + "peer": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "optional": true, + "peer": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "optional": true, + "peer": true + }, + "shell-quote": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", + "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "optional": true, + "peer": true, + "requires": { + "array-filter": "~0.0.0", + "array-map": "~0.0.0", + "array-reduce": "~0.0.0", + "jsonify": "~0.0.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "optional": true, + "peer": true, + "requires": { + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "optional": true, + "peer": true + } + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "use-subscription": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/use-subscription/-/use-subscription-1.5.1.tgz", + "integrity": "sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA==", + "optional": true, + "peer": true, + "requires": { + "object-assign": "^4.1.1" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "optional": true, + "peer": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "ws": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", + "optional": true, + "peer": true, + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", + "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", + "dev": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", + "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", + "dev": true, + "requires": { + "@jest/core": "^27.5.1", + "import-local": "^3.0.2", + "jest-cli": "^27.5.1" + } + }, + "jest-changed-files": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", + "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "execa": "^5.0.0", + "throat": "^6.0.1" + } + }, + "jest-circus": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", + "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", + "dev": true, + "requires": { + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + } + }, + "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 + }, + "jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-cli": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", + "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", + "dev": true, + "requires": { + "@jest/core": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "prompts": "^2.0.1", + "yargs": "^16.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-config": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", + "dev": true, + "requires": { + "@babel/core": "^7.8.0", + "@jest/test-sequencer": "^27.5.1", + "@jest/types": "^27.5.1", + "babel-jest": "^27.5.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.9", + "jest-circus": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-jasmine2": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-docblock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", + "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", + "dev": true, + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-each": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-environment-jsdom": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", + "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", + "dev": true, + "requires": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1", + "jsdom": "^16.6.0" + } + }, + "jest-environment-node": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", + "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", + "dev": true, + "requires": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + } + }, + "jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true + }, + "jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "devOptional": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + } + }, + "jest-jasmine2": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", + "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", + "dev": true, + "requires": { + "@jest/environment": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "throat": "^6.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + } + }, + "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 + }, + "jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-leak-detector": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", + "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", + "dev": true, + "requires": { + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + } + }, + "jest-matcher-utils": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.2.5.tgz", + "integrity": "sha512-qNR/kh6bz0Dyv3m68Ck2g1fLW5KlSOUNcFQh87VXHZwWc/gY6XwnKofx76Qytz3x5LDWT09/2+yXndTkaG4aWg==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^27.2.5", + "jest-get-type": "^27.0.6", + "pretty-format": "^27.2.5" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-mock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*" + } + }, + "jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "dev": true, + "requires": {} + }, + "jest-raw-loader": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/jest-raw-loader/-/jest-raw-loader-1.0.1.tgz", + "integrity": "sha1-zp9W1UZQ8VfEp9FtIkul1hO81iY=", + "dev": true + }, + "jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "devOptional": true + }, + "jest-resolve": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-resolve-dependencies": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", + "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-snapshot": "^27.5.1" + } + }, + "jest-runner": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", + "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", + "dev": true, + "requires": { + "@jest/console": "^27.5.1", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-leak-detector": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "source-map-support": "^0.5.6", + "throat": "^6.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-runtime": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", + "dev": true, + "requires": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/globals": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-serializer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", + "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", + "devOptional": true, + "requires": { + "@types/node": "*", + "graceful-fs": "^4.2.9" + } + }, + "jest-snapshot": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "dev": true, + "requires": { + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^27.5.1", + "semver": "^7.3.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + } + }, + "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 + }, + "jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "devOptional": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "devOptional": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "devOptional": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-validate": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-watcher": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", + "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", + "dev": true, + "requires": { + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^27.5.1", + "string-length": "^4.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "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==", + "devOptional": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "devOptional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jetifier": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/jetifier/-/jetifier-1.6.8.tgz", + "integrity": "sha512-3Zi16h6L5tXDRQJTb221cnRoVG9/9OvreLdLU2/ZjRv/GILL+2Cemt0IKvkowwkDpvouAU1DQPOJ7qaiHeIdrw==", + "optional": true, + "peer": true + }, + "jimp-compact": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/jimp-compact/-/jimp-compact-0.16.1.tgz", + "integrity": "sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==", + "optional": true, + "peer": true + }, + "joi": { + "version": "17.6.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz", + "integrity": "sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==", + "optional": true, + "peer": true, + "requires": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.0", + "@sideway/pinpoint": "^2.0.0" + } + }, + "join-component": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/join-component/-/join-component-1.1.0.tgz", + "integrity": "sha1-uEF7dQZho5K+4sJTfGiyqdSXfNU=", + "optional": true, + "peer": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "devOptional": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "jsc-android": { + "version": "250230.2.1", + "resolved": "https://registry.npmjs.org/jsc-android/-/jsc-android-250230.2.1.tgz", + "integrity": "sha512-KmxeBlRjwoqCnBBKGsihFtvsBHyUFlBxJPK4FzeYcIuBfdjv6jFys44JITAgSTbQD+vIdwMEfyZklsuQX0yI1Q==", + "optional": true, + "peer": true + }, + "jscodeshift": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.13.1.tgz", + "integrity": "sha512-lGyiEbGOvmMRKgWk4vf+lUrCWO/8YR8sUR3FKF1Cq5fovjZDlIcw3Hu5ppLHAnEXshVffvaM0eyuY/AbOeYpnQ==", + "optional": true, + "peer": true, + "requires": { + "@babel/core": "^7.13.16", + "@babel/parser": "^7.13.16", + "@babel/plugin-proposal-class-properties": "^7.13.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", + "@babel/plugin-proposal-optional-chaining": "^7.13.12", + "@babel/plugin-transform-modules-commonjs": "^7.13.8", + "@babel/preset-flow": "^7.13.13", + "@babel/preset-typescript": "^7.13.0", + "@babel/register": "^7.13.16", + "babel-core": "^7.0.0-bridge.0", + "chalk": "^4.1.2", + "flow-parser": "0.*", + "graceful-fs": "^4.2.4", + "micromatch": "^3.1.10", + "neo-async": "^2.5.0", + "node-dir": "^0.1.17", + "recast": "^0.20.4", + "temp": "^0.8.4", + "write-file-atomic": "^2.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "optional": true, + "peer": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "optional": true, + "peer": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "optional": true, + "peer": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "optional": true, + "peer": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "optional": true, + "peer": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "optional": true, + "peer": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, + "peer": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "optional": true, + "peer": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "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==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "optional": true, + "peer": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "optional": true, + "peer": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + } + } + }, + "jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dev": true, + "requires": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "devOptional": true + }, + "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==", + "optional": true, + "peer": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema-deref-sync": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/json-schema-deref-sync/-/json-schema-deref-sync-0.13.0.tgz", + "integrity": "sha512-YBOEogm5w9Op337yb6pAT6ZXDqlxAsQCanM3grid8lMWNxRJO/zWEJi3ZzqDL8boWfwhTFym5EFrNgWwpqcBRg==", + "optional": true, + "peer": true, + "requires": { + "clone": "^2.1.2", + "dag-map": "~1.0.0", + "is-valid-path": "^0.1.1", + "lodash": "^4.17.13", + "md5": "~2.2.0", + "memory-cache": "~0.2.0", + "traverse": "~0.6.6", + "valid-url": "~1.0.9" + }, + "dependencies": { + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "optional": true, + "peer": true + } + } + }, + "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 + }, + "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": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "devOptional": true + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "optional": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + }, + "dependencies": { + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "optional": true + } + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "optional": true, + "peer": true + }, + "jsx-ast-utils": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz", + "integrity": "sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==", + "dev": true, + "requires": { + "array-includes": "^3.1.3", + "object.assign": "^4.1.2" + } + }, + "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==", + "devOptional": true + }, + "klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "optional": true, + "peer": true, + "requires": { + "graceful-fs": "^4.1.9" + } + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "devOptional": true + }, + "klona": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "dev": true + }, + "known-css-properties": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.25.0.tgz", + "integrity": "sha512-b0/9J1O9Jcyik1GC6KC42hJ41jKwdO/Mq8Mdo5sYN+IuRTXs2YFHZC3kZSx6ueusqa95x3wLYe/ytKjbAfGixA==", + "dev": true + }, + "language-subtag-registry": { + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz", + "integrity": "sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==", + "dev": true + }, + "language-tags": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", + "integrity": "sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=", + "dev": true, + "requires": { + "language-subtag-registry": "~0.3.2" + } + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "devOptional": true + }, + "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, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lilconfig": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", + "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==", + "dev": true + }, + "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==", + "devOptional": true + }, + "lint-staged": { + "version": "12.4.1", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.4.1.tgz", + "integrity": "sha512-PTXgzpflrQ+pODQTG116QNB+Q6uUTDg5B5HqGvNhoQSGt8Qy+MA/6zSnR8n38+sxP5TapzeQGTvoKni0KRS8Vg==", + "dev": true, + "requires": { + "cli-truncate": "^3.1.0", + "colorette": "^2.0.16", + "commander": "^8.3.0", + "debug": "^4.3.3", + "execa": "^5.1.1", + "lilconfig": "2.0.4", + "listr2": "^4.0.1", + "micromatch": "^4.0.4", + "normalize-path": "^3.0.0", + "object-inspect": "^1.12.0", + "pidtree": "^0.5.0", + "string-argv": "^0.3.1", + "supports-color": "^9.2.1", + "yaml": "^1.10.2" + }, + "dependencies": { + "lilconfig": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz", + "integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==", + "dev": true + }, + "supports-color": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.2.1.tgz", + "integrity": "sha512-Obv7ycoCTG51N7y175StI9BlAXrmgZrFhZOb0/PyjHBher/NmsdBgbbQ1Inhq+gIhz6+7Gb+jWF2Vqi7Mf1xnQ==", + "dev": true + } + } + }, + "listr2": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-4.0.5.tgz", + "integrity": "sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==", + "dev": true, + "requires": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.5.5", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "requires": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "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 + }, + "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 + }, + "slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + } + } + }, + "loader-runner": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "dev": true + }, + "loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "devOptional": true + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "devOptional": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "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 + }, + "lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=", + "optional": true, + "peer": true + }, + "lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "devOptional": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "devOptional": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "devOptional": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "requires": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "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 + }, + "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 + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "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, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } + } + }, + "logkitty": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz", + "integrity": "sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==", + "optional": true, + "peer": true, + "requires": { + "ansi-fragments": "^0.2.1", + "dayjs": "^1.8.15", + "yargs": "^15.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "optional": true, + "peer": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "optional": true, + "peer": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "optional": true, + "peer": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "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==", + "optional": true, + "peer": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "optional": true, + "peer": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "optional": true, + "peer": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "optional": true, + "peer": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "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==", + "optional": true, + "peer": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "optional": true, + "peer": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "optional": true, + "peer": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "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==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "optional": true, + "peer": true + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "optional": true, + "peer": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "optional": true, + "peer": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "longest-streak": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", + "dev": true + }, + "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==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, + "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==", + "requires": { + "yallist": "^4.0.0" + } + }, + "lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", + "dev": true, + "requires": { + "es5-ext": "~0.10.2" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "make-fetch-happen": { + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.5.tgz", + "integrity": "sha512-mucOj2H0Jn/ax7H9K9T1bf0p1nn/mBFa551Os7ed9xRfLEx20aZhZeLslmRYfAaAqXZUGipcs+m5KOKvOH0XKA==", + "dev": true, + "requires": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.1.1", + "ssri": "^9.0.0" + }, + "dependencies": { + "@npmcli/fs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.0.tgz", + "integrity": "sha512-DmfBvNXGaetMxj9LTp8NAN9vEidXURrf5ZTslQzEAi/6GbW+4yjaLFQc6Tue5cpZ9Frlk4OBo/Snf1Bh/S7qTQ==", + "dev": true, + "requires": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + } + }, + "@npmcli/move-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.0.tgz", + "integrity": "sha512-UR6D5f4KEGWJV6BGPH3Qb2EtgH+t+1XQ1Tt85c7qicN6cezzuHPdZwwAxqZr4JLtnQu0LZsTza/5gmNmSl8XLg==", + "dev": true, + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, + "@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "cacache": { + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.0.tgz", + "integrity": "sha512-Pk4aQkwCW82A4jGKFvcGkQFqZcMspfP9YWq9Pr87/ldDvlWf718zeI6KWCdKt/jeihu6BytHRUicJPB1K2k8EQ==", + "dev": true, + "requires": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^1.1.1" + } + }, + "glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "requires": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + } + }, + "lru-cache": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.10.1.tgz", + "integrity": "sha512-BQuhQxPuRl79J5zSXRP+uNzPOyZw2oFI9JLRQ80XswSvg21KMKNtQza9eF42rfI/3Z40RvzBdXgziEkudzjo8A==", + "dev": true + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } + } + }, + "ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "dev": true, + "requires": { + "minipass": "^3.1.1" + } + } + } + }, + "makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "devOptional": true, + "requires": { + "tmpl": "1.0.5" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "optional": true, + "peer": true + }, + "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 + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "optional": true, + "peer": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "mathml-tag-names": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", + "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", + "dev": true + }, + "md5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", + "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=", + "devOptional": true, + "requires": { + "charenc": "~0.0.1", + "crypt": "~0.0.1", + "is-buffer": "~1.1.1" + } + }, + "md5-file": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/md5-file/-/md5-file-3.2.3.tgz", + "integrity": "sha512-3Tkp1piAHaworfcCgH0jKbTvj1jWWFgbvh2cXaNCgHwyTCBxxvD1Y04rmfpvdPm1P4oXMOpm6+2H7sr7v9v8Fw==", + "optional": true, + "peer": true, + "requires": { + "buffer-alloc": "^1.1.0" + } + }, + "md5hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/md5hex/-/md5hex-1.0.0.tgz", + "integrity": "sha1-7XS0d6Luk2n3Xv7i8I1ZFeUqQug=", + "optional": true, + "peer": true + }, + "mdast-util-from-markdown": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", + "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", + "dev": true, + "requires": { + "@types/mdast": "^3.0.0", + "mdast-util-to-string": "^2.0.0", + "micromark": "~2.11.0", + "parse-entities": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + } + }, + "mdast-util-to-markdown": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", + "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "longest-streak": "^2.0.0", + "mdast-util-to-string": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.0.0", + "zwitch": "^1.0.0" + } + }, + "mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "dev": true + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "devOptional": true + }, + "memfs": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz", + "integrity": "sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==", + "dev": true, + "requires": { + "fs-monkey": "1.0.3" + } + }, + "memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" + }, + "memoizee": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", + "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", + "dev": true, + "requires": { + "d": "^1.0.1", + "es5-ext": "^0.10.53", + "es6-weak-map": "^2.0.3", + "event-emitter": "^0.3.5", + "is-promise": "^2.2.2", + "lru-queue": "^0.1.0", + "next-tick": "^1.1.0", + "timers-ext": "^0.1.7" + } + }, + "memory-cache": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/memory-cache/-/memory-cache-0.2.0.tgz", + "integrity": "sha1-eJCwHVLADI68nVM+H46xfjA0hxo=", + "optional": true, + "peer": true + }, + "memory-fs": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz", + "integrity": "sha1-8rslNovBIeORwlIN6Slpyu4KApA=", + "dev": true + }, + "meow": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "dev": true, + "requires": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize": "^1.2.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "dependencies": { + "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 + } + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "devOptional": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "devOptional": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "metro": { + "version": "0.67.0", + "resolved": "https://registry.npmjs.org/metro/-/metro-0.67.0.tgz", + "integrity": "sha512-DwuBGAFcAivoac/swz8Lp7Y5Bcge1tzT7T6K0nf1ubqJP8YzBUtyR4pkjEYVUzVu/NZf7O54kHSPVu1ibYzOBQ==", + "optional": true, + "peer": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/core": "^7.14.0", + "@babel/generator": "^7.14.0", + "@babel/parser": "^7.14.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.0.0", + "absolute-path": "^0.0.0", + "accepts": "^1.3.7", + "async": "^2.4.0", + "chalk": "^4.0.0", + "ci-info": "^2.0.0", + "connect": "^3.6.5", + "debug": "^2.2.0", + "denodeify": "^1.2.1", + "error-stack-parser": "^2.0.6", + "fs-extra": "^1.0.0", + "graceful-fs": "^4.1.3", + "hermes-parser": "0.5.0", + "image-size": "^0.6.0", + "invariant": "^2.2.4", + "jest-haste-map": "^27.3.1", + "jest-worker": "^26.0.0", + "lodash.throttle": "^4.1.1", + "metro-babel-transformer": "0.67.0", + "metro-cache": "0.67.0", + "metro-cache-key": "0.67.0", + "metro-config": "0.67.0", + "metro-core": "0.67.0", + "metro-hermes-compiler": "0.67.0", + "metro-inspector-proxy": "0.67.0", + "metro-minify-uglify": "0.67.0", + "metro-react-native-babel-preset": "0.67.0", + "metro-resolver": "0.67.0", + "metro-runtime": "0.67.0", + "metro-source-map": "0.67.0", + "metro-symbolicate": "0.67.0", + "metro-transform-plugins": "0.67.0", + "metro-transform-worker": "0.67.0", + "mime-types": "^2.1.27", + "mkdirp": "^0.5.1", + "node-fetch": "^2.2.0", + "nullthrows": "^1.1.1", + "rimraf": "^2.5.4", + "serialize-error": "^2.1.0", + "source-map": "^0.5.6", + "strip-ansi": "^6.0.0", + "temp": "0.8.3", + "throat": "^5.0.0", + "ws": "^7.5.1", + "yargs": "^15.3.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "optional": true, + "peer": true + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "optional": true, + "peer": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "optional": true, + "peer": true, + "requires": { + "ms": "2.0.0" + } + }, + "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==", + "optional": true, + "peer": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "optional": true, + "peer": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "fs-extra": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", + "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", + "optional": true, + "peer": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "optional": true, + "peer": true + }, + "jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "optional": true, + "peer": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "optional": true, + "peer": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "optional": true, + "peer": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "optional": true, + "peer": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "optional": true, + "peer": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "optional": true, + "peer": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "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==", + "optional": true, + "peer": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "optional": true, + "peer": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "optional": true, + "peer": true, + "requires": { + "glob": "^7.1.3" + } + }, + "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==", + "optional": true, + "peer": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "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==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "temp": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", + "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=", + "optional": true, + "peer": true, + "requires": { + "os-tmpdir": "^1.0.0", + "rimraf": "~2.2.6" + }, + "dependencies": { + "rimraf": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", + "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", + "optional": true, + "peer": true + } + } + }, + "throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "optional": true, + "peer": true + }, + "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==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "optional": true, + "peer": true + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "optional": true, + "peer": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "optional": true, + "peer": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "metro-babel-transformer": { + "version": "0.67.0", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.67.0.tgz", + "integrity": "sha512-SBqc4nq/dgsPNFm+mpWcQQzJaXnh0nrfz2pSnZC4i6zMtIakrTWb8SQ78jOU1FZVEZ3nu9xCYVHS9Tbr/LoEuw==", + "optional": true, + "peer": true, + "requires": { + "@babel/core": "^7.14.0", + "hermes-parser": "0.5.0", + "metro-source-map": "0.67.0", + "nullthrows": "^1.1.1" + } + }, + "metro-cache": { + "version": "0.67.0", + "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.67.0.tgz", + "integrity": "sha512-IY5dXiR76L75b2ue/mv+9vW8g5hdQJU6YEe81lj6gTSoUrhcONT0rzY+Gh5QOS2Kk6z9utZQMvd9PRKL9/635A==", + "optional": true, + "peer": true, + "requires": { + "metro-core": "0.67.0", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "optional": true, + "peer": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "metro-cache-key": { + "version": "0.67.0", + "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.67.0.tgz", + "integrity": "sha512-FNJe5Rcb2uzY6G6tsqCf0RV4t2rCeX6vSHBxmP7k+4aI4NqX4evtPI0K82r221nBzm5DqNWCURZ0RYUT6jZMGA==", + "optional": true, + "peer": true + }, + "metro-config": { + "version": "0.67.0", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.67.0.tgz", + "integrity": "sha512-ThAwUmzZwTbKyyrIn2bKIcJDPDBS0LKAbqJZQioflvBGfcgA21h3fdL3IxRmvCEl6OnkEWI0Tn1Z9w2GLAjf2g==", + "optional": true, + "peer": true, + "requires": { + "cosmiconfig": "^5.0.5", + "jest-validate": "^26.5.2", + "metro": "0.67.0", + "metro-cache": "0.67.0", + "metro-core": "0.67.0", + "metro-runtime": "0.67.0" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "optional": true, + "peer": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.14", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", + "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", + "optional": true, + "peer": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "optional": true, + "peer": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "optional": true, + "peer": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "optional": true, + "peer": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "optional": true, + "peer": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "optional": true, + "peer": true + }, + "jest-validate": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", + "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^26.6.2", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "leven": "^3.1.0", + "pretty-format": "^26.6.2" + } + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "optional": true, + "peer": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "optional": true, + "peer": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "optional": true, + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "metro-core": { + "version": "0.67.0", + "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.67.0.tgz", + "integrity": "sha512-TOa/ShE1bUq83fGNfV6rFwyfZ288M8ydmWN3g9C2OW8emOHLhJslYD/SIU4DhDkP/99yaJluIALdZ2g0+pCrvQ==", + "optional": true, + "peer": true, + "requires": { + "jest-haste-map": "^27.3.1", + "lodash.throttle": "^4.1.1", + "metro-resolver": "0.67.0" + } + }, + "metro-hermes-compiler": { + "version": "0.67.0", + "resolved": "https://registry.npmjs.org/metro-hermes-compiler/-/metro-hermes-compiler-0.67.0.tgz", + "integrity": "sha512-X5Pr1jC8/kO6d1EBDJ6yhtuc5euHX89UDNv8qdPJHAET03xfFnlojRPwOw6il2udAH20WLBv+F5M9VY+58zspQ==", + "optional": true, + "peer": true + }, + "metro-inspector-proxy": { + "version": "0.67.0", + "resolved": "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.67.0.tgz", + "integrity": "sha512-5Ubjk94qpNaU3OT2IZa4/dec09bauic1hzWms4czorBzDenkp4kYXG9/aWTmgQLtCk92H3Q8jKl1PQRxUSkrOQ==", + "optional": true, + "peer": true, + "requires": { + "connect": "^3.6.5", + "debug": "^2.2.0", + "ws": "^7.5.1", + "yargs": "^15.3.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "optional": true, + "peer": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "optional": true, + "peer": true, + "requires": { + "ms": "2.0.0" + } + }, + "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==", + "optional": true, + "peer": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "optional": true, + "peer": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "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==", + "optional": true, + "peer": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "optional": true, + "peer": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "optional": true, + "peer": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "optional": true, + "peer": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "optional": true, + "peer": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "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==", + "optional": true, + "peer": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "optional": true, + "peer": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "optional": true, + "peer": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "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==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "optional": true, + "peer": true + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "optional": true, + "peer": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "optional": true, + "peer": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "metro-minify-uglify": { + "version": "0.67.0", + "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.67.0.tgz", + "integrity": "sha512-4CmM5b3MTAmQ/yFEfsHOhD2SuBObB2YF6PKzXZc4agUsQVVtkrrNElaiWa8w26vrTzA9emwcyurxMf4Nl3lYPQ==", + "optional": true, + "peer": true, + "requires": { + "uglify-es": "^3.1.9" + } + }, + "metro-react-native-babel-preset": { + "version": "0.67.0", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.67.0.tgz", + "integrity": "sha512-tgTG4j0SKwLHbLRELMmgkgkjV1biYkWlGGKOmM484/fJC6bpDikdaFhfjsyE+W+qt7I5szbCPCickMTNQ+zwig==", + "optional": true, + "peer": true, + "requires": { + "@babel/core": "^7.14.0", + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-export-default-from": "^7.0.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", + "@babel/plugin-proposal-optional-chaining": "^7.0.0", + "@babel/plugin-syntax-dynamic-import": "^7.0.0", + "@babel/plugin-syntax-export-default-from": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.2.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-syntax-optional-chaining": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-async-to-generator": "^7.0.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.0.0", + "@babel/plugin-transform-exponentiation-operator": "^7.0.0", + "@babel/plugin-transform-flow-strip-types": "^7.0.0", + "@babel/plugin-transform-for-of": "^7.0.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-object-assign": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-react-jsx-self": "^7.0.0", + "@babel/plugin-transform-react-jsx-source": "^7.0.0", + "@babel/plugin-transform-regenerator": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-sticky-regex": "^7.0.0", + "@babel/plugin-transform-template-literals": "^7.0.0", + "@babel/plugin-transform-typescript": "^7.5.0", + "@babel/plugin-transform-unicode-regex": "^7.0.0", + "@babel/template": "^7.0.0", + "react-refresh": "^0.4.0" + } + }, + "metro-react-native-babel-transformer": { + "version": "0.67.0", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.67.0.tgz", + "integrity": "sha512-P0JT09n7T01epUtgL9mH6BPat3xn4JjBakl4lWHdL61cvEGcrxuIom1eoFFKkgU/K5AVLU4aCAttHS7nSFCcEQ==", + "optional": true, + "peer": true, + "requires": { + "@babel/core": "^7.14.0", + "babel-preset-fbjs": "^3.4.0", + "hermes-parser": "0.5.0", + "metro-babel-transformer": "0.67.0", + "metro-react-native-babel-preset": "0.67.0", + "metro-source-map": "0.67.0", + "nullthrows": "^1.1.1" + } + }, + "metro-resolver": { + "version": "0.67.0", + "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.67.0.tgz", + "integrity": "sha512-d2KS/zAyOA/z/q4/ff41rAp+1txF4H6qItwpsls/RHStV2j6PqgRHUzq/3ga+VIeoUJntYJ8nGW3+3qSrhFlig==", + "optional": true, + "peer": true, + "requires": { + "absolute-path": "^0.0.0" + } + }, + "metro-runtime": { + "version": "0.67.0", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.67.0.tgz", + "integrity": "sha512-IFtSL0JUt1xK3t9IoLflTDft82bjieSzdIJWLzrRzBMlesz8ox5bVmnpQbVQEwfYUpEOxbM3VOZauVbdCmXA7g==", + "optional": true, + "peer": true + }, + "metro-source-map": { + "version": "0.67.0", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.67.0.tgz", + "integrity": "sha512-yxypInsRo3SfS00IgTuL6a2W2tfwLY//vA2E+GeqGBF5zTbJZAhwNGIEl8S87XXZhwzJcxf5/8LjJC1YDzabww==", + "optional": true, + "peer": true, + "requires": { + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.0.0", + "invariant": "^2.2.4", + "metro-symbolicate": "0.67.0", + "nullthrows": "^1.1.1", + "ob1": "0.67.0", + "source-map": "^0.5.6", + "vlq": "^1.0.0" + } + }, + "metro-symbolicate": { + "version": "0.67.0", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.67.0.tgz", + "integrity": "sha512-ZqVVcfa0xSz40eFzA5P8pCF3V6Tna9RU1prFzAJTa3j9dCGqwh0HTXC8AIkMtgX7hNdZrCJI1YipzUBlwkT0/A==", + "optional": true, + "peer": true, + "requires": { + "invariant": "^2.2.4", + "metro-source-map": "0.67.0", + "nullthrows": "^1.1.1", + "source-map": "^0.5.6", + "through2": "^2.0.1", + "vlq": "^1.0.0" + } + }, + "metro-transform-plugins": { + "version": "0.67.0", + "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.67.0.tgz", + "integrity": "sha512-DQFoSDIJdTMPDTUlKaCNJjEXiHGwFNneAF9wDSJ3luO5gigM7t7MuSaPzF4hpjmfmcfPnRhP6AEn9jcza2Sh8Q==", + "optional": true, + "peer": true, + "requires": { + "@babel/core": "^7.14.0", + "@babel/generator": "^7.14.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.14.0", + "nullthrows": "^1.1.1" + } + }, + "metro-transform-worker": { + "version": "0.67.0", + "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.67.0.tgz", + "integrity": "sha512-29n+JdTb80ROiv/wDiBVlY/xRAF/nrjhp/Udv/XJl1DZb+x7JEiPxpbpthPhwwl+AYxVrostGB0W06WJ61hfiw==", + "optional": true, + "peer": true, + "requires": { + "@babel/core": "^7.14.0", + "@babel/generator": "^7.14.0", + "@babel/parser": "^7.14.0", + "@babel/types": "^7.0.0", + "babel-preset-fbjs": "^3.4.0", + "metro": "0.67.0", + "metro-babel-transformer": "0.67.0", + "metro-cache": "0.67.0", + "metro-cache-key": "0.67.0", + "metro-hermes-compiler": "0.67.0", + "metro-source-map": "0.67.0", + "metro-transform-plugins": "0.67.0", + "nullthrows": "^1.1.1" + } + }, + "microbuffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/microbuffer/-/microbuffer-1.0.0.tgz", + "integrity": "sha1-izgy7UDIfVH0e7I0kTppinVtGdI=", + "dev": true + }, + "micromark": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", + "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", + "dev": true, + "requires": { + "debug": "^4.0.0", + "parse-entities": "^2.0.0" + } + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "devOptional": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "optional": true, + "peer": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "devOptional": true + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "devOptional": true, + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "devOptional": true + }, + "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 + }, + "mini-css-extract-plugin": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.0.tgz", + "integrity": "sha512-ndG8nxCEnAemsg4FSgS+yNyHKgkTB4nPKqCOgh65j3/30qqC5RaSQQXMm++Y6sb6E1zRSxPkztj9fqxhS1Eo6w==", + "dev": true, + "requires": { + "schema-utils": "^4.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "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 + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "devOptional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "devOptional": true + }, + "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, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + } + }, + "minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "devOptional": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "devOptional": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-fetch": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.0.tgz", + "integrity": "sha512-H9U4UVBGXEyyWJnqYDCLp1PwD8XIkJ4akNHp1aGVI+2Ym7wQMlxDKi4IB4JbmyU+pl9pEs/cVrK6cOuvmbK4Sg==", + "dev": true, + "requires": { + "encoding": "^0.1.13", + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "devOptional": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "devOptional": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "devOptional": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "optional": true, + "peer": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "optional": true, + "peer": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "mrmime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.0.tgz", + "integrity": "sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ==", + "dev": true + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "devOptional": true + }, + "msrcrypto": { + "version": "1.5.8", + "resolved": "https://registry.npmjs.org/msrcrypto/-/msrcrypto-1.5.8.tgz", + "integrity": "sha512-ujZ0TRuozHKKm6eGbKHfXef7f+esIhEckmThVnz7RNyiOJd7a6MXj2JGBoL9cnPDW+JMG16MoTUh5X+XXjI66Q==" + }, + "multicast-dns": { + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.4.tgz", + "integrity": "sha512-XkCYOU+rr2Ft3LI6w4ye51M3VK31qJXFIxu0XLw169PtKG0Zx47OrXeVW/GCYOfpC9s1yyyf1S+L8/4LY0J9Zw==", + "dev": true, + "requires": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + } + }, + "mv": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=", + "optional": true, + "peer": true, + "requires": { + "mkdirp": "~0.5.1", + "ncp": "~2.0.0", + "rimraf": "~2.4.0" + }, + "dependencies": { + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "optional": true, + "peer": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "rimraf": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=", + "optional": true, + "peer": true, + "requires": { + "glob": "^6.0.1" + } + } + } + }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "optional": true, + "peer": true, + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "nan": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", + "dev": true + }, + "nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "optional": true, + "peer": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", + "optional": true, + "peer": true + }, + "neatequal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/neatequal/-/neatequal-1.0.0.tgz", + "integrity": "sha1-LuEhG8n6bkxVcV/SELsFYC6xrjs=", + "dev": true, + "requires": { + "varstream": "^0.3.2" + } + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "devOptional": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "devOptional": true + }, + "nested-error-stacks": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.0.1.tgz", + "integrity": "sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==", + "optional": true, + "peer": true + }, + "next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "devOptional": true + }, + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "requires": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "nocache": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/nocache/-/nocache-2.1.0.tgz", + "integrity": "sha512-0L9FvHG3nfnnmaEQPjT9xhfN4ISk0A8/2j4M37Np4mcDesJjHgEUfgPhdCyZuFI954tjokaIj/A3NdpFNdEh4Q==", + "optional": true, + "peer": true + }, + "node-dir": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", + "integrity": "sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU=", + "optional": true, + "peer": true, + "requires": { + "minimatch": "^3.0.2" + } + }, + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "requires": { + "whatwg-url": "^5.0.0" + }, + "dependencies": { + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + } + } + }, + "node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "devOptional": true + }, + "node-gyp": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.0.0.tgz", + "integrity": "sha512-Ma6p4s+XCTPxCuAMrOA/IJRmVy16R8Sdhtwl4PrCr7IBlj4cPawF0vg/l7nOT1jPbuNS7lIRJpBSvVsXwEZuzw==", + "dev": true, + "requires": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^5.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "dependencies": { + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "devOptional": true + }, + "node-releases": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.4.tgz", + "integrity": "sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==", + "devOptional": true + }, + "node-stream-zip": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz", + "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==", + "optional": true, + "peer": true + }, + "nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "requires": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "devOptional": true + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-selector": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz", + "integrity": "sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=", + "dev": true + }, + "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 + }, + "npm-package-arg": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-7.0.0.tgz", + "integrity": "sha512-xXxr8y5U0kl8dVkz2oK7yZjPBvqM2fwaO5l3Yg13p03v8+E3qQcD0JNhHzjL1vyGgxcKkD0cco+NLR72iuPk3g==", + "optional": true, + "peer": true, + "requires": { + "hosted-git-info": "^3.0.2", + "osenv": "^0.1.5", + "semver": "^5.6.0", + "validate-npm-package-name": "^3.0.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", + "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", + "optional": true, + "peer": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "optional": true, + "peer": true + } + } + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "dev": true, + "requires": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + } + }, + "nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "nullthrows": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", + "optional": true, + "peer": true + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "number-to-bn": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", + "integrity": "sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA=", + "requires": { + "bn.js": "4.11.6", + "strip-hex-prefix": "1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" + } + } + }, + "nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true + }, + "ob1": { + "version": "0.67.0", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.67.0.tgz", + "integrity": "sha512-YvZtX8HKYackQ5PwdFIuuNFVsMChRPHvnARRRT0Vk59xsBvL5t9U1Ock3M1sYrKj+Gp73+0q9xcHLAxI+xLi5g==", + "optional": true, + "peer": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "devOptional": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "optional": true, + "peer": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "optional": true, + "peer": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "optional": true, + "peer": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "optional": true, + "peer": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "optional": true, + "peer": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "optional": true, + "peer": true + } + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, + "peer": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "devOptional": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "optional": true, + "peer": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "devOptional": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "object.entries": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", + "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "object.fromentries": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", + "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "object.hasown": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz", + "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "optional": true, + "peer": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "devOptional": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "devOptional": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "devOptional": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "devOptional": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "devOptional": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "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" + } + }, + "ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "optional": true, + "peer": true, + "requires": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "optional": true, + "peer": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "optional": true, + "peer": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "optional": true, + "peer": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "devOptional": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "devOptional": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-retry": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", + "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", + "dev": true, + "requires": { + "@types/retry": "^0.12.0", + "retry": "^0.13.1" + }, + "dependencies": { + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true + } + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "pako": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.0.4.tgz", + "integrity": "sha512-v8tweI900AUkZN6heMU/4Uy4cXRc2AYNRggVmTR+dEncawDJgCdLMximOVA2p4qO57WMynangsfGRb5WD6L1Bg==" + }, + "param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "requires": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parse-png": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/parse-png/-/parse-png-2.1.0.tgz", + "integrity": "sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==", + "optional": true, + "peer": true, + "requires": { + "pngjs": "^3.3.0" + } + }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "devOptional": true + }, + "pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "optional": true, + "peer": true + }, + "password-prompt": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/password-prompt/-/password-prompt-1.1.2.tgz", + "integrity": "sha512-bpuBhROdrhuN3E7G/koAju0WjVw9/uQOG5Co5mokNj0MiOSBVZS1JTwM4zl55hu0WFmIEFvO9cU9sJQiBIYeIA==", + "optional": true, + "peer": true, + "requires": { + "ansi-escapes": "^3.1.0", + "cross-spawn": "^6.0.5" + }, + "dependencies": { + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "optional": true, + "peer": true + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "optional": true, + "peer": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "optional": true, + "peer": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "optional": true, + "peer": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "optional": true, + "peer": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "optional": true, + "peer": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "optional": true, + "peer": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "optional": true, + "peer": true + }, + "path-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", + "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", + "dev": true, + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "devOptional": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "devOptional": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "devOptional": true + }, + "path-to-regexp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", + "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "devOptional": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "devOptional": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "devOptional": true + }, + "pidtree": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.5.0.tgz", + "integrity": "sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "optional": true, + "peer": true + }, + "pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "devOptional": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-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 + }, + "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 + } + } + }, + "pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "optional": true, + "peer": true, + "requires": { + "find-up": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "optional": true, + "peer": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "optional": true, + "peer": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "optional": true, + "peer": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "optional": true, + "peer": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "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==", + "optional": true, + "peer": true + } + } + }, + "playwright-core": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.22.0.tgz", + "integrity": "sha512-XnDPiV4NCzTtXWxQdyJ6Wg8xhST3ciUjt5mITaxoqOoYggmRtofKm0PXLehfbetXh2ppPYj5U8UhtUpdIE4wag==", + "dev": true + }, + "plist": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.5.tgz", + "integrity": "sha512-83vX4eYdQp3vP9SxuYgEM/G/pJQqLUz/V/xzPrzruLs7fz7jxGQ1msZ/mg1nwZxUSuOp4sb+/bEIbRrbzZRxDA==", + "optional": true, + "peer": true, + "requires": { + "base64-js": "^1.5.1", + "xmlbuilder": "^9.0.7" + }, + "dependencies": { + "xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", + "optional": true, + "peer": true + } + } + }, + "pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "optional": true, + "peer": true + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "optional": true, + "peer": true + }, + "postcss": { + "version": "8.4.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", + "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "dev": true, + "requires": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-colormin": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", + "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-convert-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.0.tgz", + "integrity": "sha512-GkyPbZEYJiWtQB0KZ0X6qusqFHUepguBCNFi9t5JJc7I2OTXG7C0twbTLvCfaKOLl3rSXmpAwV7W5txd91V84g==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-discard-comments": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.1.tgz", + "integrity": "sha512-5JscyFmvkUxz/5/+TB3QTTT9Gi9jHkcn8dcmmuN68JQcv3aQg4y88yEHHhwFB52l/NkaJ43O0dbksGMAo49nfQ==", + "dev": true, + "requires": {} + }, + "postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "dev": true, + "requires": {} + }, + "postcss-discard-empty": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", + "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "dev": true, + "requires": {} + }, + "postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "dev": true, + "requires": {} + }, + "postcss-html": { + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-0.36.0.tgz", + "integrity": "sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==", + "dev": true, + "requires": { + "htmlparser2": "^3.10.0" + }, + "dependencies": { + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + } + } + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + } + } + }, + "postcss-less": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-3.1.4.tgz", + "integrity": "sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA==", + "dev": true, + "requires": { + "postcss": "^7.0.14" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "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 + } + } + }, + "postcss-loader": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.0.0.tgz", + "integrity": "sha512-IDyttebFzTSY6DI24KuHUcBjbAev1i+RyICoPEWcAstZsj03r533uMXtDn506l6/wlsRYiS5XBdx7TpccCsyUg==", + "dev": true, + "requires": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.7" + }, + "dependencies": { + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "postcss-media-query-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=", + "dev": true + }, + "postcss-merge-longhand": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.3.tgz", + "integrity": "sha512-lX8GPGvZ0iGP/IboM7HXH5JwkXvXod1Rr8H8ixwiA372hArk0zP4ZcCy4z4Prg/bfNlbbTf0KCOjCF9kKnpP/w==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.0" + } + }, + "postcss-merge-rules": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.1.tgz", + "integrity": "sha512-8wv8q2cXjEuCcgpIB1Xx1pIy8/rhMPIQqYKNzEdyx37m6gpq83mQQdCxgIkFgliyEnKvdwJf/C61vN4tQDq4Ww==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-gradients": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", + "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "dev": true, + "requires": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-params": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.2.tgz", + "integrity": "sha512-aEP+p71S/urY48HWaRHasyx4WHQJyOYaKpQ6eXl8k0kxg66Wt/30VR6/woh8THgcpRbonJD5IeD+CzNhPi1L8g==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-selectors": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.0.tgz", + "integrity": "sha512-vYxvHkW+iULstA+ctVNx0VoRAR4THQQRkG77o0oa4/mBS0OzGvvzLIvHDv/nNEM0crzN2WIyFU5X7wZhaUK3RA==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-modules": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.3.1.tgz", + "integrity": "sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==", + "dev": true, + "requires": { + "generic-names": "^4.0.0", + "icss-replace-symbols": "^1.1.0", + "lodash.camelcase": "^4.3.0", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "string-hash": "^1.1.1" + } + }, + "postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "requires": {} + }, + "postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0" + } + }, + "postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "dev": true, + "requires": {} + }, + "postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-positions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.0.tgz", + "integrity": "sha512-8gmItgA4H5xiUxgN/3TVvXRoJxkAWLW6f/KKhdsH03atg0cB8ilXnrB5PpSshwVu/dD2ZsRFQcR1OEmSBDAgcQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-repeat-style": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.0.tgz", + "integrity": "sha512-IR3uBjc+7mcWGL6CtniKNQ4Rr5fTxwkaDHwMBDGGs1x9IVRkYIT/M4NelZWkAOBdV6v3Z9S46zqaKGlyzHSchw==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-string": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-unicode": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz", + "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "dev": true, + "requires": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-whitespace": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", + "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-ordered-values": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.1.tgz", + "integrity": "sha512-7lxgXF0NaoMIgyihL/2boNAEZKiW0+HkMhdKMTD93CjW8TdCy2hSdj8lsAo+uwm7EDG16Da2Jdmtqpedl0cMfw==", + "dev": true, + "requires": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-reduce-initial": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz", + "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-resolve-nested-selector": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", + "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=", + "dev": true + }, + "postcss-safe-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", + "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", + "dev": true, + "requires": {} + }, + "postcss-sass": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.4.4.tgz", + "integrity": "sha512-BYxnVYx4mQooOhr+zer0qWbSPYnarAy8ZT7hAQtbxtgVf8gy+LSLT/hHGe35h14/pZDTw1DsxdbrwxBN++H+fg==", + "dev": true, + "requires": { + "gonzales-pe": "^4.3.0", + "postcss": "^7.0.21" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "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 + } + } + }, + "postcss-scss": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.3.tgz", + "integrity": "sha512-j4KxzWovfdHsyxwl1BxkUal/O4uirvHgdzMKS1aWJBAV0qh2qj5qAZqpeBfVUYGWv+4iK9Az7SPyZ4fyNju1uA==", + "dev": true, + "requires": {} + }, + "postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-sorting": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-sorting/-/postcss-sorting-7.0.1.tgz", + "integrity": "sha512-iLBFYz6VRYyLJEJsBJ8M3TCqNcckVzz4wFounSc5Oez35ogE/X+aoC5fFu103Ot7NyvjU3/xqIXn93Gp3kJk4g==", + "dev": true, + "requires": {} + }, + "postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + } + }, + "postcss-syntax": { + "version": "0.36.2", + "resolved": "https://registry.npmjs.org/postcss-syntax/-/postcss-syntax-0.36.2.tgz", + "integrity": "sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==", + "dev": true, + "requires": {} + }, + "postcss-unique-selectors": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", + "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "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 + }, + "pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "optional": true, + "peer": true + }, + "pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dev": true, + "requires": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "devOptional": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "optional": true, + "peer": true + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "optional": true, + "peer": true, + "requires": { + "asap": "~2.0.3" + } + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "devOptional": true + }, + "promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "requires": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + } + }, + "prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "devOptional": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "devOptional": true, + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + }, + "dependencies": { + "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==", + "devOptional": true + } + } + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "dependencies": { + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + } + } + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "devOptional": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "pvtsutils": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.2.2.tgz", + "integrity": "sha512-OALo5ZEdqiI127i64+CXwkCOyFHUA+tCQgaUO/MvRDFXWPr53f2sx28ECNztUEzuyu5xvuuD1EB/szg9mwJoGA==", + "requires": { + "tslib": "^2.3.1" + } + }, + "pvutils": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz", + "integrity": "sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==" + }, + "qr-code-styling": { + "version": "git+ssh://git@github.com/zubiden/qr-code-styling.git#10f7cf3ff854f658918b5b2bd3ed91f90627a686", + "from": "qr-code-styling@github:zubiden/qr-code-styling#10f7cf3", + "requires": { + "qrcode-generator": "^1.4.4" + } + }, + "qrcode-generator": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/qrcode-generator/-/qrcode-generator-1.4.4.tgz", + "integrity": "sha512-HM7yY8O2ilqhmULxGMpcHSF1EhJJ9yBj8gvDEuZ6M+KGJ0YY2hKpnXvRD+hZPLrDVck3ExIGhmPtSdcjC+guuw==" + }, + "qrcode-terminal": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.11.0.tgz", + "integrity": "sha1-/8bCii/Av7RwUrR+I/T0RqX7254=", + "optional": true, + "peer": true + }, + "qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", + "dev": true + }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "optional": true, + "peer": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "devOptional": true + }, + "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 + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true + }, + "raw-body": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", + "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + } + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "devOptional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "devOptional": true + } + } + }, + "react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "requires": { + "loose-envify": "^1.1.0" + } + }, + "react-arborist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/react-arborist/-/react-arborist-1.2.0.tgz", + "integrity": "sha512-XVQisGeKQP7xVP71mw+PhAG0dVHFTDopw6qu+QvUiqukyLq5XFLdX6XS9cf56bSpb1zIMz6Gh+Fl/OcqlkgUsg==", + "requires": { + "memoize-one": "^6.0.0", + "react-dnd": "^14.0.3", + "react-dnd-html5-backend": "^14.0.1", + "react-window": "^1.8.6" + } + }, + "react-devtools-core": { + "version": "4.24.6", + "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.24.6.tgz", + "integrity": "sha512-+6y6JAtAo1NUUxaCwCYTb13ViBpc7RjNTlj1HZRlDJmi7UYToj5+BNn8Duzz2YizzAzmRUWZkRM7OtqxnN6TnA==", + "optional": true, + "peer": true, + "requires": { + "shell-quote": "^1.6.1", + "ws": "^7" + } + }, + "react-dnd": { + "version": "14.0.5", + "resolved": "https://registry.npmjs.org/react-dnd/-/react-dnd-14.0.5.tgz", + "integrity": "sha512-9i1jSgbyVw0ELlEVt/NkCUkxy1hmhJOkePoCH713u75vzHGyXhPDm28oLfc2NMSBjZRM1Y+wRjHXJT3sPrTy+A==", + "requires": { + "@react-dnd/invariant": "^2.0.0", + "@react-dnd/shallowequal": "^2.0.0", + "dnd-core": "14.0.1", + "fast-deep-equal": "^3.1.3", + "hoist-non-react-statics": "^3.3.2" + } + }, + "react-dnd-html5-backend": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/react-dnd-html5-backend/-/react-dnd-html5-backend-14.1.0.tgz", + "integrity": "sha512-6ONeqEC3XKVf4eVmMTe0oPds+c5B9Foyj8p/ZKLb7kL2qh9COYxiBHv3szd6gztqi/efkmriywLUVlPotqoJyw==", + "requires": { + "dnd-core": "14.0.1" + } + }, + "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==", + "peer": true, + "requires": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "dependencies": { + "scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "peer": true, + "requires": { + "loose-envify": "^1.1.0" + } + } + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "devOptional": true + }, + "react-native-codegen": { + "version": "0.0.17", + "resolved": "https://registry.npmjs.org/react-native-codegen/-/react-native-codegen-0.0.17.tgz", + "integrity": "sha512-7GIEUmAemH9uWwB6iYXNNsPoPgH06pxzGRmdBzK98TgFBdYJZ7CBuZFPMe4jmHQTPOkQazKZ/w5O6/71JBixmw==", + "optional": true, + "peer": true, + "requires": { + "@babel/parser": "^7.14.0", + "flow-parser": "^0.121.0", + "jscodeshift": "^0.13.1", + "nullthrows": "^1.1.1" + } + }, + "react-native-gradle-plugin": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/react-native-gradle-plugin/-/react-native-gradle-plugin-0.0.6.tgz", + "integrity": "sha512-eIlgtsmDp1jLC24dRn43hB3kEcZVqx6DUQbR0N1ABXGnMEafm9I3V3dUUeD1vh+Dy5WqijSoEwLNUPLgu5zDMg==", + "optional": true, + "peer": true + }, + "react-refresh": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz", + "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==", + "optional": true, + "peer": true + }, + "react-window": { + "version": "1.8.7", + "resolved": "https://registry.npmjs.org/react-window/-/react-window-1.8.7.tgz", + "integrity": "sha512-JHEZbPXBpKMmoNO1bNhoXOOLg/ujhL/BU4IqVU9r8eQPcy5KQnGHIHDRkJ0ns9IM5+Aq5LNwt3j8t3tIrePQzA==", + "requires": { + "@babel/runtime": "^7.0.0", + "memoize-one": ">=3.1.1 <6" + }, + "dependencies": { + "memoize-one": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", + "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" + } + } + }, + "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, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "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 + }, + "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, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "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 + } + } + }, + "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, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-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 + }, + "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 + }, + "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 + } + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "devOptional": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "readline": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz", + "integrity": "sha1-xYDXfvLPyHUrEySYBg3JeTp6wBw=", + "optional": true, + "peer": true + }, + "recast": { + "version": "0.20.5", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.20.5.tgz", + "integrity": "sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ==", + "optional": true, + "peer": true, + "requires": { + "ast-types": "0.14.2", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tslib": "^2.0.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true, + "peer": true + } + } + }, + "rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "requires": { + "resolve": "^1.9.0" + } + }, + "redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + } + }, + "redux": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.0.tgz", + "integrity": "sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA==", + "requires": { + "@babel/runtime": "^7.9.2" + } + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "devOptional": true + }, + "regenerate-unicode-properties": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", + "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", + "devOptional": true, + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + }, + "regenerator-transform": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", + "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "devOptional": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "optional": true, + "peer": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexp.prototype.flags": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz", + "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "regexpu-core": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", + "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", + "devOptional": true, + "requires": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.0.1", + "regjsgen": "^0.6.0", + "regjsparser": "^0.8.2", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + } + }, + "registry-auth-token": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", + "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", + "dev": true, + "requires": { + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" + } + }, + "registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "dev": true, + "requires": { + "rc": "^1.0.1" + } + }, + "regjsgen": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", + "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", + "devOptional": true + }, + "regjsparser": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", + "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "devOptional": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "devOptional": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "remark": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz", + "integrity": "sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==", + "dev": true, + "requires": { + "remark-parse": "^9.0.0", + "remark-stringify": "^9.0.0", + "unified": "^9.1.0" + } + }, + "remark-parse": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", + "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", + "dev": true, + "requires": { + "mdast-util-from-markdown": "^0.8.0" + } + }, + "remark-stringify": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz", + "integrity": "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==", + "dev": true, + "requires": { + "mdast-util-to-markdown": "^0.6.0" + } + }, + "remove-trailing-slash": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/remove-trailing-slash/-/remove-trailing-slash-0.1.1.tgz", + "integrity": "sha512-o4S4Qh6L2jpnCy83ysZDau+VORNvnFw07CKSAymkd6ICNVEPisMyzlc00KlvvicsxKck94SEwhDnMNdICzO+tA==", + "optional": true, + "peer": true + }, + "renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dev": true, + "requires": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "optional": true, + "peer": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "devOptional": true + }, + "replace-in-file": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/replace-in-file/-/replace-in-file-6.3.2.tgz", + "integrity": "sha512-Dbt5pXKvFVPL3WAaEB3ZX+95yP0CeAtIPJDwYzHbPP5EAHn+0UoegH/Wg3HKflU9dYBH8UnBC2NvY3P+9EZtTg==", + "dev": true, + "requires": { + "chalk": "^4.1.2", + "glob": "^7.2.0", + "yargs": "^17.2.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "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 + }, + "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 + }, + "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 + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "yargs": { + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.0.tgz", + "integrity": "sha512-WJudfrk81yWFSOkZYpAZx4Nt7V4xp7S/uJkX0CnxovMCt1wCE8LNftPpNuF9X/u9gN5nsD7ycYtRcDf2pL3UiA==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + } + }, + "yargs-parser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", + "dev": true + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "devOptional": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "devOptional": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "optional": true, + "peer": true + }, + "requireg": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/requireg/-/requireg-0.2.2.tgz", + "integrity": "sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==", + "optional": true, + "peer": true, + "requires": { + "nested-error-stacks": "~2.0.1", + "rc": "~1.2.7", + "resolve": "~1.7.1" + }, + "dependencies": { + "resolve": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", + "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", + "optional": true, + "peer": true, + "requires": { + "path-parse": "^1.0.5" + } + } + } + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "devOptional": true + }, + "reselect": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.5.tgz", + "integrity": "sha512-uVdlz8J7OO+ASpBYoz1Zypgx0KasCY20H+N8JD13oUMtPvSHQuscrHop4KbXrbsBcdB9Ds7lVK7eRkBIfO43vQ==", + "optional": true, + "peer": true + }, + "resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "devOptional": true, + "requires": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "resolve-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 + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "optional": true, + "peer": true + }, + "resolve.exports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", + "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "dev": true + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "devOptional": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "optional": true, + "peer": true + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "devOptional": true + }, + "rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "devOptional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "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==", + "devOptional": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rxjs": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", + "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", + "dev": true, + "requires": { + "tslib": "^2.1.0" + } + }, + "safari-14-idb-fix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/safari-14-idb-fix/-/safari-14-idb-fix-3.0.0.tgz", + "integrity": "sha512-eBNFLob4PMq8JA1dGyFn6G97q3/WzNtFK4RnzT1fnLq+9RyrGknzYiM/9B12MnKAxuj1IXr7UKYtTNtjyKMBog==" + }, + "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==", + "devOptional": true + }, + "safe-json-stringify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz", + "integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==", + "optional": true, + "peer": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "optional": true, + "peer": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "devOptional": true + }, + "sass": { + "version": "1.53.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.53.0.tgz", + "integrity": "sha512-zb/oMirbKhUgRQ0/GFz8TSAwRq2IlR29vOUJZOx0l8sV+CkHUfHa4u5nqrG+1VceZp7Jfj59SVW9ogdhTvJDcQ==", + "dev": true, + "requires": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + } + }, + "sass-loader": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.0.2.tgz", + "integrity": "sha512-BbiqbVmbfJaWVeOOAu2o7DhYWtcNmTfvroVgFXa6k2hHheMxNAeDHLNoDy/Q5aoaVlz0LH+MbMktKwm9vN/j8Q==", + "dev": true, + "requires": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "devOptional": true + }, + "saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "requires": { + "xmlchars": "^2.2.0" + } + }, + "scheduler": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "optional": true, + "peer": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selfsigned": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", + "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", + "dev": true, + "requires": { + "node-forge": "^1" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "devOptional": true + }, + "send": { + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", + "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "devOptional": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "1.8.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "devOptional": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "devOptional": true + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "devOptional": true + }, + "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==", + "devOptional": true + } + } + }, + "sentence-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", + "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } + }, + "serialize-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", + "integrity": "sha1-ULZ51WNc34Rme9yOWa9OW4HV9go=", + "optional": true, + "peer": true + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/serve/-/serve-13.0.2.tgz", + "integrity": "sha512-71R6fKvNgKrqARAag6lYJNnxDzpH7DCNrMuvPY5PLVaC2PDhJsGTj/34o4o4tPWhTuLgEXqvgnAWbATQ9zGZTQ==", + "dev": true, + "requires": { + "@zeit/schemas": "2.6.0", + "ajv": "6.12.6", + "arg": "2.0.0", + "boxen": "5.1.2", + "chalk": "2.4.1", + "clipboardy": "2.3.0", + "compression": "1.7.3", + "serve-handler": "6.1.3", + "update-check": "1.5.2" + }, + "dependencies": { + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "serve-handler": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.3.tgz", + "integrity": "sha512-FosMqFBNrLyeiIDvP1zgO6YoTzFYHxLDEIavhlmQ+knB2Z7l1t+kGLHkZIDN7UVWqQAmKI3D20A6F6jo3nDd4w==", + "dev": true, + "requires": { + "bytes": "3.0.0", + "content-disposition": "0.5.2", + "fast-url-parser": "1.1.3", + "mime-types": "2.1.18", + "minimatch": "3.0.4", + "path-is-inside": "1.0.2", + "path-to-regexp": "2.2.1", + "range-parser": "1.2.0" + }, + "dependencies": { + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "dev": true + }, + "mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "dev": true, + "requires": { + "mime-db": "~1.33.0" + } + } + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", + "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "devOptional": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.2" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "devOptional": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "optional": true, + "peer": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "optional": true, + "peer": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "optional": true, + "peer": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "optional": true, + "peer": true, + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "optional": true, + "peer": true + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "devOptional": true + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "devOptional": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "shell-quote": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", + "optional": true, + "peer": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "devOptional": true + }, + "simple-plist": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-1.3.1.tgz", + "integrity": "sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==", + "optional": true, + "peer": true, + "requires": { + "bplist-creator": "0.1.0", + "bplist-parser": "0.3.1", + "plist": "^3.0.5" + } + }, + "sirv": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz", + "integrity": "sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==", + "dev": true, + "requires": { + "@polka/url": "^1.0.0-next.20", + "mrmime": "^1.0.0", + "totalist": "^1.0.0" + } + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "devOptional": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "devOptional": true + }, + "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, + "requires": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz", + "integrity": "sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==", + "dev": true + } + } + }, + "slugify": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.5.tgz", + "integrity": "sha512-8mo9bslnBO3tr5PEVFzMPIWwWnipGS0xVbYf65zxDqfNwmzYn1LpiKNrR6DlClusuvo+hDHd1zKpmfAe83NQSQ==", + "devOptional": true + }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true + }, + "snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "dev": true, + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "optional": true, + "peer": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "optional": true, + "peer": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "optional": true, + "peer": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "optional": true, + "peer": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "optional": true, + "peer": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, + "peer": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "optional": true, + "peer": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, + "peer": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "optional": true, + "peer": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "optional": true, + "peer": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "optional": true, + "peer": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "optional": true, + "peer": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "optional": true, + "peer": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "optional": true, + "peer": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "optional": true, + "peer": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "optional": true, + "peer": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, + "peer": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "requires": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "socks": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", + "dev": true, + "requires": { + "ip": "^1.1.5", + "smart-buffer": "^4.2.0" + } + }, + "socks-proxy-agent": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.0.tgz", + "integrity": "sha512-wWqJhjb32Q6GsrUqzuFkukxb/zzide5quXYcMVpIjxalDBBYy2nqKCFQ/9+Ie4dvOYSQdOk3hUlZSdzZOd3zMQ==", + "dev": true, + "requires": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "optional": true, + "peer": true + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true + }, + "source-map-resolve": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", + "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0" + } + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "devOptional": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "devOptional": true + } + } + }, + "source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "optional": true, + "peer": true + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "dev": true + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "specificity": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/specificity/-/specificity-0.4.1.tgz", + "integrity": "sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==", + "dev": true + }, + "split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "optional": true, + "peer": true, + "requires": { + "through": "2" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "optional": true, + "peer": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "devOptional": true + }, + "ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "optional": true, + "peer": true, + "requires": { + "minipass": "^3.1.1" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "stack-utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", + "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + } + } + }, + "stackframe": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.1.tgz", + "integrity": "sha512-h88QkzREN/hy8eRdyNhhsO7RSJ5oyTqxxmmn0dzBIMUclZsjpfmrsg81vp8mjjAs2vAZ72nyWxRUwSwmh0e4xg==", + "optional": true, + "peer": true + }, + "stacktrace-parser": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", + "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", + "optional": true, + "peer": true, + "requires": { + "type-fest": "^0.7.1" + }, + "dependencies": { + "type-fest": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", + "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", + "optional": true, + "peer": true + } + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "optional": true, + "peer": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "optional": true, + "peer": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "optional": true, + "peer": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, + "peer": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "optional": true, + "peer": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, + "peer": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "optional": true, + "peer": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "optional": true, + "peer": true + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "devOptional": true + }, + "str2buf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/str2buf/-/str2buf-1.3.0.tgz", + "integrity": "sha512-xIBmHIUHYZDP4HyoXGHYNVmxlXLXDrtFHYT0eV6IOdEj3VO9ccaF1Ejl9Oq8iFjITllpT8FhaXb4KsNmw+3EuA==" + }, + "stream-buffers": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz", + "integrity": "sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ=", + "optional": true, + "peer": true + }, + "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==", + "devOptional": true, + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "devOptional": true + } + } + }, + "string-argv": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", + "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", + "dev": true + }, + "string-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", + "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=", + "dev": true + }, + "string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "requires": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + } + }, + "string-natural-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", + "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==", + "dev": true + }, + "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, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "dependencies": { + "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 + }, + "strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + } + } + }, + "string.prototype.matchall": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", + "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.4.1", + "side-channel": "^1.0.4" + } + }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "devOptional": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "devOptional": true + }, + "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 + }, + "strip-hex-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha1-DF8VX+8RUTczd96du1iNoFUA428=", + "requires": { + "is-hex-prefixed": "1.0.0" + } + }, + "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, + "requires": { + "min-indent": "^1.0.0" + } + }, + "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 + }, + "structured-headers": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/structured-headers/-/structured-headers-0.4.1.tgz", + "integrity": "sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==", + "optional": true, + "peer": true + }, + "style-loader": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", + "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", + "dev": true, + "requires": {} + }, + "style-search": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", + "integrity": "sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI=", + "dev": true + }, + "stylehacks": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", + "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "postcss-selector-parser": "^6.0.4" + } + }, + "stylelint": { + "version": "14.9.1", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.9.1.tgz", + "integrity": "sha512-RdAkJdPiLqHawCSnu21nE27MjNXaVd4WcOHA4vK5GtIGjScfhNnaOuWR2wWdfKFAvcWQPOYe311iveiVKSmwsA==", + "dev": true, + "requires": { + "@csstools/selector-specificity": "^2.0.1", + "balanced-match": "^2.0.0", + "colord": "^2.9.2", + "cosmiconfig": "^7.0.1", + "css-functions-list": "^3.1.0", + "debug": "^4.3.4", + "execall": "^2.0.0", + "fast-glob": "^3.2.11", + "fastest-levenshtein": "^1.0.12", + "file-entry-cache": "^6.0.1", + "get-stdin": "^8.0.0", + "global-modules": "^2.0.0", + "globby": "^11.1.0", + "globjoin": "^0.1.4", + "html-tags": "^3.2.0", + "ignore": "^5.2.0", + "import-lazy": "^4.0.0", + "imurmurhash": "^0.1.4", + "is-plain-object": "^5.0.0", + "known-css-properties": "^0.25.0", + "mathml-tag-names": "^2.1.3", + "meow": "^9.0.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.14", + "postcss-media-query-parser": "^0.2.3", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-safe-parser": "^6.0.0", + "postcss-selector-parser": "^6.0.10", + "postcss-value-parser": "^4.2.0", + "resolve-from": "^5.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "style-search": "^0.1.0", + "supports-hyperlinks": "^2.2.0", + "svg-tags": "^1.0.0", + "table": "^6.8.0", + "v8-compile-cache": "^2.3.0", + "write-file-atomic": "^4.0.1" + }, + "dependencies": { + "balanced-match": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", + "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "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 + }, + "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 + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "write-file-atomic": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.1.tgz", + "integrity": "sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + } + } + } + }, + "stylelint-config-clean-order": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/stylelint-config-clean-order/-/stylelint-config-clean-order-0.8.0.tgz", + "integrity": "sha512-/DSOrAtaCXX2Wh5M83r28jLl7VHY1JhlIdzjhxGxk/dDwKxu2ny77c5MQRZvRe3XX3dvfFqnFoCiX84F0rnzhQ==", + "dev": true, + "requires": { + "stylelint-order": "^5.0.0" + } + }, + "stylelint-config-recommended": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-7.0.0.tgz", + "integrity": "sha512-yGn84Bf/q41J4luis1AZ95gj0EQwRX8lWmGmBwkwBNSkpGSpl66XcPTulxGa/Z91aPoNGuIGBmFkcM1MejMo9Q==", + "dev": true, + "requires": {} + }, + "stylelint-config-recommended-scss": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-6.0.0.tgz", + "integrity": "sha512-6QOe2/OzXV2AP5FE12A7+qtKdZik7Saf42SMMl84ksVBBPpTdrV+9HaCbPYiRMiwELY9hXCVdH4wlJ+YJb5eig==", + "dev": true, + "requires": { + "postcss-scss": "^4.0.2", + "stylelint-config-recommended": "^7.0.0", + "stylelint-scss": "^4.0.0" + } + }, + "stylelint-declaration-block-no-ignored-properties": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/stylelint-declaration-block-no-ignored-properties/-/stylelint-declaration-block-no-ignored-properties-2.5.0.tgz", + "integrity": "sha512-UNz5nUC5GMgMb6GPc/pHUTC0+ydxTdj2mUn7XcKRdwQoiUzzUmWWdSf1aFv2UzrW4x8JYNReE1u5JOj7g0ThJw==", + "dev": true, + "requires": {} + }, + "stylelint-group-selectors": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/stylelint-group-selectors/-/stylelint-group-selectors-1.0.8.tgz", + "integrity": "sha512-h37z2JxLI+UKqSj0jNu3WbwtayB3wJCnAP1Pgr6tVgXsIX5w3vjIxU5O1AF8z90RJwNuoq2OyAjBq8DQZqwqbg==", + "dev": true, + "requires": { + "md5": "2.2.1", + "postcss": "^6.0.22", + "stylelint": "^13.8.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "autoprefixer": { + "version": "9.8.8", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", + "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", + "dev": true, + "requires": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "picocolors": "^0.2.1", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, + "balanced-match": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", + "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", + "dev": true + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "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 + }, + "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 + }, + "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 + }, + "known-css-properties": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.21.0.tgz", + "integrity": "sha512-sZLUnTqimCkvkgRS+kbPlYW5o8q5w1cu+uIisKpEWkj31I8mx8kNG162DwRav8Zirkva6N5uoFsm9kzK4mUXjw==", + "dev": true + }, + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "postcss-safe-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz", + "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==", + "dev": true, + "requires": { + "postcss": "^7.0.26" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, + "postcss-scss": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-2.1.1.tgz", + "integrity": "sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA==", + "dev": true, + "requires": { + "postcss": "^7.0.6" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, + "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 + }, + "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 + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "stylelint": { + "version": "13.13.1", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.13.1.tgz", + "integrity": "sha512-Mv+BQr5XTUrKqAXmpqm6Ddli6Ief+AiPZkRsIrAoUKFuq/ElkUh9ZMYxXD0iQNZ5ADghZKLOWz1h7hTClB7zgQ==", + "dev": true, + "requires": { + "@stylelint/postcss-css-in-js": "^0.37.2", + "@stylelint/postcss-markdown": "^0.36.2", + "autoprefixer": "^9.8.6", + "balanced-match": "^2.0.0", + "chalk": "^4.1.1", + "cosmiconfig": "^7.0.0", + "debug": "^4.3.1", + "execall": "^2.0.0", + "fast-glob": "^3.2.5", + "fastest-levenshtein": "^1.0.12", + "file-entry-cache": "^6.0.1", + "get-stdin": "^8.0.0", + "global-modules": "^2.0.0", + "globby": "^11.0.3", + "globjoin": "^0.1.4", + "html-tags": "^3.1.0", + "ignore": "^5.1.8", + "import-lazy": "^4.0.0", + "imurmurhash": "^0.1.4", + "known-css-properties": "^0.21.0", + "lodash": "^4.17.21", + "log-symbols": "^4.1.0", + "mathml-tag-names": "^2.1.3", + "meow": "^9.0.0", + "micromatch": "^4.0.4", + "normalize-selector": "^0.2.0", + "postcss": "^7.0.35", + "postcss-html": "^0.36.0", + "postcss-less": "^3.1.4", + "postcss-media-query-parser": "^0.2.3", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-safe-parser": "^4.0.2", + "postcss-sass": "^0.4.4", + "postcss-scss": "^2.1.1", + "postcss-selector-parser": "^6.0.5", + "postcss-syntax": "^0.36.2", + "postcss-value-parser": "^4.1.0", + "resolve-from": "^5.0.0", + "slash": "^3.0.0", + "specificity": "^0.4.1", + "string-width": "^4.2.2", + "strip-ansi": "^6.0.0", + "style-search": "^0.1.0", + "sugarss": "^2.0.0", + "svg-tags": "^1.0.0", + "table": "^6.6.0", + "v8-compile-cache": "^2.3.0", + "write-file-atomic": "^3.0.3" + }, + "dependencies": { + "@stylelint/postcss-css-in-js": { + "version": "0.37.2", + "resolved": "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.2.tgz", + "integrity": "sha512-nEhsFoJurt8oUmieT8qy4nk81WRHmJynmVwn/Vts08PL9fhgIsMhk1GId5yAN643OzqEEb5S/6At2TZW7pqPDA==", + "dev": true, + "requires": { + "@babel/core": ">=7.9.0" + } + }, + "@stylelint/postcss-markdown": { + "version": "0.36.2", + "resolved": "https://registry.npmjs.org/@stylelint/postcss-markdown/-/postcss-markdown-0.36.2.tgz", + "integrity": "sha512-2kGbqUVJUGE8dM+bMzXG/PYUWKkjLIkRLWNh39OaADkiabDRdw8ATFCgbMz5xdIcvwspPAluSL7uY+ZiTWdWmQ==", + "dev": true, + "requires": { + "remark": "^13.0.0", + "unist-util-find-all-after": "^3.0.2" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + } + } + }, + "stylelint-high-performance-animation": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/stylelint-high-performance-animation/-/stylelint-high-performance-animation-1.6.0.tgz", + "integrity": "sha512-RW3XbNLMoKcqY97NTNLXzfg4IGzCfaIf+s4aQem7BzN5IYqYLdYuU1WCqMCoiZHRILQIkrkNvcaQOAu7bA9qxw==", + "dev": true, + "requires": {} + }, + "stylelint-order": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-5.0.0.tgz", + "integrity": "sha512-OWQ7pmicXufDw5BlRqzdz3fkGKJPgLyDwD1rFY3AIEfIH/LQY38Vu/85v8/up0I+VPiuGRwbc2Hg3zLAsJaiyw==", + "dev": true, + "requires": { + "postcss": "^8.3.11", + "postcss-sorting": "^7.0.1" + } + }, + "stylelint-scss": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-4.2.0.tgz", + "integrity": "sha512-HHHMVKJJ5RM9pPIbgJ/XA67h9H0407G68Rm69H4fzFbFkyDMcTV1Byep3qdze5+fJ3c0U7mJrbj6S0Fg072uZA==", + "dev": true, + "requires": { + "lodash": "^4.17.21", + "postcss-media-query-parser": "^0.2.3", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-selector-parser": "^6.0.6", + "postcss-value-parser": "^4.1.0" + } + }, + "sucrase": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.21.0.tgz", + "integrity": "sha512-FjAhMJjDcifARI7bZej0Bi1yekjWQHoEvWIXhLPwDhC6O4iZ5PtGb86WV56riW87hzpgB13wwBKO9vKAiWu5VQ==", + "optional": true, + "peer": true, + "requires": { + "commander": "^4.0.0", + "glob": "7.1.6", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "dependencies": { + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "optional": true, + "peer": true + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "optional": true, + "peer": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "sudo-prompt": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz", + "integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==", + "optional": true, + "peer": true + }, + "sugarss": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-2.0.0.tgz", + "integrity": "sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ==", + "dev": true, + "requires": { + "postcss": "^7.0.2" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "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 + } + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "devOptional": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-hyperlinks": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", + "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "devOptional": true, + "requires": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "devOptional": true + }, + "svg-pathdata": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/svg-pathdata/-/svg-pathdata-6.0.3.tgz", + "integrity": "sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==", + "dev": true + }, + "svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", + "dev": true + }, + "svg2ttf": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/svg2ttf/-/svg2ttf-6.0.3.tgz", + "integrity": "sha512-CgqMyZrbOPpc+WqH7aga4JWkDPso23EgypLsbQ6gN3uoPWwwiLjXvzgrwGADBExvCRJrWFzAeK1bSoSpE7ixSQ==", + "dev": true, + "requires": { + "@xmldom/xmldom": "^0.7.2", + "argparse": "^2.0.1", + "cubic2quad": "^1.2.1", + "lodash": "^4.17.10", + "microbuffer": "^1.0.0", + "svgpath": "^2.1.5" + } + }, + "svgicons2svgfont": { + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/svgicons2svgfont/-/svgicons2svgfont-10.0.6.tgz", + "integrity": "sha512-fUgQEVg3XwTbOHvlXahHGqCet5Wvfo1bV4DCvbSRvjsOCPCRunYbG4dUJCPegps37BMph3eOrfoobhH5AWuC6A==", + "dev": true, + "requires": { + "commander": "^7.2.0", + "geometry-interfaces": "^1.1.4", + "glob": "^7.1.6", + "neatequal": "^1.0.0", + "readable-stream": "^3.4.0", + "sax": "^1.2.4", + "svg-pathdata": "^6.0.0" + }, + "dependencies": { + "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 + } + } + }, + "svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dev": true, + "requires": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "dependencies": { + "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 + } + } + }, + "svgpath": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/svgpath/-/svgpath-2.5.0.tgz", + "integrity": "sha512-o/vohwqjUO9nDAh4rcjE3KaW/v//At8UJu2LJMybXidf5QLQLVA4bxH0//4YCsr+1H4Gw1Wi/Jc62ynzSBYidw==", + "dev": true + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "table": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", + "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==", + "dev": true, + "requires": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "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 + }, + "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 + }, + "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 + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + } + } + }, + "tapable": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz", + "integrity": "sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q=", + "dev": true + }, + "tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "devOptional": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "devOptional": true + } + } + }, + "temp": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz", + "integrity": "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==", + "optional": true, + "peer": true, + "requires": { + "rimraf": "~2.6.2" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "optional": true, + "peer": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "optional": true, + "peer": true + }, + "tempy": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.7.1.tgz", + "integrity": "sha512-vXPxwOyaNVi9nyczO16mxmHGpl6ASC5/TVhRRHpqeYHvKQm58EaWNvZXxAhR0lYYnBOQFjXjhzeLsaXdjxLjRg==", + "optional": true, + "peer": true, + "requires": { + "del": "^6.0.0", + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "dependencies": { + "type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "optional": true, + "peer": true + } + } + }, + "terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "devOptional": true, + "requires": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + } + }, + "terser": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.1.tgz", + "integrity": "sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ==", + "dev": true, + "requires": { + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "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 + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", + "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "dev": true, + "requires": { + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.2" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "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 + } + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "devOptional": true + }, + "thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "optional": true, + "peer": true, + "requires": { + "any-promise": "^1.0.0" + } + }, + "thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", + "optional": true, + "peer": true, + "requires": { + "thenify": ">= 3.1.0 < 4" + } + }, + "throat": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", + "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "devOptional": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "optional": true, + "peer": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "optional": true, + "peer": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "optional": true, + "peer": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "timers-ext": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", + "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", + "dev": true, + "requires": { + "es5-ext": "~0.10.46", + "next-tick": "1" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "optional": true, + "peer": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "devOptional": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "devOptional": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "optional": true, + "peer": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, + "peer": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "optional": true, + "peer": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "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==", + "devOptional": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "devOptional": true + }, + "tonapi-sdk-js": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/tonapi-sdk-js/-/tonapi-sdk-js-0.12.0.tgz", + "integrity": "sha512-4QEgxwfVoW7VWOZw01nJJYAvtgr0V3uM+Qcm5X+20syJD5nAhOFR9UzPI9wA6kB0UJ42+SbXOznF2dIY0JG0Xw==", + "requires": { + "react-arborist": "^1.2.0" + } + }, + "tonweb": { + "version": "0.0.54", + "resolved": "https://registry.npmjs.org/tonweb/-/tonweb-0.0.54.tgz", + "integrity": "sha512-1Q8ltYA182PNJc4JvOIzhAB6JGudgal0PjTiOCiBLW/RVAFVWVVj4Is+2ZJ2gUBzX2km0F/Y+Lj/ZLybAwcx9Q==", + "requires": { + "@ledgerhq/hw-transport-web-ble": "5.48.0", + "@ledgerhq/hw-transport-webhid": "5.48.0", + "@ledgerhq/hw-transport-webusb": "5.48.0", + "bn.js": "5.1.1", + "ethjs-unit": "0.1.6", + "isomorphic-webcrypto": "2.3.8", + "node-fetch": "2.6.7", + "tweetnacl": "1.0.3" + } + }, + "tonweb-mnemonic": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tonweb-mnemonic/-/tonweb-mnemonic-1.0.1.tgz", + "integrity": "sha512-YQAEXQHBHb0dnNy50bwIutXwyWa6Den7+cLcXWoG7ZClcqo4bjALOr6tnIqI+hs5jab+AGSsRjilxcp8ao/CpA==", + "requires": { + "tweetnacl": "^1.0.3" + } + }, + "totalist": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", + "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==", + "dev": true + }, + "tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "dev": true, + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + } + } + }, + "tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "requires": { + "punycode": "^2.1.1" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + } + } + }, + "traverse": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", + "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=", + "optional": true, + "peer": true + }, + "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 + }, + "trough": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", + "dev": true + }, + "ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "optional": true, + "peer": true + }, + "tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "ttf2eot": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ttf2eot/-/ttf2eot-2.0.0.tgz", + "integrity": "sha1-jmM3pYWr0WCKDISVirSDzmn2ZUs=", + "dev": true, + "requires": { + "argparse": "^1.0.6", + "microbuffer": "^1.0.0" + }, + "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + } + } + }, + "ttf2woff": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ttf2woff/-/ttf2woff-3.0.0.tgz", + "integrity": "sha512-OvmFcj70PhmAsVQKfC15XoKH55cRWuaRzvr2fpTNhTNer6JBpG8n6vOhRrIgxMjcikyYt88xqYXMMVapJ4Rjvg==", + "dev": true, + "requires": { + "argparse": "^2.0.1", + "pako": "^1.0.0" + }, + "dependencies": { + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + } + } + }, + "ttf2woff2": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/ttf2woff2/-/ttf2woff2-4.0.5.tgz", + "integrity": "sha512-zpoU0NopfjoyVqkFeQ722SyKk/n607mm5OHxuDS/wCCSy82B8H3hHXrezftA2KMbKqfJIjie2lsJHdvPnBGbsw==", + "dev": true, + "requires": { + "bindings": "^1.5.0", + "bufferstreams": "^3.0.0", + "nan": "^2.14.2", + "node-gyp": "^9.0.0" + } + }, + "tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, + "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, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "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==", + "devOptional": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "devOptional": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typescript": { + "version": "4.6.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz", + "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==", + "dev": true + }, + "ua-parser-js": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz", + "integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==", + "optional": true, + "peer": true + }, + "uglify-es": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", + "optional": true, + "peer": true, + "requires": { + "commander": "~2.13.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", + "optional": true, + "peer": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true, + "peer": true + } + } + }, + "uglify-js": { + "version": "3.15.5", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.5.tgz", + "integrity": "sha512-hNM5q5GbBRB5xB+PMqVRcgYe4c8jbyZ1pzZhS6jbq54/4F2gFK869ZheiE5A8/t+W5jtTNpWef/5Q9zk639FNQ==", + "dev": true, + "optional": true + }, + "unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "devOptional": true + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "devOptional": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "devOptional": true + }, + "unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "devOptional": true + }, + "unified": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", + "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", + "dev": true, + "requires": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true + }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + } + } + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "optional": true, + "peer": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "optional": true, + "peer": true + } + } + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "devOptional": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "devOptional": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "optional": true, + "peer": true, + "requires": { + "crypto-random-string": "^2.0.0" + } + }, + "unist-util-find-all-after": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-3.0.2.tgz", + "integrity": "sha512-xaTC/AGZ0rIM2gM28YVRAFPIZpzbpDtU3dRmp7EXlNVA8ziQc4hY3H7BHXM1J49nEmiqc3svnqMReW+PGqbZKQ==", + "dev": true, + "requires": { + "unist-util-is": "^4.0.0" + } + }, + "unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "dev": true + }, + "unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dev": true, + "requires": { + "@types/unist": "^2.0.2" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "devOptional": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "devOptional": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "optional": true, + "peer": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "optional": true, + "peer": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "optional": true, + "peer": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "optional": true, + "peer": true + } + } + }, + "update-check": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/update-check/-/update-check-1.5.2.tgz", + "integrity": "sha512-1TrmYLuLj/5ZovwUS7fFd1jMH3NnFDN1y1A8dboedIDt7zs/zJMo6TwwlhYKkSeEwzleeiSBV5/3c9ufAQWDaQ==", + "dev": true, + "requires": { + "registry-auth-token": "3.3.2", + "registry-url": "3.1.0" + } + }, + "upper-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", + "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, + "upper-case-first": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", + "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + } + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "optional": true, + "peer": true + }, + "url-join": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz", + "integrity": "sha1-TTNA6AfTdzvamZH4MFrNzCpmXSo=", + "optional": true, + "peer": true + }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "optional": true, + "peer": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "optional": true, + "peer": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "devOptional": true + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "devOptional": true + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "devOptional": true + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "v8-to-istanbul": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", + "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, + "valid-url": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz", + "integrity": "sha1-HBRHm0DxOXp1eC8RXkCGRHQzogA=", + "optional": true, + "peer": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "optional": true, + "peer": true, + "requires": { + "builtins": "^1.0.3" + } + }, + "varstream": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/varstream/-/varstream-0.3.2.tgz", + "integrity": "sha1-GKxklHZfP/GjWtmkvgU77BiKXeE=", + "dev": true, + "requires": { + "readable-stream": "^1.0.33" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "devOptional": true + }, + "vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true + } + } + }, + "vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + } + }, + "vlq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz", + "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==", + "optional": true, + "peer": true + }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "requires": { + "xml-name-validator": "^3.0.0" + } + }, + "walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "devOptional": true, + "requires": { + "makeerror": "1.0.12" + } + }, + "watchpack": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "dev": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "optional": true, + "peer": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webcrypto-core": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-1.7.2.tgz", + "integrity": "sha512-GUblRwka3JiP/dduk9/Hdkbm7/+ZqVPISJj9Fq1rZ/JBSInmaeVbeH0KuIy4/gtoC7aWpu6DEnYk0VhkZXmFSA==", + "requires": { + "@peculiar/asn1-schema": "^2.1.0", + "@peculiar/json-schema": "^1.1.12", + "asn1js": "^2.3.2", + "pvtsutils": "^1.2.2", + "tslib": "^2.3.1" + } + }, + "webcrypto-shim": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/webcrypto-shim/-/webcrypto-shim-0.1.7.tgz", + "integrity": "sha512-JAvAQR5mRNRxZW2jKigWMjCMkjSdmP5cColRP1U/pTg69VgHXEi1orv5vVpJ55Zc5MIaPc1aaurzd9pjv2bveg==" + }, + "webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true + }, + "webpack": { + "version": "5.72.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.1.tgz", + "integrity": "sha512-dXG5zXCLspQR4krZVR6QgajnZOjW2K/djHvdcRaDQvsjV9z9vaW6+ja5dZOYbqBBjF6kGXka/2ZyxNdc+8Jung==", + "dev": true, + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.9.3", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.3" + }, + "dependencies": { + "enhanced-resolve": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", + "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + } + } + }, + "webpack-bundle-analyzer": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz", + "integrity": "sha512-GUMZlM3SKwS8Z+CKeIFx7CVoHn3dXFcUAjT/dcZQQmfSZGvitPfMob2ipjai7ovFFqPvTqkEZ/leL4O0YOdAYQ==", + "dev": true, + "requires": { + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "chalk": "^4.1.0", + "commander": "^7.2.0", + "gzip-size": "^6.0.0", + "lodash": "^4.17.20", + "opener": "^1.5.2", + "sirv": "^1.0.7", + "ws": "^7.3.1" + }, + "dependencies": { + "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 + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "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 + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "webpack-cli": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz", + "integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==", + "dev": true, + "requires": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.1.1", + "@webpack-cli/info": "^1.4.1", + "@webpack-cli/serve": "^1.6.1", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + }, + "dependencies": { + "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 + }, + "interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true + } + } + }, + "webpack-dev-middleware": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz", + "integrity": "sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg==", + "dev": true, + "requires": { + "colorette": "^2.0.10", + "memfs": "^3.4.1", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "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 + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + } + } + }, + "webpack-dev-server": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.9.0.tgz", + "integrity": "sha512-+Nlb39iQSOSsFv0lWUuUTim3jDQO8nhK3E68f//J2r5rIcp4lULHXz2oZ0UVdEeWXEh5lSzYUlzarZhDAeAVQw==", + "dev": true, + "requires": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.1", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.0.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.4.2" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "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 + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + }, + "ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "dev": true, + "requires": {} + } + } + }, + "webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + } + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-fetch": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", + "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==", + "optional": true, + "peer": true + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "requires": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "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, + "requires": { + "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" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "optional": true, + "peer": true + }, + "wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + }, + "dependencies": { + "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 + }, + "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 + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + } + } + }, + "widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, + "requires": { + "string-width": "^4.0.0" + }, + "dependencies": { + "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 + }, + "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 + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + } + } + }, + "wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "wonka": { + "version": "4.0.15", + "resolved": "https://registry.npmjs.org/wonka/-/wonka-4.0.15.tgz", + "integrity": "sha512-U0IUQHKXXn6PFo9nqsHphVCE5m3IntqZNB9Jjn7EB1lrR7YTDY3YWgFvEvwniTzXSvOH/XMzAZaIfJF/LvHYXg==", + "optional": true, + "peer": true + }, + "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==", + "dev": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "devOptional": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "devOptional": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "devOptional": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "devOptional": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "devOptional": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "devOptional": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "devOptional": true + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "ws": { + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", + "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", + "devOptional": true, + "requires": {} + }, + "xcode": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/xcode/-/xcode-3.0.1.tgz", + "integrity": "sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==", + "optional": true, + "peer": true, + "requires": { + "simple-plist": "^1.1.0", + "uuid": "^7.0.3" + }, + "dependencies": { + "uuid": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", + "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==", + "optional": true, + "peer": true + } + } + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "optional": true, + "peer": true, + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "dependencies": { + "xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "optional": true, + "peer": true + } + } + }, + "xmlbuilder": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-14.0.0.tgz", + "integrity": "sha512-ts+B2rSe4fIckR6iquDjsKbQFK2NlUk6iG5nf14mDEyldgoc2nEKZ3jZWMPTxGQwVgToSjt6VGIho1H8/fNFTg==", + "optional": true, + "peer": true + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "xmldoc": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/xmldoc/-/xmldoc-1.1.2.tgz", + "integrity": "sha512-ruPC/fyPNck2BD1dpz0AZZyrEwMOrWTO5lDdIXS91rs3wtm4j+T8Rp2o+zoOYkkAxJTZRPOSnOGei1egoRmKMQ==", + "optional": true, + "peer": true, + "requires": { + "sax": "^1.2.1" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "optional": true, + "peer": true + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "dependencies": { + "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 + }, + "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 + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + } + } + }, + "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 + }, + "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==", + "optional": true + }, + "zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "dev": true + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..4c2d6642 --- /dev/null +++ b/package.json @@ -0,0 +1,119 @@ +{ + "name": "mytonwallet", + "version": "1.0.2", + "description": "", + "main": "index.js", + "scripts": { + "dev": "cross-env APP_ENV=development webpack serve --mode development", + "dev:mocked": "cross-env APP_ENV=test APP_MOCKED_CLIENT=1 webpack serve --mode development --port 1235", + "build:mocked": "cross-env APP_ENV=test APP_MOCKED_CLIENT=1 webpack --mode development && ./deploy/copy_to_dist.sh", + "build:dev": "cross-env APP_ENV=development webpack --mode development && ./deploy/copy_to_dist.sh", + "build:staging": "cross-env APP_ENV=staging webpack && ./deploy/copy_to_dist.sh", + "build:production": "webpack && ./deploy/copy_to_dist.sh", + "build:extension:dev": "cross-env ENV_EXTENSION=1 APP_ENV=development webpack --mode development && ./deploy/copy_to_dist.sh", + "build:extension:production": "cross-env ENV_EXTENSION=1 webpack && ./deploy/copy_to_dist.sh && zip -r -X MyTonWallet.zip dist/*", + "build:icons": "fantasticon", + "check": "tsc && stylelint \"**/*.{css,scss}\" && eslint . --ext .ts,.tsx", + "check:fix": "npm run check -- --fix", + "test": "cross-env APP_ENV=test jest --verbose --forceExit", + "test:playwright": "playwright test", + "test:record": "playwright codegen localhost:1235", + "prepare": "husky install" + }, + "engines": { + "node": "^16.13", + "npm": "^8.5.2" + }, + "husky": { + "hooks": { + "pre-commit": "tsc && lint-staged" + } + }, + "lint-staged": { + "*.{ts,tsx,js}": "eslint --fix", + "*.{css,scss}": "stylelint --fix" + }, + "author": "My Ton Wallet", + "license": "GPL-3.0-or-later", + "devDependencies": { + "@babel/core": "^7.17.10", + "@babel/plugin-proposal-class-properties": "^7.16.7", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/preset-env": "^7.17.10", + "@babel/preset-react": "^7.16.7", + "@babel/preset-typescript": "^7.16.7", + "@peculiar/webcrypto": "^1.3.2", + "@playwright/test": "^1.22.0", + "@testing-library/jest-dom": "^5.16.4", + "@types/chrome": "^0.0.191", + "@types/croppie": "^2.6.1", + "@types/jest": "^27.5.1", + "@types/react": "^18.0.9", + "@types/react-dom": "^18.0.4", + "@types/wicg-mediasession": "^1.1.3", + "@typescript-eslint/eslint-plugin": "^5.23.0", + "@typescript-eslint/parser": "^5.23.0", + "@webpack-cli/serve": "^1.6.1", + "autoprefixer": "^10.4.7", + "babel-loader": "^8.2.5", + "browserlist": "^1.0.1", + "copy-webpack-plugin": "^11.0.0", + "cross-env": "^7.0.3", + "css-loader": "^6.7.1", + "css-minimizer-webpack-plugin": "^3.4.1", + "dotenv": "^16.0.1", + "eslint": "^8.15.0", + "eslint-config-airbnb": "^19.0.4", + "eslint-config-airbnb-typescript": "^16.1.1", + "eslint-config-react-app": "^7.0.1", + "eslint-import-resolver-webpack": "^0.13.2", + "eslint-plugin-flowtype": "^8.0.3", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-no-async-without-await": "^1.2.0", + "eslint-plugin-no-null": "^1.0.2", + "eslint-plugin-react": "^7.29.3", + "eslint-plugin-react-hooks": "^4.5.0", + "eslint-plugin-teactn": "git+https://github.com/korenskoy/eslint-plugin-teactn#c2c39dd005d58c07c24c4361de804dce1c6261b5", + "fantasticon": "^1.2.3", + "git-revision-webpack-plugin": "^5.0.0", + "html-webpack-plugin": "^5.5.0", + "husky": "^7.0.4", + "jest": "^27.5.1", + "jest-raw-loader": "^1.0.1", + "lint-staged": "^12.4.1", + "mini-css-extract-plugin": "^2.6.0", + "postcss": "^8.4.14", + "postcss-loader": "^7.0.0", + "postcss-modules": "^4.3.1", + "react": "^18.1.0", + "replace-in-file": "^6.3.2", + "sass": "^1.53.0", + "sass-loader": "^13.0.2", + "serve": "^13.0.2", + "style-loader": "^3.3.1", + "stylelint": "^14.9.1", + "stylelint-config-clean-order": "^0.8.0", + "stylelint-config-recommended-scss": "^6.0.0", + "stylelint-declaration-block-no-ignored-properties": "^2.5.0", + "stylelint-group-selectors": "^1.0.8", + "stylelint-high-performance-animation": "^1.6.0", + "stylelint-order": "^5.0.0", + "typescript": "^4.6.4", + "webpack": "^5.72.1", + "webpack-bundle-analyzer": "^4.5.0", + "webpack-cli": "^4.9.2", + "webpack-dev-server": "^4.9.0", + "webpack-merge": "^5.8.0" + }, + "dependencies": { + "idb-keyval": "^6.1.0", + "pako": "^2.0.4", + "qr-code-styling": "github:zubiden/qr-code-styling#10f7cf3", + "tonapi-sdk-js": "^0.12.0", + "tonweb": "^0.0.54", + "tonweb-mnemonic": "^1.0.1", + "tweetnacl": "^1.0.3" + } +} diff --git a/playwright.config.ts b/playwright.config.ts new file mode 100644 index 00000000..6d9b52b8 --- /dev/null +++ b/playwright.config.ts @@ -0,0 +1,38 @@ +import { PlaywrightTestConfig, devices } from '@playwright/test'; + +const config: PlaywrightTestConfig = { + testDir: 'tests/playwright', + timeout: process.env.CI ? 60 * 5 * 1000 : 30 * 1000, + forbidOnly: !!process.env.CI, + retries: process.env.CI ? 2 : 0, + webServer: { + command: 'npm run build:mocked && serve -l 1235 dist', + port: 1235, + timeout: 120 * 1000, + reuseExistingServer: !process.env.CI, + }, + use: { + baseURL: 'http://localhost:1235/', + video: 'retain-on-failure', + trace: 'on-first-retry', + }, + projects: [ + { + name: 'chromium', + use: { ...devices['Desktop Chrome'] }, + }, + { + name: 'firefox', + use: { ...devices['Desktop Firefox'] }, + }, + { + name: 'webkit', + use: { ...devices['Desktop Safari'] }, + }, + { + name: 'ios', + use: { ...devices['iPhone X'] }, + }, + ], +}; +export default config; diff --git a/plugins/brilliant-icons.css.hbs b/plugins/brilliant-icons.css.hbs new file mode 100644 index 00000000..32c77003 --- /dev/null +++ b/plugins/brilliant-icons.css.hbs @@ -0,0 +1,28 @@ +@font-face { + font-family: "{{ name }}"; + src: {{{ fontSrc }}}; + font-weight: normal; + font-style: normal; +} + +{{# if selector }} +{{ selector }}:before { +{{ else }} +{{ tag }}[class^="{{prefix}}-"], {{ tag }}[class*=" {{prefix}}-"] { +{{/ if }} + font-family: {{ name }} !important; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-style: normal; + font-weight: 400 !important; +} + +{{# each codepoints }} +{{# if ../selector }} +{{ ../selector }}.{{ ../prefix }}-{{ @key }}::before { +{{ else }} +{{ tag }}.{{ ../prefix }}-{{ @key }}::before { +{{/ if }} + content: "\\{{ codepoint this }}"; +} +{{/ each }} diff --git a/plugins/wholePixel.js b/plugins/wholePixel.js new file mode 100644 index 00000000..2bd94117 --- /dev/null +++ b/plugins/wholePixel.js @@ -0,0 +1,82 @@ +const stylelint = require('stylelint'); +const postcss = require('postcss'); + +const ruleName = 'plugin/whole-pixel'; + +const isString = (s) => typeof s === 'string'; + +const messages = stylelint.utils.ruleMessages(ruleName, { + expected: (unfixed, fixed) => `Expected "${unfixed}" to be "${fixed}"`, +}); + +const PX_PER_REM = 16; +const unitRegex = /(px|rem)$/; +const numberRegex = /^([-0-9.]+)/; + +module.exports = stylelint.createPlugin(ruleName, (primaryOption, secondaryOptionObject, context) => { + const secondaryOptions = secondaryOptionObject || {}; + return (root, result) => { + const validOptions = stylelint.utils.validateOptions( + result, + ruleName, + { + actual: secondaryOptions, + possible: { + pxPerRem: (value) => value % 1 === 0, + ignoreList: [isString], + }, + }, + ); + + if (!validOptions) { + return; + } + const pxPerRem = Number(secondaryOptions.pxPerRem) || PX_PER_REM; + const ignoreList = secondaryOptions.ignoreList || []; + + const isAutoFixing = Boolean(context.fix); + + const isValid = (value, unit) => { + if (unit === 'px') return Number.isInteger(value); + if (unit === 'rem') return Number.isInteger(value * pxPerRem); + }; + + const suggestFix = (value, unit) => { + if (unit === 'px') return `${Math.round(value)}px`; + if (unit === 'rem') return `${Math.round(value * pxPerRem) / pxPerRem}rem`; + }; + + const handleValue = (decl, value) => { + if (!unitRegex.test(value)) return; + const matched = value.match(numberRegex); + if (!matched) return; + const valueNumberString = matched[0]; + const valueNumber = parseFloat(valueNumberString); + const unit = value.replace(valueNumberString, ''); + + if (isValid(valueNumber, unit)) return; + const suggestedValue = suggestFix(valueNumber, unit); + if (isAutoFixing) { + decl.value = decl.value.replace(value, suggestedValue); + } else { + stylelint.utils.report({ + ruleName, + result, + node: decl, + message: messages.expected(value, suggestedValue), + word: value, + }); + } + }; + + root.walkDecls(decl => { + if (!decl.value || ignoreList.includes(decl.prop)) return; + const values = postcss.list.space(decl.value); + if (!values?.length) return; + values.forEach((value) => handleValue(decl, value)); + }); + }; +}); + +module.exports.ruleName = ruleName; +module.exports.messages = messages; diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 00000000..88752c6c --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,5 @@ +module.exports = { + plugins: [ + require('autoprefixer') + ] +} diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..abdee5fcd5cf239faf54dbc9f0f497a05a8730d1 GIT binary patch literal 8759 zcmV-7BFNo|P)SmznWS;0_o#$hn=3<=Y zVVmV(n&e-Z$U1k(Id{i6cf~h%#5Q)qHg>@^cEB}uzchBg zGDQ&JPY^^A3tS4%#CuyoCXsIP-lziOAmugma+vg`Hv{&J`4v(NLn(eiGfHd!0pQ2^`yk_g01M)+<|~ ztL%QT?qZwei?!_7=lR3h_HLu+;_UkV{{KXO#%Y<-o4eu8-SCmK;75SWsl@0zcgSm* z)kS~FUy;#{v)#be>{5u$gsR-;?)XoK$g|AofvMPYq0wiU&svbnnY!MLvDra>!_3|9 zOoqhe?)FKBz_H8Zqru+G-0Z&7=%vHqKYqVtm&%vA+B|)`R*uDfsngNn_IIP=VUyZR zfzr0k?a$rv^Y{E!iPCMF*?FSelCG-e6 z?R22ue5d1yujSC+^sB_`hpXXjo5y;j%}|EBPleT@zUkWL^;nD6=kNJkkJ&|j(?@{Q za-H61mD??HvN?CeJ9x@WhSySvy;O|Br^DrUq1eRM@s+mb*#&YF00002bW%=J|Ng(S z?@<5%9^^?xK~#7F?3ja-V_iPxpn_QtxCtKkD}7%NOl;Ze{1>4aFY24G!o{NZ#ijIzD=%gexIxRipn=EHKm^mMr z+2|6jr0&q6p;7k|a%>zM79K93V<;UzOQX|o*}wZvO^5ZU)k4&i4y|PF(6M93HToBf ze0E}Jn1GIoiivfk!!UN-sPm@*;CptO(_s-Kqt#SdUM-9+B@r{Ksrkj(y>R-(;1GmH zqa&jUI^oFixi*lxjqyO{mKIKj6&z~S|K7mRlDbo;&W!y6kb{DPLl8Qgp)nm_pN2O5 zAtP-x<>%37cnlPk)iN_fBlU~G9zG=?FesRf4o7DG3}-5(Xy<{4sK@2(s063#8`x+@ zMrKr(=Zro4YmfPXfn+o~9TCB^0~2kS15)23GeX}1)JblZidJChs$J8;%w4*6-3ZT5 zlUMl9N2A-N1D(dtaF$I5nv8Cte`W(uX$xC^#upk*nEn#Im_NP%Wm$_lS2t}0>bhI#;4L*HRD0Adp}Qukc{jLlxY!rRAJ zLQkCr0Aob6M4thnIR<1-PNl6>#N!Ufn{`Zfc!{jTat)wobbT;T4`< zUTpNRg}@pkprg-0n`Wk>(X>jpg9Zymnl`-O6`AI-z^SF9 zR<@-h`ZOpypYA-gtl*T{QiP&NSA(jxREL`ZrPDWW;7BucpMPndt_0oOJlxr6=ae2h zY4TWtz6`1^(7@yU|Eey! z(p-mf?+Cvu9TzhQ8n;s1{~fV5VzMTI{V6<5&FQtp}$=iVWiRp@?9{Y1=Uv>bSB zbWq#P68)!2{Rf}4W&@w$9P6W8hmDn0T2bJj=(p7px+_DwGWUBz>W`3_p+!2TO#6D+ z8A=C1^F=#R3CLwk2O15w7QPNek5uv_jYX&93fHwIT7-ksAs3Im`!?;?DA4_%gnIa} zF9})>yaj+-IeE%dOowuYA9oHAd%8%65o0XR@K(?ju+e$|z72nCv$<0z#ptGH{r>?a zq5Jgh*SBB){s$j_hAj9}8a;v{P0*xi#>==%BQrhHj6W|29yg0k3=GE^ZYiXfB@yLv zf|f&1!yVq4nAh*w;)L6V$OwI~Z$D)2KVTm`rr!G!q1_OAFtJRx@I#Gc}qcsPS8KDRK`!Ty4nF)F%EJx;hL&p(x zlEKCU4~^ztx3ws*VMP>Va|NycWoUCFU*VnP?9kl>y&W_MiFv@l$7=M$UwlE($V||_ zz8`?1v&hU&^Ap}oFmpPtF!Tup`UH@w3Azr-8roflYH(X6G-$Rn^q}33F*rtiK~5tx zLQ}I014TwU!!ONpKH=Fp9ksu=cx}nZ-hj(hy6LU9Ew1uIC z=iB=u^T2`sd*l%^d@(W$==VWDBXc|GF_Dq@9CjJzjAv+kmHyVTcQ~HX^BvH%;gxbc zoXDN)G+Vl$x@~oV7R(4Os1FF}L4*IJdDM^ab56%F+Uk~xNV`JMrAS`_m~e!c#myq2 znc4M$mrq)LJ76`HAt6P2!`;w4G-<}M4B2i z)I*DzRil4mqg|jo)d~A39^KcsgYL`FsGSTwg*@@)>*p_RdsX2n_S@m`#C@l zWI+F-&`sN=3VOzj8HsN;hhkRHG<2kMcmFDm;VbPiWgqsAQCYw4eps5v@Qp9BUb=BO z`HZ>4Wa+>DMgFecL1<^<+NGFP_83VF1&}lbb)aX=$P0hdNO%qd-PC&4X$@WIN>!jS zvy85A!N*Zq4s3LChiaByeeHGmTKWF=8JSrQfB#Rk(tmS+M~1hv!_$q2O42(D3X2k- zs7Sv*W5zca=27Zk7%c`P=Ak zeaiKxY zK$F^WhmwMZJ5;1+&C2tA%_-E!kkDp2Y&<;{OBuscy3+gBv77#`*nefSWa4Z``WGsB zJU9Hw4p@2`9j%~e6@5*h;SR;z*tPbo*8XQZnJaK-(bCk`LFi;xy75i4d(5` zBZG9uAk)dvD~Y1Qf>H*0*6i8guL(5W(IvL(ufdXLOpjV^`*=A7=yv(udi}4--NE+Z z0X=f<;_g6fl_+K<1wAR*1ATVV9erYH3}g896Q)}lSI}_BCi$M?#u0H=%-ejde@xQ5 z#8!cVW~8%)nt^tq&k|d!a11+GT4Ki1&+L{TrsteM2SjTd-I3BBz2sOrTc{amK(qgk zN5s+^9q8+C#D;&uoWp0L@h`!2K$aqvDJaf(iR=R6)$Nza==V#&8(5+1{_NJ2$=ZdFw<;~2uydS2;c zSK24GR8eorF(mYvqSS!CBkd?U℘eGbTCJ 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 literal 0 HcmV?d00001 diff --git a/public/browserconfig.xml b/public/browserconfig.xml new file mode 100644 index 00000000..f2c75ba6 --- /dev/null +++ b/public/browserconfig.xml @@ -0,0 +1,9 @@ + + + + + + #2b5797 + + + diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..9bf7ea06f4c7513ca74e76e226b610923994ddff GIT binary patch literal 29472 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 literal 0 HcmV?d00001 diff --git a/public/icon-128x128.png b/public/icon-128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..9ab64a427e5f664b5e11b56c3f03b9343ad5f834 GIT binary patch literal 8187 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

SUB4t8ol5~)#SL*VW;t37G4!R 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 literal 0 HcmV?d00001 diff --git a/public/icon-192x192.png b/public/icon-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..09906dee2a193602a4ba04cd343bd517c8608ac9 GIT binary patch literal 12975 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�cUZvKJjRHfj{6fOT2cR?@!X8u`2Ta1>V>(NT()&ZpM z=AMj@57U5G%Rjlc%)Z&Z8s(iFICO`79VM`})kVLp?d`VJ>A}|+R_Al5TM}^CA!G`y zvnO%7VI^rOGHcXv>*GdK4-G~|Aj^p%-ISWoI5xaO;r^&ESdB&sTDhCll&2`G$2&@L zzT-BIq^z$ULUBWcH%LO)722>-x-V#d%1)svsC%^0iOoL^6-))4*aPsCC?={H-c~I` z@Y}=SpzqC`_9inHk%)@~9rA8BYo41{HdlJMXW^p*(e~?GndBbDN!4wA11!PvSfKZXAL{KOcT#iT~n3{?B+ z+sAa6F@D5Zm&f)E>rs!^aN6V2$fnF-WU$G^hmo39!lO}!)fJgib+m$R$cr}ZUa!3{ zgK+d`*a(JBr$cGH}IfgN0bvm9zO`fG}7zL@sH+{NQT zL`g_f+ICjCZwrmgUTsA^Rgfw!z(vb*kzh>$;!EIb(w|dN3$?|;Vv{Pz8lvZ9H<5y) zp(QZShUU7DSyN-}PW?Hfu&gZWxtVM5tPD2li{8XQw((+vd?0755`pMiX8g-&!QYvJ z>0zk;%)zVaTYAatF%13}wD?eA`x&dFg{S?e6m<{%`Z;#A?w?@j^=@B!UIe;IL(s0B z63=fvhemfQ^2|JXzLAPgehqk-?vdfk?Mjqf&Di#x{3XPyv6n!Zu|CW0qsx-YqWh=ug+KP$nZ0_h4zKKLpsI%g?r%Y%!GJF-`8zYS^Q>yEXWP9{Z#u>&~pH zW-l@453cH8p;s+2U)Sty;`s>5O%lP>3Q>YXL}!x5)@`UbjdnldWy1#D z%FNOwqVABd2MOZM>cZGpB@bz;w4x@1oKdfR4{8mWHw7nl0ybXO=5(igG)by(m?M8Z zxC?Xj`5vtzO8kWvZThuCoih8{A1AFO=B)vX>@?NfLZ|wv2i6ZE=1}M(OBF#uQ=vT7 z*`doriV;Q}O;nA%#YCK;L zaNP#A^mTAdZVb4?a%EJokNhV_VchXS7i~{h(>9iRo#>|-#G7Z+Zu-JQH6Fbv&x&n` zl|oH@Y_)~r6LWY<(eIIvjB14gIY^3(V+&^BNo_!Do&JD1V?lsM=s|#WuJS#|fdYf* zOB3|^Qeru(I&m&^-Qahwt)jY31!cQ=qE)#EpY;IWFca2-bG4;w`=o_D-r~os#iH)N z%`b&z$?=M-~sLUiA)wyq7K|GbXpc+(N`O&ldB(aB~r@PZROq= ziG!V^p<7#4){z?{0V@#?mx2}h_ALa0%L~Su+V7HdbbYSzCwAP1>oJvM>#x4_59DDW eS16_)@Onutp7H0PK%VyA14?pgvenY2A^#5)tUzS| literal 0 HcmV?d00001 diff --git a/public/icon-384x384.png b/public/icon-384x384.png new file mode 100644 index 0000000000000000000000000000000000000000..4c5d8f13e99016cde5794e4d5127cfffd4270656 GIT binary patch literal 32234 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 NjP!2mzSKs?{U52uswe;e literal 0 HcmV?d00001 diff --git a/public/icon-512x512.png b/public/icon-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..effc2497949a28fcdd15f5991c0fbadaa15aeb09 GIT binary patch literal 53238 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

qQ0 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

l+B5ZrmzXg(!>=+{N??MIba@c_Re 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 \ No newline at end of file diff --git a/public/mstile-150x150.png b/public/mstile-150x150.png new file mode 100644 index 0000000000000000000000000000000000000000..8d056a91d037b62168dc7c134543f603d3418354 GIT binary patch literal 9860 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 +type AnyClass = new (...args: any[]) => any; +type AnyFunction = (...args: any[]) => any; +type AnyToVoidFunction = (...args: any[]) => void; +type NoneToVoidFunction = () => void; + +type EmojiCategory = { + id: string; + name: string; + emojis: string[]; +}; + +type Emoji = { + id: string; + names: string[]; + native: string; + image: string; + skin?: number; +}; + +type EmojiWithSkins = Record; + +type AllEmojis = Record; + +// Declare supported for import formats as modules +declare module '*.png'; +declare module '*.svg'; +declare module '*.tgs'; + +declare module '*.txt' { + const content: string; + export default content; +} + +declare module 'pako/dist/pako_inflate' { + function inflate(...args: any[]): string; +} + +declare module 'opus-recorder' { + export interface IOpusRecorder extends Omit { + new(options: AnyLiteral): IOpusRecorder; + + start(stream?: MediaStreamAudioSourceNode): void; + + sourceNode: MediaStreamAudioSourceNode; + + ondataavailable: (typedArray: Uint8Array) => void; + } + + const recorder: IOpusRecorder; + export default recorder; +} + +interface TEncodedImage { + result: Uint8ClampedArray; + width: number; + height: number; +} + +interface IWebpWorker extends Worker { + wasmReady?: boolean; + requests: Map) => void>; +} + +interface Document { + mozFullScreenElement: any; + webkitFullscreenElement: any; + mozCancelFullScreen?: () => Promise; + webkitCancelFullScreen?: () => Promise; + webkitExitFullscreen?: () => Promise; +} + +interface HTMLElement { + mozRequestFullScreen?: () => Promise; + webkitEnterFullscreen?: () => Promise; + webkitRequestFullscreen?: () => Promise; +} + +interface Navigator { + // PWA badging extensions https://w3c.github.io/badging/ + setAppBadge?(count: number): Promise; +} + +// Fix to make Boolean() work as !! +// https://github.com/microsoft/TypeScript/issues/16655 +type Falsy = false | 0 | '' | null | undefined; + +interface BooleanConstructor { + new(value: T | Falsy): value is T; + (value: T | Falsy): value is T; + readonly prototype: Boolean; +} + +interface Array { + filter(predicate: BooleanConstructor, thisArg?: any): Exclude[]; +} +interface ReadonlyArray { + filter(predicate: BooleanConstructor, thisArg?: any): Exclude[]; +} diff --git a/src/@types/teact.d.ts b/src/@types/teact.d.ts new file mode 100644 index 00000000..05d546a0 --- /dev/null +++ b/src/@types/teact.d.ts @@ -0,0 +1,3 @@ +declare namespace JSX { + type Element = VirtualElement; +} diff --git a/src/api/blockchains/index.ts b/src/api/blockchains/index.ts new file mode 100644 index 00000000..645b4d15 --- /dev/null +++ b/src/api/blockchains/index.ts @@ -0,0 +1,5 @@ +import * as ton from './ton'; + +export default { + ton, +}; diff --git a/src/api/blockchains/ton/address.ts b/src/api/blockchains/ton/address.ts new file mode 100644 index 00000000..9358c355 --- /dev/null +++ b/src/api/blockchains/ton/address.ts @@ -0,0 +1,26 @@ +import { Storage } from '../../storages/types'; +import { getTonWeb } from './util/tonweb'; + +const TON_DNS_ZONE = '.ton'; + +export async function resolveAddress(address: string) { + if (!address.endsWith(TON_DNS_ZONE)) { + return address; + } + + const tonWeb = getTonWeb(); + try { + return (await tonWeb.dns.getWalletAddress(address))?.toString(true, true, true); + } catch (err: any) { + if (err.message !== 'http provider parse response error') { + throw err; + } + return undefined; + } +} + +export async function fetchAddress(storage: Storage, accountId: string): Promise { + const addressesJson = (await storage.getItem('addresses'))!; + const addresses = JSON.parse(addressesJson); + return addresses[accountId]; +} diff --git a/src/api/blockchains/ton/auth.ts b/src/api/blockchains/ton/auth.ts new file mode 100644 index 00000000..9b94b1fe --- /dev/null +++ b/src/api/blockchains/ton/auth.ts @@ -0,0 +1,112 @@ +import nacl from 'tweetnacl'; +import * as tonWebMnemonic from 'tonweb-mnemonic'; +import { Storage } from '../../storages/types'; +import { + base64ToBytes, + bytesToBase64, + bytesToHex, + hexToBytes, +} from '../../common/utils'; + +export function generateMnemonic() { + return tonWebMnemonic.generateMnemonic(); +} + +export function validateMnemonic(mnemonic: string[]) { + return tonWebMnemonic.validateMnemonic(mnemonic); +} + +export async function mnemonicToSeed(mnemonic: string[]) { + const keyPair = await tonWebMnemonic.mnemonicToKeyPair(mnemonic); + return bytesToBase64(keyPair.secretKey.slice(0, 32)); +} + +export function seedToKeyPair(seed: string) { + return nacl.sign.keyPair.fromSeed(base64ToBytes(seed)); +} + +export async function encryptMnemonic(mnemonic: string[], password: string) { + const plaintext = mnemonic.join(','); + const pwUtf8 = new TextEncoder().encode(password); // encode password as UTF-8 + const pwHash = await crypto.subtle.digest('SHA-256', pwUtf8); // hash the password + const iv = crypto.getRandomValues(new Uint8Array(12)); // get 96-bit random iv + const alg = { name: 'AES-GCM', iv }; // specify algorithm to use + const key = await crypto.subtle.importKey('raw', pwHash, alg, false, ['encrypt']); // generate key from pw + const ptUint8 = new TextEncoder().encode(plaintext); // encode plaintext as UTF-8 + const ctBuffer = await crypto.subtle.encrypt(alg, key, ptUint8); // encrypt plaintext using key + const ctArray = Array.from(new Uint8Array(ctBuffer)); // ciphertext as byte array + const ctStr = ctArray.map((byte) => String.fromCharCode(byte)).join(''); // ciphertext as string + // TODO Try `ctArray.toString('base64')` or `ctBuffer.toString('base64')` + const ctBase64 = btoa(ctStr); // encode ciphertext as base64 + const ivHex = Array.from(iv).map((b) => (`00${b.toString(16)}`).slice(-2)).join(''); // iv as hex string + + return ivHex + ctBase64; // return iv+ciphertext +} + +export async function decryptMnemonic(encrypted: string, password: string) { + const pwUtf8 = new TextEncoder().encode(password); // encode password as UTF-8 + const pwHash = await crypto.subtle.digest('SHA-256', pwUtf8); // hash the password + const iv = encrypted.slice(0, 24).match(/.{2}/g)!.map((byte) => parseInt(byte, 16)); // get iv from ciphertext + const alg = { name: 'AES-GCM', iv: new Uint8Array(iv) }; // specify algorithm to use + const key = await crypto.subtle.importKey('raw', pwHash, alg, false, ['decrypt']); // use pw to generate key + const ctStr = atob(encrypted.slice(24)); // decode base64 ciphertext + const ctUint8 = new Uint8Array(ctStr.match(/[\s\S]/g)!.map((ch) => ch.charCodeAt(0))); // ciphertext as Uint8Array + // note: why doesn't ctUint8 = new TextEncoder().encode(ctStr) work? + const plainBuffer = await crypto.subtle.decrypt(alg, key, ctUint8); // decrypt ciphertext using key + const plaintext = new TextDecoder().decode(plainBuffer); // decode password from UTF-8 + return plaintext.split(','); +} + +export async function fetchMnemonic(storage: Storage, accountId: string, password: string) { + try { + const mnemonicEncrypted = (await storage.getItem('mnemonicEncrypted'))!; + return await decryptMnemonic(mnemonicEncrypted, password); + } catch (err) { + // eslint-disable-next-line no-console + console.error(err); + + return undefined; + } +} + +export async function fetchPrivateKey(storage: Storage, accountId: string, password: string) { + try { + const mnemonic = await fetchMnemonic(storage, accountId, password); + if (!mnemonic) { + return undefined; + } + + const seedBase64 = await mnemonicToSeed(mnemonic); + const { secretKey: privateKey } = seedToKeyPair(seedBase64); + + return privateKey; + } catch (err) { + // eslint-disable-next-line no-console + console.error(err); + + return undefined; + } +} + +export async function fetchPublicKey(storage: Storage, accountId: string): Promise { + const publicKeysJson = (await storage.getItem('publicKeys'))!; + const publicKeys = JSON.parse(publicKeysJson); + return publicKeys[accountId]; +} + +export async function rawSign(storage: Storage, accountId: string, password: string, dataHex: string) { + const privateKey = await fetchPrivateKey(storage, accountId, password); + if (!privateKey) { + return undefined; + } + + const signature = nacl.sign.detached(hexToBytes(dataHex), privateKey); + + return bytesToHex(signature); +} + +export async function verifyPassword(storage: Storage, accountId: string, password: string) { + const mnemonic = await fetchMnemonic(storage, accountId, password); + + return Boolean(mnemonic); +} diff --git a/src/api/blockchains/ton/constants.ts b/src/api/blockchains/ton/constants.ts new file mode 100644 index 00000000..99b3dfa5 --- /dev/null +++ b/src/api/blockchains/ton/constants.ts @@ -0,0 +1,2 @@ +export const TOKEN_TRANSFER_TON_AMOUNT = '0.05'; +export const TOKEN_TRANSFER_TON_FORWARD_AMOUNT = '0.01'; diff --git a/src/api/blockchains/ton/index.ts b/src/api/blockchains/ton/index.ts new file mode 100644 index 00000000..1a33b1e2 --- /dev/null +++ b/src/api/blockchains/ton/index.ts @@ -0,0 +1,28 @@ +export { fetchAddress } from './address'; +export { + encryptMnemonic, + fetchMnemonic, + fetchPublicKey, + generateMnemonic, + mnemonicToSeed, + rawSign, + seedToKeyPair, + validateMnemonic, + verifyPassword, +} from './auth'; +export { getAccountNfts } from './nfts'; +export { getAccountTokensBalances } from './tokens'; +export { oneCellFromBoc } from './util/tonweb'; +export { + checkTransactionDraft, + getAccountLatestTxId, + getAccountTransactionSlice, + submitTransfer, +} from './transactions'; +export { + getAccountBalance, + pickAccountWallet, + pickBestWallet, + publicKeyToAddress, + resolveWalletVersion, +} from './wallet'; diff --git a/src/api/blockchains/ton/nfts.ts b/src/api/blockchains/ton/nfts.ts new file mode 100644 index 00000000..0aed4860 --- /dev/null +++ b/src/api/blockchains/ton/nfts.ts @@ -0,0 +1,14 @@ +import { Storage } from '../../storages/types'; +import { BRILLIANT_API_BASE_URL } from '../../../config'; +import { handleFetchErrors } from '../../common/utils'; +import { ApiNft } from '../../types'; +import { fetchAddress } from './address'; + +export async function getAccountNfts(storage: Storage, accountId: string) { + const address = await fetchAddress(storage, accountId); + const url = `${BRILLIANT_API_BASE_URL}/nfts?`; + const response = await fetch(url + new URLSearchParams({ account: address })); + handleFetchErrors(response); + + return (await response.json()).nfts as ApiNft[]; +} diff --git a/src/api/blockchains/ton/tokens.ts b/src/api/blockchains/ton/tokens.ts new file mode 100644 index 00000000..263eccb6 --- /dev/null +++ b/src/api/blockchains/ton/tokens.ts @@ -0,0 +1,132 @@ +import TonWeb from 'tonweb'; +import { + AccountEvent, + Action, + ActionStatusEnum, + ActionTypeEnum, +} from 'tonapi-sdk-js'; + +import { Storage } from '../../storages/types'; +import { BRILLIANT_API_BASE_URL } from '../../../config'; +import { handleFetchErrors } from '../../common/utils'; +import { fetchAddress } from './address'; +import { getTonWeb, toBase64Address } from './util/tonweb'; +import { + TOKEN_TRANSFER_TON_AMOUNT, + TOKEN_TRANSFER_TON_FORWARD_AMOUNT, +} from './constants'; +import { ApiTransaction } from '../../types'; + +const { Address } = TonWeb.utils; +const { JettonWallet, JettonMinter } = TonWeb.token.jetton; +export type JettonWalletType = InstanceType; + +interface TokenInfo { + slug: string; + symbol: string; + minterAddress: string; +} + +interface TokenBalanceInfo extends TokenInfo { + balance: string; + jettonAddress: string; +} + +const knownTokensCache: Record = {}; + +export async function getAccountTokensBalances(storage: Storage, accountId: string) { + const address = await fetchAddress(storage, accountId); + const url = `${BRILLIANT_API_BASE_URL}/jetton-balances?`; + const response = await fetch(url + new URLSearchParams({ account: address })); + handleFetchErrors(response); + + const balances = (await response.json()).balances as TokenBalanceInfo[]; + updateKnownTokensCache(balances); + return Object.fromEntries(balances.map((balance) => [balance.slug, balance.balance])); +} + +function updateKnownTokensCache(tokens: TokenInfo[]) { + tokens.filter(({ slug }) => !(slug in knownTokensCache)) + .forEach(({ slug, symbol, minterAddress }) => { + knownTokensCache[slug] = { slug, symbol, minterAddress }; + }); +} + +export async function buildTokenTransfer( + slug: string, + fromAddress: string, + toAddress: string, + amount: string, + data?: string, +) { + const tokenAddress = await resolveTokenAddress(fromAddress, resolveTokenBySlug(slug).minterAddress); + const tokenWallet = getTokenWallet(tokenAddress); + + const payload = await tokenWallet.createTransferBody({ + tokenAmount: new TonWeb.utils.BN(amount), // TODO Waiting for a typo fix in tonweb + jettonAmount: new TonWeb.utils.BN(amount), // tokenAmount <-> jettonAmount + toAddress: new Address(toAddress), + forwardAmount: TonWeb.utils.toNano(TOKEN_TRANSFER_TON_FORWARD_AMOUNT), + forwardPayload: data && new TextEncoder().encode(data), + responseAddress: new Address(fromAddress), + } as any); + + return { + tokenWallet, + amount: TonWeb.utils.toNano(TOKEN_TRANSFER_TON_AMOUNT).toString(), + toAddress: tokenAddress, + payload, + }; +} + +export async function resolveTokenAddress(address: string, minterAddress: string) { + const minter = new JettonMinter(getTonWeb().provider, { address: minterAddress } as any); + return (await minter.getJettonWalletAddress(new Address(address))) + .toString(true, true, true); +} + +export function resolveTokenBySlug(slug: string) { + return knownTokensCache[slug]!; +} + +export function getTokenWallet(tokenAddress: string) { + return new JettonWallet(getTonWeb().provider, { address: tokenAddress }); +} + +export async function getTokenWalletBalance(tokenWallet: JettonWalletType) { + return (await tokenWallet.getData()).balance; +} + +export function buildTokenTransaction(event: AccountEvent, action: Action) { + if (action.type !== ActionTypeEnum.JettonTransfer || action.status !== ActionStatusEnum.Ok) { + return undefined; + } + + try { + const { + amount, + comment, + sender, + recipient, + jetton, + } = action.jettonTransfer!; + const minterAddress = toBase64Address(jetton.address); + const jettonInfo = Object.values(knownTokensCache).find((x) => x.minterAddress === minterAddress); + const fromAddress = toBase64Address(sender!.address); + const isIncoming = fromAddress !== toBase64Address(event.account.address); + return { + txId: `${event.lt}:NOHASH`, + timestamp: event.timestamp * 1000, + fromAddress, + toAddress: toBase64Address(recipient!.address), + amount: isIncoming || amount === '0' ? amount : `-${amount}`, + comment, + fee: event.fee.total.toString(), + slug: jettonInfo?.slug, + isIncoming, + lt: event.lt, + } as ApiTransaction; + } catch (err) { + return undefined; + } +} diff --git a/src/api/blockchains/ton/transactions.ts b/src/api/blockchains/ton/transactions.ts new file mode 100644 index 00000000..426c0754 --- /dev/null +++ b/src/api/blockchains/ton/transactions.ts @@ -0,0 +1,302 @@ +import { Cell } from 'tonweb/dist/types/boc/cell'; +import { WalletContract } from 'tonweb/dist/types/contract/wallet/wallet-contract'; +import TonWeb from 'tonweb'; +import { Transaction } from 'tonapi-sdk-js/dist/models/Transaction'; + +import { AccountEvent } from 'tonapi-sdk-js'; +import { Storage } from '../../storages/types'; +import { ApiTransaction, ApiTransactionDraftError } from '../../types'; +import { TON_TOKEN_SLUG } from '../../../config'; +import { base64ToBytes, hexToBase64 } from '../../common/utils'; +import { + getWalletBalance, + getWalletInfo, + isWalletInitialized, + pickAccountWallet, +} from './wallet'; +import { fetchPrivateKey } from './auth'; +import { getTonWeb, toBase64Address } from './util/tonweb'; +import { fetchAddress, resolveAddress } from './address'; +import { + buildTokenTransaction, + buildTokenTransfer, + getTokenWalletBalance, + JettonWalletType, +} from './tokens'; +import { + fetchAccountEvents, + fetchAccountTransactions, +} from './util/tonapiio'; + +const { Address } = TonWeb.utils; + +const DEFAULT_FEE = '10966001'; +const GET_TRANSACTIONS_LIMIT = 100; + +const DATA_TEXT_PREFIX = [0, 0, 0, 0].toString(); + +export async function checkTransactionDraft( + storage: Storage, + accountId: string, + tokenSlug: string, + toAddress: string, + amount: string, + data?: string | Uint8Array | Cell, + stateInit?: Cell, +) { + const result: { + error?: ApiTransactionDraftError; + fee?: string; + } = {}; + + const resolvedAddress = await resolveAddress(toAddress); + if (!resolvedAddress) { + result.error = ApiTransactionDraftError.DomainNotResolved; + return result; + } + + toAddress = resolvedAddress; + if (!Address.isValid(toAddress)) { + result.error = ApiTransactionDraftError.InvalidToAddress; + return result; + } + + if (BigInt(amount) < BigInt(0)) { + result.error = ApiTransactionDraftError.InvalidAmount; + return result; + } + + const wallet = await pickAccountWallet(storage, accountId); + if (!wallet) { + result.error = ApiTransactionDraftError.Unexpected; + return result; + } + + if (tokenSlug !== TON_TOKEN_SLUG) { + if (data && typeof data !== 'string') { + result.error = ApiTransactionDraftError.Unexpected; + return result; + } + + const address = await fetchAddress(storage, accountId); + const tokenAmount: string = amount; + let tokenWallet: JettonWalletType; + ({ + tokenWallet, + amount, + toAddress, + payload: data, + } = await buildTokenTransfer(tokenSlug, address, toAddress, amount, data)); + + const tokenBalance = await getTokenWalletBalance(tokenWallet!); + if (BigInt(tokenBalance) < BigInt(tokenAmount!)) { + result.error = ApiTransactionDraftError.InsufficientBalance; + return result; + } + } + + if (await isWalletInitialized(wallet)) { + const query = await signTransaction(wallet, toAddress, amount, data, stateInit); + const allFees = await query.estimateFee(); + const fees = allFees.source_fees; + result.fee = String(fees.in_fwd_fee + fees.storage_fee + fees.gas_fee + fees.fwd_fee); + } else { + result.fee = DEFAULT_FEE; + } + + const balance = await getWalletBalance(wallet); + if (BigInt(balance) < BigInt(amount) + BigInt(result.fee)) { + result.error = ApiTransactionDraftError.InsufficientBalance; + return result; + } + + return result; +} + +export async function submitTransfer( + storage: Storage, + accountId: string, + password: string, + tokenSlug: string, + toAddress: string, + amount: string, + data?: string | Uint8Array | Cell, + stateInit?: Cell, +) { + const wallet = await pickAccountWallet(storage, accountId); + if (!wallet) { + return undefined; + } + + const privateKey = await fetchPrivateKey(storage, accountId, password); + if (!privateKey) { + return undefined; + } + + let resolvedAddress = await resolveAddress(toAddress); + if (!resolvedAddress) { + return undefined; + } + + if (tokenSlug !== TON_TOKEN_SLUG) { + if (data && typeof data !== 'string') { + return undefined; + } + + const address = await fetchAddress(storage, accountId); + ({ + amount, + toAddress: resolvedAddress, + payload: data, + } = await buildTokenTransfer(tokenSlug, address, resolvedAddress, amount, data)); + } + + // Force default bounceable address for `waitTxComplete` to work properly + resolvedAddress = (new Address(resolvedAddress)).toString(true, true, true); + + // Force non-bounceable for non-initialized recipients + toAddress = !(await isWalletInitialized(resolvedAddress)) + ? (new Address(resolvedAddress)).toString(true, true, false) + : resolvedAddress; + + const query = await signTransaction(wallet, toAddress, amount, data, stateInit, privateKey); + await query.send(); + + return { resolvedAddress, amount }; +} + +async function signTransaction( + wallet: WalletContract, + toAddress: string, + amount: string, + payload?: string | Uint8Array | Cell, + stateInit?: Cell, + privateKey?: Uint8Array, +) { + const { seqno } = await getWalletInfo(wallet); + + return wallet.methods.transfer({ + secretKey: privateKey as any, // Workaround for wrong typing + toAddress, + amount, + payload, + seqno: seqno || 0, + sendMode: 3, + stateInit, + }); +} + +export async function getAccountLatestTxId(storage: Storage, accountId: string) { + const address = await fetchAddress(storage, accountId); + const tonWeb = getTonWeb(); + + const result: any[] = await tonWeb.provider.getTransactions( + address, + 1, + undefined, + undefined, + undefined, + true, + ); + if (Array.isArray(result) && result.length) { + return stringifyTxId(result[0].transaction_id); + } + + return undefined; +} + +export async function getAccountTransactionSlice( + storage: Storage, + accountId: string, + beforeTxId?: string, + afterTxId?: string, + limit?: number, +) { + const address = await fetchAddress(storage, accountId); + const beforeLt = beforeTxId ? Number(parseTxId(beforeTxId).lt) : undefined; + const afterLt = afterTxId ? Number(parseTxId(afterTxId).lt) : undefined; + + const rawTxs: Array = await fetchAccountTransactions( + address, + limit || GET_TRANSACTIONS_LIMIT, + afterLt, + beforeLt, + ); + + let txs: ApiTransaction[] = []; + if (Array.isArray(rawTxs) && rawTxs.length) { + txs = rawTxs.map(buildApiTransaction).filter(Boolean) as ApiTransaction[]; + // Request and add token transactions + const minTokenLt = afterLt ? afterLt + 1 : (txs[txs.length - 1] as any).lt; + const allEvents = await fetchAccountEvents(address, limit || GET_TRANSACTIONS_LIMIT, beforeLt); + + let tokenTxs: ApiTransaction[] = []; + allEvents.forEach((event: AccountEvent) => { + const newTokenTxs = event.actions + .map((action) => buildTokenTransaction(event, action)) + .filter(Boolean); + tokenTxs = tokenTxs.concat(newTokenTxs); + }); + + if (tokenTxs.length) { + txs = txs.concat(tokenTxs.filter((t: any) => (t.lt >= minTokenLt))); + txs = txs.sort((x: any, y: any) => (y.lt - x.lt)); + } + } + // eslint-disable-next-line no-param-reassign + txs.forEach((t: any) => { delete t.lt; }); + + return txs; +} + +function parseTxId(txId: string) { + const [lt, hash] = txId.split(':'); + return { lt: Number(lt), hash }; +} + +function buildApiTransaction(rawTx: Transaction): ApiTransaction | undefined { + const amount = String(rawTx.outMsgs.reduce((acc: bigint, outMsg: any) => { + return acc - BigInt(outMsg.value); + }, BigInt(rawTx.inMsg!.value))); + + const isIncoming = Boolean(rawTx.inMsg?.source); + const target = isIncoming ? rawTx.inMsg! : rawTx.outMsgs[0]; + if (!target) { + return undefined; + } + + return { + txId: stringifyTxId({ lt: rawTx.lt.toString(), hash: hexToBase64(rawTx.hash) }), + timestamp: Number(rawTx.utime * 1000), + amount, + fee: rawTx.fee.toString(), + fromAddress: toBase64Address(target!.source!.address!), + toAddress: toBase64Address(target!.destination!.address!), + comment: parseComment(target!.msgData), + slug: TON_TOKEN_SLUG, + isIncoming, + lt: rawTx.lt, + } as ApiTransaction; +} + +function stringifyTxId({ lt, hash }: { lt: string; hash: string }) { + return `${lt}:${hash}`; +} + +function parseComment(msgData?: string) { + if (msgData) { + try { + const bytes = base64ToBytes(msgData); + const firstBytes = Array.from(bytes.slice(0, 4)); + if (firstBytes.toString() === DATA_TEXT_PREFIX) { + return new TextDecoder('utf-8', { + fatal: true, + ignoreBOM: true, + }).decode(bytes.slice(4)); + } + } catch (err) { + // do nothing + } + } + return undefined; +} diff --git a/src/api/blockchains/ton/util/tonapiio.ts b/src/api/blockchains/ton/util/tonapiio.ts new file mode 100644 index 00000000..a5d79fcd --- /dev/null +++ b/src/api/blockchains/ton/util/tonapiio.ts @@ -0,0 +1,58 @@ +import { + Configuration, + EventApi, + JettonApi, + RawBlockchainApi, +} from 'tonapi-sdk-js'; +import { DEBUG } from '../../../../config'; + +const TONAPIIO_BASE_URL = process.env.TONAPIIO_BASE_URL; +const TONAPIIO_SERVER_KEY = process.env.TONAPIIO_SERVER_KEY; + +export const apiConfiguration = new Configuration({ + ...(TONAPIIO_SERVER_KEY && { + headers: { + Authorization: `Bearer ${TONAPIIO_SERVER_KEY}`, + }, + }), + basePath: TONAPIIO_BASE_URL, +}); + +export const eventApi = new EventApi(apiConfiguration); +export const jettonApi = new JettonApi(apiConfiguration); +export const blockchainApi = new RawBlockchainApi(apiConfiguration); + +export function fetchJettonBalances(account: string) { + return tonapiioErrorHandler(async () => { + return (await jettonApi.getJettonsBalances({ account } as any)).balances; + }, []); +} + +export function fetchAccountEvents(account: string, limit: number, beforeLt?: number) { + return tonapiioErrorHandler(async () => { + return (await eventApi.accountEvents({ account, limit, beforeLt })).events; + }, []); +} + +export function fetchAccountTransactions(account: string, limit: number, minLt?: number, maxLt?: number) { + return tonapiioErrorHandler(async () => { + return (await blockchainApi.getTransactions({ + account, + limit, + maxLt, + minLt, + })).transactions; + }, []); +} + +async function tonapiioErrorHandler(fn: () => Promise, defaultValue?: any) { + try { + return (await fn()) || defaultValue; + } catch (err) { + if (DEBUG) { + // eslint-disable-next-line no-console + console.error('[tonapiioErrorHandler]', err); + } + return defaultValue; + } +} diff --git a/src/api/blockchains/ton/util/tonweb.ts b/src/api/blockchains/ton/util/tonweb.ts new file mode 100644 index 00000000..2f221681 --- /dev/null +++ b/src/api/blockchains/ton/util/tonweb.ts @@ -0,0 +1,42 @@ +// eslint-disable-next-line max-classes-per-file +import { HttpProvider } from 'tonweb/dist/types/providers/http-provider'; +import { Address } from 'tonweb/dist/types/utils/address'; +import TonWeb from 'tonweb'; +import { IS_TESTNET } from '../../../../config'; + +const TONWEB_MAINNET_API_URL = process.env.TONWEB_MAINNET_API_URL || 'https://toncenter.com/api/v2/jsonRPC'; +const TONWEB_TESTNET_API_URL = process.env.TONWEB_TESTNET_API_URL || 'https://testnet.toncenter.com/api/v2/jsonRPC'; +const TONWEB_API_KEY = process.env.TONWEB_API_KEY; +const TONWEB_TESTNET_API_KEY = process.env.TONWEB_TESTNET_API_KEY; + +export declare class Dns { + readonly provider: HttpProvider; + + constructor(provider: HttpProvider); + getWalletAddress(domain: string): Promise
; +} + +export declare class MyTonWeb extends TonWeb { + dns: Dns; +} + +let tonWebCache: MyTonWeb; + +export function getTonWeb() { + if (!tonWebCache) { + tonWebCache = new TonWeb(new TonWeb.HttpProvider( + IS_TESTNET ? TONWEB_TESTNET_API_URL : TONWEB_MAINNET_API_URL, + { apiKey: IS_TESTNET ? TONWEB_TESTNET_API_KEY : TONWEB_API_KEY }, + )) as MyTonWeb; + } + + return tonWebCache; +} + +export function oneCellFromBoc(boc: Uint8Array) { + return TonWeb.boc.Cell.oneFromBoc(boc); +} + +export function toBase64Address(address: string) { + return new TonWeb.utils.Address(address).toString(true, true, true); +} diff --git a/src/api/blockchains/ton/wallet.ts b/src/api/blockchains/ton/wallet.ts new file mode 100644 index 00000000..b464d037 --- /dev/null +++ b/src/api/blockchains/ton/wallet.ts @@ -0,0 +1,113 @@ +import TonWeb from 'tonweb'; +import { WalletContract } from 'tonweb/dist/types/contract/wallet/wallet-contract'; +import { compact } from '../../../util/iteratees'; +import { Storage } from '../../storages/types'; +import { hexToBytes } from '../../common/utils'; +import { getTonWeb } from './util/tonweb'; +import { fetchPublicKey } from './auth'; +import { fetchAddress } from './address'; + +const DEFAULT_WALLET_VERSION = 'v3R2'; + +export async function publicKeyToAddress( + publicKey: Uint8Array, + walletVersion: keyof typeof TonWeb.Wallets['all'] = DEFAULT_WALLET_VERSION, +) { + const wallet = buildWallet(publicKey, walletVersion); + const address = await wallet.getAddress(); + + return address.toString(true, true, true); +} + +export function buildWallet( + publicKey: Uint8Array, + walletVersion: keyof typeof TonWeb.Wallets['all'], +) { + const tonWeb = getTonWeb(); + const WalletClass = tonWeb.wallet.all[walletVersion]; + return new WalletClass(tonWeb.provider, { publicKey, wc: 0 }); +} + +export async function getWalletInfo(walletOrAddress: WalletContract | string) { + const address = typeof walletOrAddress === 'string' + ? walletOrAddress + : (await walletOrAddress.getAddress()).toString(true, true, true); + + return getTonWeb().provider.getWalletInfo(address); +} + +export async function getAccountBalance(storage: Storage, accountId: string) { + const wallet = await pickAccountWallet(storage, accountId); + if (!wallet) { + return undefined; + } + + return getWalletBalance(wallet); +} + +export async function getWalletBalance(walletOrAddress: WalletContract | string): Promise { + const { balance } = await getWalletInfo(walletOrAddress); + + return balance || '0'; +} + +export async function isWalletInitialized(walletOrAddress: WalletContract | string) { + const { account_state: accountState } = await getWalletInfo(walletOrAddress); + return accountState === 'active'; +} + +export async function pickBestWallet(publicKey: Uint8Array) { + const tonWeb = getTonWeb(); + const walletClasses = Object.values(tonWeb.wallet.all); + const allWallets = await Promise.all(walletClasses.map(async (WalletClass) => { + const wallet = new WalletClass(tonWeb.provider, { publicKey, wc: 0 }); + const balance = await getWalletBalance(wallet); + if (balance === '0') { + return undefined; + } + + return { + wallet, + balance: BigInt(balance), + }; + })); + const walletsWithBalances = compact(allWallets); + const withBiggestBalance = walletsWithBalances.reduce((best, current) => { + return best && best?.balance > current.balance ? best : current; + }, undefined); + + return withBiggestBalance?.wallet || buildWallet(publicKey, DEFAULT_WALLET_VERSION); +} + +export async function pickWalletByAddress(publicKey: Uint8Array, address: string) { + const tonWeb = getTonWeb(); + const walletClasses = tonWeb.wallet.list; + const allWallets = await Promise.all(walletClasses.map(async (WalletClass) => { + const wallet = new WalletClass(tonWeb.provider, { publicKey, wc: 0 }); + const walletAddress = (await wallet.getAddress()).toString(true, true, true); + + return { + wallet, + address: walletAddress, + }; + })); + + return allWallets.find((w) => w.address === address)?.wallet; +} + +// TODO Cache +export async function pickAccountWallet(storage: Storage, accountId: string) { + const [publicKeyHex, address] = await Promise.all([ + fetchPublicKey(storage, accountId), + fetchAddress(storage, accountId), + ]); + const publicKey = hexToBytes(publicKeyHex); + + return pickWalletByAddress(publicKey, address); +} + +export function resolveWalletVersion(wallet: WalletContract) { + const tonWeb = getTonWeb(); + return Object.keys(tonWeb.wallet.all) + .find((version) => wallet instanceof tonWeb.wallet.all[version as keyof typeof tonWeb.wallet.all]); +} diff --git a/src/api/common/dappPromises.ts b/src/api/common/dappPromises.ts new file mode 100644 index 00000000..98cc88df --- /dev/null +++ b/src/api/common/dappPromises.ts @@ -0,0 +1,51 @@ +import generateIdFor from '../../util/generateIdFor'; + +const deferreds = new Map(); +const ids = {}; + +class Deferred { + resolve!: AnyToVoidFunction; + + reject!: AnyToVoidFunction; + + promise = new Promise((resolve, reject) => { + this.resolve = resolve; + this.reject = reject; + }); +} + +export function createDappPromise(promiseId = generateIdFor(ids)) { + const deferred = new Deferred(); + + deferreds.set(promiseId, deferred); + + const { promise } = deferred; + + return { promiseId, promise }; +} + +export function resolveDappPromise(promiseId: string, value?: any) { + const deferred = deferreds.get(promiseId); + if (!deferred) { + return; + } + + deferred.resolve(value); + deferreds.delete(promiseId); +} + +export function rejectDappPromise(promiseId: string, reason: string = 'Unknown rejection reason') { + const deferred = deferreds.get(promiseId); + if (!deferred) { + return; + } + + deferred.reject(new Error(reason)); + deferreds.delete(promiseId); +} + +export function rejectAllDappPromises(message: string) { + Array.from(deferreds.keys()).forEach((id) => { + rejectDappPromise(id, message); + }); +} diff --git a/src/api/common/txCallbacks.ts b/src/api/common/txCallbacks.ts new file mode 100644 index 00000000..98c2cb57 --- /dev/null +++ b/src/api/common/txCallbacks.ts @@ -0,0 +1,15 @@ +import { createCallbackManager } from '../../util/callbacks'; +import { ApiTransaction } from '../types'; + +export const txCallbacks = createCallbackManager(); + +export function whenTxComplete(toAddress: string, amount: string) { + return new Promise<{ result: boolean; txId: string }>((resolve) => { + txCallbacks.addCallback(function callback(transaction: ApiTransaction) { + if (transaction.toAddress === toAddress && transaction.amount === `-${amount}`) { + txCallbacks.removeCallback(callback); + resolve({ result: true, txId: transaction.txId }); + } + }); + }); +} diff --git a/src/api/common/utils.ts b/src/api/common/utils.ts new file mode 100644 index 00000000..e2b7aabb --- /dev/null +++ b/src/api/common/utils.ts @@ -0,0 +1,28 @@ +import TonWeb from 'tonweb'; + +export function bytesToHex(bytes: Uint8Array) { + return TonWeb.utils.bytesToHex(bytes); +} + +export function hexToBytes(hex: string) { + return TonWeb.utils.hexToBytes(hex); +} + +export function bytesToBase64(bytes: Uint8Array) { + return TonWeb.utils.bytesToBase64(bytes); +} + +export function base64ToBytes(hex: string) { + return TonWeb.utils.base64ToBytes(hex); +} + +export function hexToBase64(hex: string) { + return bytesToBase64(hexToBytes(hex)); +} + +export function handleFetchErrors(response: Response) { + if (!response.ok) { + throw new Error(response.statusText); + } + return response; +} diff --git a/src/api/dappMethods/index.ts b/src/api/dappMethods/index.ts new file mode 100644 index 00000000..dfb1003d --- /dev/null +++ b/src/api/dappMethods/index.ts @@ -0,0 +1,181 @@ +import type { OnApiUpdate } from '../types'; +import type { ApiDappUpdate, OnApiDappUpdate } from '../types/dappUpdates'; + +import blockchains from '../blockchains'; +import storage from '../storages/idb'; +import { resolveBlockchainKey } from '../methods/helpers'; +import { MAIN_ACCOUNT_ID, TON_TOKEN_SLUG } from '../../config'; +import { createDappPromise, resolveDappPromise } from '../common/dappPromises'; +import { clearCache, openPopupWindow } from './window'; +import { whenTxComplete } from '../common/txCallbacks'; +import { base64ToBytes, hexToBytes } from '../common/utils'; + +let onPopupUpdate: OnApiUpdate; + +// Sometimes (e.g. when Dev Tools is open) dapp needs more time to subscribe to provider +const INIT_UPDATE_DELAY = 50; + +const dappUpdaters: OnApiDappUpdate[] = []; +const ton = blockchains[resolveBlockchainKey(MAIN_ACCOUNT_ID)!]; + +export function initDappMethods(_onPopupUpdate: OnApiUpdate) { + onPopupUpdate = _onPopupUpdate; + resolveDappPromise('whenPopupReady'); +} + +export async function connectDapp(onDappUpdate: OnApiDappUpdate) { + dappUpdaters.push(onDappUpdate); + + const accounts = await requestAccounts(); + const isTonMagicEnabled = await storage.getItem('isTonMagicEnabled'); + + function sendUpdates() { + onDappUpdate({ + type: 'updateAccounts', + accounts, + }); + + onDappUpdate({ + type: 'updateTonMagic', + isEnabled: Boolean(isTonMagicEnabled), + }); + } + + sendUpdates(); + setTimeout(sendUpdates, INIT_UPDATE_DELAY); +} + +export function disconnectDapp(onDappUpdate: OnApiDappUpdate) { + const index = dappUpdaters.findIndex((updater) => updater === onDappUpdate); + if (index !== 1) { + dappUpdaters.splice(index, 1); + } +} + +export function updateDapps(update: ApiDappUpdate) { + dappUpdaters.forEach((onDappUpdate) => { + onDappUpdate(update); + }); +} + +export function getBalance() { + return ton.getAccountBalance(storage, MAIN_ACCOUNT_ID); +} + +export async function requestAccounts() { + const address = await ton.fetchAddress(storage, MAIN_ACCOUNT_ID); + return [address]; +} + +export async function requestWallets() { + const [address, publicKey, wallet] = await Promise.all([ + ton.fetchAddress(storage, MAIN_ACCOUNT_ID), + ton.fetchPublicKey(storage, MAIN_ACCOUNT_ID), + ton.pickAccountWallet(storage, MAIN_ACCOUNT_ID), + ]); + + return [{ + address, + publicKey, + walletVersion: wallet ? ton.resolveWalletVersion(wallet) : undefined, + }]; +} + +export async function sendTransaction(params: { + to: string; + value: string; + data?: string; + dataType?: 'text' | 'hex' | 'base64' | 'boc'; + stateInit?: string; +}) { + const { + value: amount, to: toAddress, data, dataType, stateInit, + } = params; + + let processedData; + if (data) { + switch (dataType) { + case 'hex': + processedData = hexToBytes(data); + break; + case 'base64': + processedData = base64ToBytes(data); + break; + case 'boc': + processedData = ton.oneCellFromBoc(base64ToBytes(data)); + break; + default: + processedData = data; + } + } + + const processedStateInit = stateInit ? ton.oneCellFromBoc(base64ToBytes(stateInit)) : undefined; + + await openPopupWindow(); + + const checkResult = await ton.checkTransactionDraft( + storage, MAIN_ACCOUNT_ID, TON_TOKEN_SLUG, toAddress, amount, processedData, processedStateInit, + ); + + if (!checkResult || checkResult?.error) { + onPopupUpdate({ + type: 'showTxDraftError', + error: checkResult?.error, + }); + + return false; + } + + const { promiseId, promise } = createDappPromise(); + + onPopupUpdate({ + type: 'createTransaction', + promiseId, + toAddress, + amount, + fee: checkResult.fee!, + ...(dataType === 'text' && { + comment: data, + }), + }); + + const password = await promise; + + const result = await ton.submitTransfer( + storage, MAIN_ACCOUNT_ID, password, TON_TOKEN_SLUG, toAddress, amount, processedData, processedStateInit, + ); + + if (result) { + whenTxComplete(result.resolvedAddress, amount) + .then(({ txId }) => { + onPopupUpdate({ + type: 'updateTxComplete', + toAddress, + amount, + txId, + }); + }); + } + + return Boolean(result); +} + +export async function rawSign({ data }: { data: string }) { + await openPopupWindow(); + + const { promiseId, promise } = createDappPromise(); + + onPopupUpdate({ + type: 'createSignature', + promiseId, + dataHex: data, + }); + + const password = await promise; + + return ton.rawSign(storage, MAIN_ACCOUNT_ID, password, data); +} + +export async function flushMemoryCache() { + await clearCache(); +} diff --git a/src/api/dappMethods/types.ts b/src/api/dappMethods/types.ts new file mode 100644 index 00000000..3002ba5a --- /dev/null +++ b/src/api/dappMethods/types.ts @@ -0,0 +1,5 @@ +import * as dappMethods from './index'; + +export type DappMethods = typeof dappMethods; +export type DappMethodArgs = Parameters; +export type DappMethodResponse = ReturnType; diff --git a/src/api/dappMethods/window.ts b/src/api/dappMethods/window.ts new file mode 100644 index 00000000..66865a10 --- /dev/null +++ b/src/api/dappMethods/window.ts @@ -0,0 +1,105 @@ +import storage from '../storages/idb'; +import { createDappPromise, rejectAllDappPromises } from '../common/dappPromises'; + +// eslint-disable-next-line no-restricted-globals +const { chrome } = self; + +let currentWindowId: number | undefined; +let readyPromise: Promise | undefined; + +const WINDOW_DEFAULTS = { + top: 120, + left: 20, + width: 368, + height: 750, +}; +const MARGIN_RIGHT = 20; +const WINDOW_STATE_MONITOR_INTERVAL = 3000; + +(function init() { + if (!chrome) { + return; + } + + chrome.system.display.getInfo(([firstScreen]) => { + if (firstScreen) { + WINDOW_DEFAULTS.left = firstScreen.bounds.width - WINDOW_DEFAULTS.width - MARGIN_RIGHT; + } + }); + + chrome.action.onClicked.addListener(openPopupWindow); + + chrome.windows.onRemoved.addListener((removedWindowId) => { + if (removedWindowId !== currentWindowId) { + return; + } + + rejectAllDappPromises('Extension popup closed'); + + currentWindowId = undefined; + readyPromise = undefined; + }); + + setInterval(async () => { + const currentWindow = await chrome.windows.getCurrent(); + if (!currentWindow || currentWindow.id !== currentWindowId) { + return; + } + + void storage.setItem('windowState', { + top: currentWindow.top, + left: currentWindow.left, + height: currentWindow.height, + width: currentWindow.width, + }); + }, WINDOW_STATE_MONITOR_INTERVAL); +}()); + +export async function openPopupWindow() { + if (typeof currentWindowId === 'number') { + chrome.windows.update(currentWindowId, { focused: true }); + return readyPromise; + } + + const lastWindowId = Number(await storage.getItem('windowId')); + if (lastWindowId) { + const wasWindowFound = await new Promise((resolve) => { + chrome.windows.get(lastWindowId, (window) => { + resolve(Boolean(window)); + }); + }); + + if (wasWindowFound) { + currentWindowId = lastWindowId; + chrome.windows.update(lastWindowId, { focused: true }); + readyPromise = Promise.resolve(); + return readyPromise; + } else { + await storage.removeItem('windowId'); + } + } + + const lastState = await storage.getItem('windowState'); + + await new Promise((resolve) => { + chrome.windows.create({ + ...WINDOW_DEFAULTS, + ...lastState, + url: 'index.html', + type: 'popup', + focused: true, + }, (window) => { + currentWindowId = window?.id; + readyPromise = createDappPromise('whenPopupReady').promise; + resolve(); + + void storage.setItem('windowId', currentWindowId); + }); + }); + + return readyPromise; +} + +export async function clearCache() { + await chrome.webRequest.handlerBehaviorChanged(); +} diff --git a/src/api/index.ts b/src/api/index.ts new file mode 100644 index 00000000..bc5aa5fd --- /dev/null +++ b/src/api/index.ts @@ -0,0 +1,3 @@ +// export { initApi, callApi } from './providers/base'; +export { initApi, callApi } from './providers/worker'; +// export { initApi, callApi } from './providers/extension'; diff --git a/src/api/methods/auth.ts b/src/api/methods/auth.ts new file mode 100644 index 00000000..bf66a84b --- /dev/null +++ b/src/api/methods/auth.ts @@ -0,0 +1,94 @@ +import type { OnApiUpdate } from '../types'; +import type { Storage } from '../storages/types'; + +import blockchains from '../blockchains'; + +import { MAIN_ACCOUNT_ID } from '../../config'; +import { setupBalancePolling } from './wallet'; +import { setupTransactionsPolling } from './transactions'; +import { setupTokensPolling } from './tokens'; +import { bytesToHex } from '../common/utils'; + +// let onUpdate: OnApiUpdate; +let storage: Storage; + +export function initAuth(_onUpdate: OnApiUpdate, _storage: Storage) { + // onUpdate = _onUpdate; + storage = _storage; +} + +export function generateMnemonic() { + return blockchains.ton.generateMnemonic(); +} + +export async function createWallet(mnemonic: string[], password: string) { + const { + mnemonicToSeed, + seedToKeyPair, + publicKeyToAddress, + } = blockchains.ton; + + if (!await validateMnemonic(mnemonic)) { + throw new Error('Invalid mnemonic'); + } + + const seedBase64 = await mnemonicToSeed(mnemonic); + const { publicKey } = seedToKeyPair(seedBase64); + const address = await publicKeyToAddress(publicKey); + const accountId = MAIN_ACCOUNT_ID; + + await storeAccount(accountId, mnemonic, password, publicKey, address); + void setupBalancePolling(accountId); + void setupTransactionsPolling(accountId); + void setupTokensPolling(); + + return address; +} + +export function validateMnemonic(mnemonic: string[]) { + return blockchains.ton.validateMnemonic(mnemonic); +} + +export async function importMnemonic(mnemonic: string[], password: string) { + const { + mnemonicToSeed, + seedToKeyPair, + pickBestWallet, + } = blockchains.ton; + + if (!await validateMnemonic(mnemonic)) { + throw new Error('Invalid mnemonic'); + } + + const seedBase64 = await mnemonicToSeed(mnemonic); + const { publicKey } = seedToKeyPair(seedBase64); + const wallet = await pickBestWallet(publicKey); + const address = (await wallet.getAddress()).toString(true, true, true); + const accountId = MAIN_ACCOUNT_ID; + + await storeAccount(accountId, mnemonic, password, publicKey, address); + void setupBalancePolling(accountId); + void setupTransactionsPolling(accountId); + void setupTokensPolling(); + + return address; +} + +async function storeAccount( + accountId: string, mnemonic: string[], password: string, publicKey: Uint8Array, address: string, +) { + const mnemonicEncrypted = await blockchains.ton.encryptMnemonic(mnemonic, password); + const publicKeyHex = bytesToHex(publicKey); + const publicKeys = { [accountId]: publicKeyHex }; + const addresses = { [accountId]: address }; + + await storage.setItem('mnemonicEncrypted', mnemonicEncrypted); + await storage.setItem('publicKeys', JSON.stringify(publicKeys)); + await storage.setItem('addresses', JSON.stringify(addresses)); +} + +export async function resetAccount() { + await storage.removeItem('addresses'); + await storage.removeItem('publicKeys'); + await storage.removeItem('mnemonicEncrypted'); +} diff --git a/src/api/methods/extension.ts b/src/api/methods/extension.ts new file mode 100644 index 00000000..a795d31c --- /dev/null +++ b/src/api/methods/extension.ts @@ -0,0 +1,50 @@ +import { PROXY } from '../../config'; +import { Storage } from '../storages/types'; +import { updateDapps } from '../dappMethods'; + +// eslint-disable-next-line no-restricted-globals +export const IS_EXTENSION = Boolean(self?.chrome?.runtime?.id); + +// eslint-disable-next-line max-len +const PROXY_PAC_SCRIPT = `function FindProxyForURL(url, host) { return host.endsWith('.ton') || host.endsWith('.adnl') ? 'PROXY ${PROXY}' : 'DIRECT'; }`; + +let storage: Storage; + +export async function initExtension(_storage: Storage) { + if (!IS_EXTENSION) { + return; + } + + storage = _storage; + + const isTonProxyEnabled = await storage.getItem('isTonProxyEnabled'); + doProxy(isTonProxyEnabled); +} + +export function doProxy(isEnabled: boolean) { + if (!PROXY) { + return; + } + + void storage.setItem('isTonProxyEnabled', isEnabled); + chrome.proxy.settings.set({ + scope: 'regular', + value: isEnabled ? { + mode: 'pac_script', + pacScript: { + data: PROXY_PAC_SCRIPT, + }, + } : { + mode: 'direct', + }, + }); +} + +export function doMagic(isEnabled: boolean) { + void storage.setItem('isTonMagicEnabled', isEnabled); + + updateDapps({ + type: 'updateTonMagic', + isEnabled, + }); +} diff --git a/src/api/methods/helpers.ts b/src/api/methods/helpers.ts new file mode 100644 index 00000000..553a27f0 --- /dev/null +++ b/src/api/methods/helpers.ts @@ -0,0 +1,21 @@ +import { Storage } from '../storages/types'; + +export function resolveBlockchainKey(accountId: string) { + if (accountId === '0') { + return 'ton'; + } + + return undefined; +} + +export async function checkAccountIsAuthorized(storage: Storage, accountId?: string) { + const addressesJson = await storage.getItem('addresses'); + if (!addressesJson) { + return false; + } + if (!accountId) { + return true; + } + const accountIds = Object.keys(JSON.parse(addressesJson) as Record); + return accountIds.includes(accountId); +} diff --git a/src/api/methods/index.ts b/src/api/methods/index.ts new file mode 100644 index 00000000..88dbceb6 --- /dev/null +++ b/src/api/methods/index.ts @@ -0,0 +1,6 @@ +export * from './auth'; +export * from './wallet'; +export * from './transactions'; +export * from './tokens'; +export * from './nfts'; +export * from './extension'; diff --git a/src/api/methods/init.ts b/src/api/methods/init.ts new file mode 100644 index 00000000..6b4f7950 --- /dev/null +++ b/src/api/methods/init.ts @@ -0,0 +1,19 @@ +import type { OnApiUpdate } from '../types'; +import { StorageType } from '../storages/types'; + +import storages from '../storages'; +import * as methods from '.'; +import * as dappMethods from '../dappMethods'; + +export default function init(onUpdate: OnApiUpdate, storageType: StorageType) { + const storage = storages[storageType]; + + methods.initAuth(onUpdate, storage); + methods.initTransactions(onUpdate, storage); + methods.initWallet(onUpdate, storage); + methods.initTokens(onUpdate, storage); + methods.initNfts(storage); + methods.initExtension(storage); + + dappMethods.initDappMethods(onUpdate); +} diff --git a/src/api/methods/nfts.ts b/src/api/methods/nfts.ts new file mode 100644 index 00000000..00973cbb --- /dev/null +++ b/src/api/methods/nfts.ts @@ -0,0 +1,18 @@ +import type { Storage } from '../storages/types'; + +import blockchains from '../blockchains'; +import { resolveBlockchainKey } from './helpers'; +import { MAIN_ACCOUNT_ID } from '../../config'; + +let storage: Storage; + +export function initNfts(_storage: Storage) { + storage = _storage; +} + +export function fetchNfts() { + const accountId = MAIN_ACCOUNT_ID; + const blockchain = blockchains[resolveBlockchainKey(accountId)!]; + + return blockchain.getAccountNfts(storage, accountId); +} diff --git a/src/api/methods/tokens.ts b/src/api/methods/tokens.ts new file mode 100644 index 00000000..926715f6 --- /dev/null +++ b/src/api/methods/tokens.ts @@ -0,0 +1,46 @@ +import { pause } from '../../util/schedulers'; +import { ApiToken, OnApiUpdate } from '../types'; +import { BRILLIANT_API_BASE_URL, DEBUG } from '../../config'; +import { handleFetchErrors } from '../common/utils'; +import { checkAccountIsAuthorized } from './helpers'; +import { Storage } from '../storages/types'; + +const POLLING_INTERVAL = 30000; + +let onUpdate: OnApiUpdate; +let storage: Storage; + +export function initTokens(_onUpdate: OnApiUpdate, _storage: Storage) { + onUpdate = _onUpdate; + storage = _storage; +} + +export async function setupTokensPolling() { + while (await checkAccountIsAuthorized(storage)) { + try { + const data = await fetch(`${BRILLIANT_API_BASE_URL}/tokens`); + handleFetchErrors(data); + + const tokensRaw = await data.json(); + if (tokensRaw && Object.keys(tokensRaw).length > 0) { + const tokens = Object.keys(tokensRaw).reduce((acc, key) => { + acc[tokensRaw[key].slug] = tokensRaw[key]; + + return acc; + }, {} as Record); + + onUpdate({ + type: 'updateTokens', + tokens, + }); + } + } catch (err) { + if (DEBUG) { + // eslint-disable-next-line no-console + console.error('Error fetching tokens', err); + } + } + + await pause(POLLING_INTERVAL); + } +} diff --git a/src/api/methods/transactions.ts b/src/api/methods/transactions.ts new file mode 100644 index 00000000..8a8d57fd --- /dev/null +++ b/src/api/methods/transactions.ts @@ -0,0 +1,90 @@ +import type { OnApiUpdate } from '../types'; +import type { Storage } from '../storages/types'; + +import { MAIN_ACCOUNT_ID, TON_TOKEN_SLUG } from '../../config'; +import { pause } from '../../util/schedulers'; +import blockchains from '../blockchains'; +import { txCallbacks, whenTxComplete } from '../common/txCallbacks'; +import { checkAccountIsAuthorized, resolveBlockchainKey } from './helpers'; + +const POLLING_INTERVAL = 1100; + +let onUpdate: OnApiUpdate; +let storage: Storage; + +export function initTransactions(_onUpdate: OnApiUpdate, _storage: Storage) { + onUpdate = _onUpdate; + storage = _storage; +} + +export function fetchTransactions() { + const accountId = MAIN_ACCOUNT_ID; + const blockchain = blockchains[resolveBlockchainKey(accountId)!]; + + return blockchain.getAccountTransactionSlice(storage, accountId); +} + +export function fetchTransactionSlice(beforeTxId?: string, limit?: number) { + const accountId = MAIN_ACCOUNT_ID; + const blockchain = blockchains[resolveBlockchainKey(accountId)!]; + + return blockchain.getAccountTransactionSlice(storage, accountId, beforeTxId, undefined, limit); +} + +export async function setupTransactionsPolling(accountId: string) { + const blockchain = blockchains[resolveBlockchainKey(accountId)!]; + let latestTxId = await blockchain.getAccountLatestTxId(storage, accountId); + + while (await checkAccountIsAuthorized(storage, accountId)) { + try { + const transactions = await blockchain.getAccountTransactionSlice(storage, accountId, undefined, latestTxId); + if (transactions.length) { + latestTxId = transactions[0].txId; + + // eslint-disable-next-line @typescript-eslint/no-loop-func + transactions.reverse().forEach((transaction) => { + txCallbacks.runCallbacks(transaction); + + onUpdate({ + type: 'newTransaction', + transaction, + }); + }); + } + } catch (err) { + // Do nothing + } + + await pause(POLLING_INTERVAL); + } +} + +export function checkTransactionDraft(toAddress: string, amount: string, comment?: string) { + const accountId = MAIN_ACCOUNT_ID; + const blockchain = blockchains[resolveBlockchainKey(accountId)!]; + + return blockchain.checkTransactionDraft(storage, accountId, TON_TOKEN_SLUG, toAddress, amount, comment); +} + +export async function submitTransfer( + password: string, toAddress: string, amount: string, comment?: string, +) { + const accountId = MAIN_ACCOUNT_ID; + const blockchain = blockchains[resolveBlockchainKey(accountId)!]; + const result = await blockchain.submitTransfer( + storage, accountId, password, TON_TOKEN_SLUG, toAddress, amount, comment, + ); + + if (result) { + whenTxComplete(result.resolvedAddress, result.amount).then(({ txId }) => { + onUpdate({ + type: 'updateTxComplete', + toAddress, + amount, + txId, + }); + }); + } + + return Boolean(result); +} diff --git a/src/api/methods/types.ts b/src/api/methods/types.ts new file mode 100644 index 00000000..5665bb64 --- /dev/null +++ b/src/api/methods/types.ts @@ -0,0 +1,5 @@ +import * as methods from './index'; + +export type Methods = typeof methods; +export type MethodArgs = Parameters; +export type MethodResponse = ReturnType; diff --git a/src/api/methods/wallet.ts b/src/api/methods/wallet.ts new file mode 100644 index 00000000..d5bd1618 --- /dev/null +++ b/src/api/methods/wallet.ts @@ -0,0 +1,107 @@ +import type { OnApiUpdate } from '../types'; +import type { Storage } from '../storages/types'; + +import blockchains from '../blockchains'; + +import { + DEBUG, + MAIN_ACCOUNT_ID, +} from '../../config'; +import { pause } from '../../util/schedulers'; +import * as dappPromises from '../common/dappPromises'; +import { checkAccountIsAuthorized, resolveBlockchainKey } from './helpers'; +import { setupTransactionsPolling } from './transactions'; +import { setupTokensPolling } from './tokens'; + +const POLLING_INTERVAL = 1100; + +let onUpdate: OnApiUpdate; +let storage: Storage; + +export async function initWallet(_onUpdate: OnApiUpdate, _storage: Storage) { + onUpdate = _onUpdate; + storage = _storage; + + const addressesJson = await storage.getItem('addresses'); + if (!addressesJson) { + return; + } + + const accountIds = Object.keys(JSON.parse(addressesJson) as Record); + void setupTokensPolling(); + Object.keys(accountIds).forEach((accountId) => { + setupBalancePolling(accountId); + setupTransactionsPolling(accountId); + }); + + const isTonProxyEnabled = await storage.getItem('isTonProxyEnabled'); + onUpdate({ + type: 'updateTonProxyState', + isEnabled: Boolean(isTonProxyEnabled), + }); + + const isTonMagicEnabled = await storage.getItem('isTonMagicEnabled'); + onUpdate({ + type: 'updateTonMagicState', + isEnabled: Boolean(isTonMagicEnabled), + }); +} + +export async function setupBalancePolling(accountId: string) { + const blockchain = blockchains[resolveBlockchainKey(accountId)!]; + + while (await checkAccountIsAuthorized(storage, accountId)) { + try { + // toncoin + const balance = await blockchain.getAccountBalance(storage, accountId); + if (balance) { + onUpdate({ + type: 'updateBalance', + accountId, + slug: 'toncoin', + balance, + }); + } + + // tokens + const tokensBalances = await blockchain.getAccountTokensBalances(storage, accountId); + for (const [tokenSlug, tokenBalance] of Object.entries(tokensBalances)) { + onUpdate({ + type: 'updateBalance', + accountId, + slug: tokenSlug, + balance: tokenBalance, + }); + } + } catch (err) { + if (DEBUG) { + // eslint-disable-next-line no-console + console.error('[setupBalancePolling]', err); + } + } + + await pause(POLLING_INTERVAL); + } +} + +export function getMnemonic(password: string, accountId?: string) { + accountId = MAIN_ACCOUNT_ID; + const blockchain = blockchains[resolveBlockchainKey(accountId)!]; + + return blockchain.fetchMnemonic(storage, accountId, password); +} + +export function verifyPassword(password: string, accountId?: string) { + accountId = MAIN_ACCOUNT_ID; + const blockchain = blockchains[resolveBlockchainKey(accountId)!]; + + return blockchain.verifyPassword(storage, accountId, password); +} + +export function confirmDappRequest(promiseId: string, password: string) { + dappPromises.resolveDappPromise(promiseId, password); +} + +export function cancelDappRequest(promiseId: string, reason?: string) { + dappPromises.rejectDappPromise(promiseId, reason); +} diff --git a/src/api/providers/base.ts b/src/api/providers/base.ts new file mode 100644 index 00000000..5a7dec3d --- /dev/null +++ b/src/api/providers/base.ts @@ -0,0 +1,17 @@ +import type { OnApiUpdate } from '../types'; +import type { Methods, MethodArgs, MethodResponse } from '../methods/types'; + +import { StorageType } from '../storages/types'; + +import init from '../methods/init'; +import * as methods from '../methods'; + +// eslint-disable-next-line no-restricted-globals +export function initApi(onUpdate: OnApiUpdate, storageType: StorageType) { + init(onUpdate, storageType); +} + +export function callApi(fnName: T, ...args: MethodArgs): MethodResponse { + // @ts-ignore + return methods[fnName](...args) as MethodResponse; +} diff --git a/src/api/providers/direct/index.ts b/src/api/providers/direct/index.ts new file mode 100644 index 00000000..85c271ca --- /dev/null +++ b/src/api/providers/direct/index.ts @@ -0,0 +1,17 @@ +import type { OnApiUpdate } from '../../types'; +import type { Methods, MethodArgs, MethodResponse } from '../../methods/types'; + +import { StorageType } from '../../storages/types'; + +import init from '../../methods/init'; +import * as methods from '../../methods'; + +// eslint-disable-next-line no-restricted-globals +export function initApi(onUpdate: OnApiUpdate) { + init(onUpdate, StorageType.LocalStorage); +} + +export function callApi(fnName: T, ...args: MethodArgs): MethodResponse { + // @ts-ignore + return methods[fnName](...args) as MethodResponse; +} diff --git a/src/api/providers/extension/extensionForContentScript.ts b/src/api/providers/extension/extensionForContentScript.ts new file mode 100644 index 00000000..374a6357 --- /dev/null +++ b/src/api/providers/extension/extensionForContentScript.ts @@ -0,0 +1,25 @@ +import type { OnApiDappUpdate } from '../../types/dappUpdates'; +import { DappMethodArgs, DappMethods } from '../../dappMethods/types'; + +import { CONTENT_SCRIPT_PORT, PROVIDER_CHANNEL } from '../../../extension/config'; + +import * as dappApi from '../../dappMethods'; +import { createExtensionInterface } from '../../../util/createPostMessageInterface'; + +const ALLOWED_METHODS = new Set([ + 'getBalance', 'requestAccounts', 'requestWallets', 'sendTransaction', 'rawSign', 'flushMemoryCache', +]); + +createExtensionInterface(CONTENT_SCRIPT_PORT, (name: string, ...args: any[]) => { + if (!ALLOWED_METHODS.has(name)) { + throw new Error('Method not allowed'); + } + + const method = dappApi[name as keyof DappMethods]; + // @ts-ignore + return method(...args as DappMethodArgs); +}, PROVIDER_CHANNEL, (onUpdate: OnApiDappUpdate) => { + dappApi.connectDapp(onUpdate); +}, (onUpdate: OnApiDappUpdate) => { + dappApi.disconnectDapp(onUpdate); +}); diff --git a/src/api/providers/extension/extensionForPopup.ts b/src/api/providers/extension/extensionForPopup.ts new file mode 100644 index 00000000..31eba543 --- /dev/null +++ b/src/api/providers/extension/extensionForPopup.ts @@ -0,0 +1,17 @@ +import type { OnApiUpdate } from '../../types'; +import type { Methods, MethodArgs } from '../../methods/types'; + +import { StorageType } from '../../storages/types'; +import { POPUP_PORT } from '../../../extension/config'; +import { createExtensionInterface } from '../../../util/createPostMessageInterface'; + +import init from '../../methods/init'; +import * as methods from '../../methods'; + +createExtensionInterface(POPUP_PORT, (name: string, ...args: any[]) => { + const method = methods[name as keyof Methods]; + // @ts-ignore + return method(...args as MethodArgs); +}, undefined, (onUpdate: OnApiUpdate) => { + init(onUpdate, StorageType.IndexedDb); +}); diff --git a/src/api/providers/extension/index.ts b/src/api/providers/extension/index.ts new file mode 100644 index 00000000..31684b8f --- /dev/null +++ b/src/api/providers/extension/index.ts @@ -0,0 +1,32 @@ +import type { OnApiUpdate } from '../../types'; +import type { Methods, MethodArgs, MethodResponse } from '../../methods/types'; + +import { DEBUG } from '../../../config'; +import { POPUP_PORT } from '../../../extension/config'; +import { Connector, createExtensionConnector } from '../../../util/PostMessageConnector'; + +let connector: Connector; + +export function initApi(onUpdate: OnApiUpdate) { + if (!connector) { + connector = createExtensionConnector(POPUP_PORT, onUpdate); + } +} + +export function callApi(fnName: T, ...args: MethodArgs) { + if (!connector) { + if (DEBUG) { + // eslint-disable-next-line no-console + console.warn('API is not initialized'); + } + + return undefined; + } + + const promise = connector.request({ + name: fnName, + args, + }); + + return promise as MethodResponse; +} diff --git a/src/api/providers/worker/index.ts b/src/api/providers/worker/index.ts new file mode 100644 index 00000000..41565b80 --- /dev/null +++ b/src/api/providers/worker/index.ts @@ -0,0 +1,33 @@ +import type { OnApiUpdate } from '../../types'; +import type { Methods, MethodArgs, MethodResponse } from '../../methods/types'; + +import { DEBUG } from '../../../config'; +import { Connector, createConnector } from '../../../util/PostMessageConnector'; + +let connector: Connector; + +export function initApi(onUpdate: OnApiUpdate) { + if (!connector) { + connector = createConnector(new Worker(new URL('./worker.ts', import.meta.url)), onUpdate); + } + + return connector.init(); +} + +export function callApi(fnName: T, ...args: MethodArgs) { + if (!connector) { + if (DEBUG) { + // eslint-disable-next-line no-console + console.warn('API is not initialized'); + } + + return undefined; + } + + const promise = connector.request({ + name: fnName, + args, + }); + + return promise as MethodResponse; +} diff --git a/src/api/providers/worker/worker.ts b/src/api/providers/worker/worker.ts new file mode 100644 index 00000000..c37374d8 --- /dev/null +++ b/src/api/providers/worker/worker.ts @@ -0,0 +1,18 @@ +import type { OnApiUpdate } from '../../types'; +import type { Methods, MethodArgs } from '../../methods/types'; + +import { StorageType } from '../../storages/types'; +import { createWorkerInterface } from '../../../util/createPostMessageInterface'; + +import init from '../../methods/init'; +import * as methods from '../../methods'; + +createWorkerInterface((name: string, ...args: any[]) => { + if (name === 'init') { + return init(args[0] as OnApiUpdate, StorageType.IndexedDb); + } else { + const method = methods[name as keyof Methods]; + // @ts-ignore + return method(...args as MethodArgs); + } +}); diff --git a/src/api/storages/idb.ts b/src/api/storages/idb.ts new file mode 100644 index 00000000..25396483 --- /dev/null +++ b/src/api/storages/idb.ts @@ -0,0 +1,9 @@ +import * as idb from 'idb-keyval'; +import { Storage } from './types'; + +export default { + getItem: idb.get, + setItem: idb.set, + removeItem: idb.del, + clear: idb.clear, +} as Storage; diff --git a/src/api/storages/index.ts b/src/api/storages/index.ts new file mode 100644 index 00000000..cbe62741 --- /dev/null +++ b/src/api/storages/index.ts @@ -0,0 +1,8 @@ +import { StorageType } from './types'; +import idb from './idb'; +import localStorage from './localStorage'; + +export default { + [StorageType.IndexedDb]: idb, + [StorageType.LocalStorage]: localStorage, +}; diff --git a/src/api/storages/localStorage.ts b/src/api/storages/localStorage.ts new file mode 100644 index 00000000..5872513f --- /dev/null +++ b/src/api/storages/localStorage.ts @@ -0,0 +1,12 @@ +import { Storage } from './types'; + +function withPromise(fn: AnyFunction) { + return (...args: any) => Promise.resolve(fn(...args)); +} + +export default (typeof localStorage === 'object' ? { + getItem: withPromise(localStorage.getItem), + setItem: localStorage.setItem, + removeItem: localStorage.removeItem, + clear: localStorage.clear, +} : {}) as Storage; diff --git a/src/api/storages/types.ts b/src/api/storages/types.ts new file mode 100644 index 00000000..29ff0e0b --- /dev/null +++ b/src/api/storages/types.ts @@ -0,0 +1,14 @@ +export enum StorageType { + IndexedDb, + LocalStorage, +} + +export interface Storage { + getItem(name: string): Promise; + + setItem(name: string, value: any): Promise; + + removeItem(name: string): Promise; + + clear(): Promise; +} diff --git a/src/api/types/dappUpdates.ts b/src/api/types/dappUpdates.ts new file mode 100644 index 00000000..bbf6b958 --- /dev/null +++ b/src/api/types/dappUpdates.ts @@ -0,0 +1,18 @@ +export type ApiDappUpdateBalance = { + type: 'updateBalance'; + balance: string; +}; + +export type ApiDappUpdateAccounts = { + type: 'updateAccounts'; + accounts: string[]; +}; + +export type ApiDappUpdateTonMagic = { + type: 'updateTonMagic'; + isEnabled: boolean; +}; + +export type ApiDappUpdate = ApiDappUpdateBalance | ApiDappUpdateAccounts | ApiDappUpdateTonMagic; + +export type OnApiDappUpdate = (update: ApiDappUpdate) => void; diff --git a/src/api/types/index.ts b/src/api/types/index.ts new file mode 100644 index 00000000..766d84c1 --- /dev/null +++ b/src/api/types/index.ts @@ -0,0 +1,2 @@ +export * from './updates'; +export * from './misc'; diff --git a/src/api/types/misc.ts b/src/api/types/misc.ts new file mode 100644 index 00000000..7607d67c --- /dev/null +++ b/src/api/types/misc.ts @@ -0,0 +1,45 @@ +export type ApiToken = { + name: string; + symbol: string; + slug: string; + quote: { + price: number; + percentChange1h: number; + percentChange24h: number; + percentChange7d: number; + percentChange30d: number; + }; + minterAddress?: string; + image?: string; +}; + +export interface ApiTransaction { + txId: string; + timestamp: number; + amount: string; + fromAddress: string; + toAddress: string; + comment?: string; + fee: string; + slug?: string; + isIncoming: boolean; +} + +export enum ApiTransactionDraftError { + InvalidAmount = 'InvalidAmount', + InvalidToAddress = 'InvalidToAddress', + InsufficientBalance = 'InsufficientBalance', + Unexpected = 'Unexpected', + DomainNotResolved = 'DomainNotResolved', +} + +export interface ApiNft { + index: number; + name?: string; + address: string; + thumbnail: string; + image: string; + collectionName: string; + collectionAddress: string; + isOnSale: boolean; +} diff --git a/src/api/types/updates.ts b/src/api/types/updates.ts new file mode 100644 index 00000000..884dd797 --- /dev/null +++ b/src/api/types/updates.ts @@ -0,0 +1,68 @@ +import { ApiToken, ApiTransaction, ApiTransactionDraftError } from './misc'; + +export type ApiUpdateBalance = { + type: 'updateBalance'; + accountId: string; + slug: string; + balance: string; +}; + +export type ApiUpdateNewTransaction = { + type: 'newTransaction'; + transaction: ApiTransaction; +}; + +export type ApiUpdateTokens = { + type: 'updateTokens'; + tokens: Record; +}; + +export type ApiUpdateCreateTransaction = { + type: 'createTransaction'; + promiseId: string; + toAddress: string; + amount: string; + fee: string; + comment?: string; +}; + +export type ApiUpdateCreateSignature = { + type: 'createSignature'; + promiseId: string; + dataHex: string; +}; + +export type ApiUpdateTxComplete = { + type: 'updateTxComplete'; + toAddress: string; + amount: string; + txId: string; +}; + +export type ApiUpdateShowTxDraftError = { + type: 'showTxDraftError'; + error?: ApiTransactionDraftError; +}; + +export type ApiUpdateTonProxyState = { + type: 'updateTonProxyState'; + isEnabled: boolean; +}; + +export type ApiUpdateTonMagicState = { + type: 'updateTonMagicState'; + isEnabled: boolean; +}; + +export type ApiUpdate = + ApiUpdateBalance + | ApiUpdateNewTransaction + | ApiUpdateTokens + | ApiUpdateCreateTransaction + | ApiUpdateCreateSignature + | ApiUpdateTxComplete + | ApiUpdateShowTxDraftError + | ApiUpdateTonProxyState + | ApiUpdateTonMagicState; + +export type OnApiUpdate = (update: ApiUpdate) => void; diff --git a/src/assets/arrow-right-white.svg b/src/assets/arrow-right-white.svg new file mode 100644 index 00000000..689ae7a0 --- /dev/null +++ b/src/assets/arrow-right-white.svg @@ -0,0 +1 @@ + diff --git a/src/assets/arrow-right.svg b/src/assets/arrow-right.svg new file mode 100644 index 00000000..991cc947 --- /dev/null +++ b/src/assets/arrow-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/card.jpg b/src/assets/card.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1c23c1b05d3948151feb4d7341bd77638226a4e6 GIT binary patch literal 2009 zcmbu9dpwl+8o+<=%orn=W=0sQaml5`?r50N(ijXG!&=p_3@tMa#W>v@hHP<6;$X8_ z%Z}DYcH0rTcbds%ikVzGC9y6glC|8D}-O@PCI+fX19G6M)4gv3FrHedvo zxgOwCKnQ?Dq19AF0JHW70IV*Vam_5vEX{N5k`+h*jN{2ToE^@NY(f~&A^;$NvsS#W zE}ofP9o7mA+d5v?tt}w$LJt#K(MZRBgqm+;l^?X|Px3-5j&vpGO7H$yHet~$M7}9K1QdGZ0~)9N zN=m%vJESKvIS%gl> zj8sV!r$;Mwp=&K@t+2r(p_1zhQY{pnxA`GKi)YB*U)GspWkr%_PYsX=q>3*eVGEly zb+f|uM3BOe5kGLaS|h^+6fI&Nfdu&FQHzSf8?M>aTVEyvsOv!A45?n^NKyO+w_hzv zd~t7ho**U_9;e~|P80SIfkL9!r-{JA(_C(ktp_M}4Eq;=NqYs~H68qFF9V2sPw8_H z1?72IvFUVAo@*c*FoH}oq+y7EcAvGoNB3YH?(Un$x-$;+B#JimSlDqe5^lJ}UhhEr z{sU*$O!|mkcjkjk5R6v)z(%gISEjMj5ec)%#H9aC1>P$UW%2meKT){}Zbl<-JQ&|` zwT~uN2x_*Zv%YnZJbX}kyv=B2Mp}P)j1hV?Zm4nKSR1SIMZjR}&J^6=o2I;jqE;5Q zUnKT01Lo+_y{CS$o#fc!77;Wpr~CPPReGpkiq1ifbyd~e*s|ROEu^I{$UpPuv|y-TAgPelEDCvJ6Ep$OmXo9cVp`_V zorX%jK+;T|7rtD3?{e*(u&ZBb&9eO=FphRRLAdlbX=27>obn^jFv_PsCUVt!`Wq)q zqEM04eByOevws%1r=U?$ds9-?G;%ccW##b_R^8Luo{8PB#>VRSVuRN_;=a1)XEr`z z7rf<6a%)PwRp4j1Gno#jn!OVG$&;Z%h250V%K};7HxK;$po!+I_xmf$CttlUu8a10 z^4@9m9QDfE?;{_a-(K5SZWv8=t~+Dv=sVXr|3``IjDB!#m-3cD@6$P2H05=E5YI)q zFm6yp-enhYXX?%)F*W`O_4$m>=b3fRk<{KP#@>Vm@!3<6%LWA}|9vw4>IJb(CbJh4 zsVcy;4aUzNpA|mtij9wtyD=PkZ6`0q*pDox-f~EgeqrXstnHa|vNaA`nq7#Po&7HB zD#eO))pltzK1-;~O43Qs%?r2^71(~g`0ko2mRJBGQ4k7&{3I>}usDQ?Dg7%mlB>U6 zI6mxn%139AE@0NUClf_cKUSJV8tb43`;TV0ccpDH-43NedbynKzmIHudXBiM9=c@j zoh3#kSqBbtyQjJL%dDPtp6;WyCyU(2<92<$@7Ll1e@hF+%F`7Rgy+YqKx4a)E4{kl zLMbc!w1<>qwY=(^qo8sNE~jJOxewAYT6-k*Pf)}wl9G?kT`JXT(=uKNgX&=%bKRs!(J|0y7x z36_Mw(?6Ul5aa?bunq`rlqE?;c)TU&vp-q4-Hv3Rj}0llWNN=SFpyc4sccl!}K-& zCp7$o;EfE^*WvIN7ceRkiPBwj4vT1hd6O&&9%5IcH)LzLtfATqJrl?1+_JBrT@ O!(Jc3xEc7V2LA(RRvQTb literal 0 HcmV?d00001 diff --git a/src/assets/card@2x.jpg b/src/assets/card@2x.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cfdf9e3064a1e71dc708355bb4c92d33a6ef7bfd GIT binary patch literal 7841 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%0A9&}=}(TU)q?@MWH3s{$( zL1S!nh2Ggc07ipyIX`4LWDoF(W4{@<-owwOX^9|OFi7SQ*}Qkl+?OoRqRC;f0EZ6l z92)nKjl%^X5S+^?xV*d&&uxhGaxJaPIX^U}TO;Kl<7=eqKY9VUI_h1LT$2T~SpV?% zJK1ZrCStK+#~LkoGhu*h)c3T-mmYXqayE9(^_-R$(P(4coM@^d|<}^5uBoRr&=wc&kdEVssRtS8Gn1~DF=YlQFPmSJV>;dx4 zQY7VCMJWCoMV2dBy{}&O74`|3s*?s3x32A4JbA1Y#MKM3H&Z|nn7qdR=tnteMWPNj z3Gcu9R+|wB{t%My)h`@>ZiK6!->GVI@ZvBgEbysq zFC-`nUiiLh$vzcIkC~a%8?SafS9*I2Wtqb|mQ&Gm*T?f}Vg8%ekP9Xu@KcGAgT{Wu z!f_>}bCO1u=dnG2zL<*i1hs37JTM}~zBkZDGsK@;nx1YXMJ}}U=HvO^hC8ihp@qWz z*pkz$I>c4ouSLcbA}+>De%I^4>HHe7!%;4?Hy$h1D#ulyMchNO6M(a-kMZUbFPnAO)nQ z%X*X1#TI3`Q&onsnq4O2_t3(U%;U>KjJ_7>jIK3(ER|LFq$5B`!i>{|QlI7z+MjWIB&KV7}wsNYBwEW%Ymf$;kfOMnr z(hF_+%x@f+Txyc1qM{c=Vbv5LvC!|;ZJu#a@sQhg@2ZjEPcDs2IeLrBbzX%`?z-eR7F@_1wJjOfr5WBRHuico_w0w<@9clgnLZ#R z7M7!One%gCQV0?kUJ$ybK?&{(?2&%8ScpM-Oy~4C`B$6G-cL(cggK19LK^J>BnsjZ zmO$4BMr{j(H6vS9RjS$s)t}uJmJ5rF% zKss?KQd@y#g}zFJnMgmvtdwo_e40PU!~_w|rr?an24x5az*+%EVhfF69?@_;y)v$M zg-8vT65n|@UaKQ478dILjK4M9PHYuh$P8b}Mw-cBy9Jh)*UW+uS$?DUJTMZ}%T1w4 ztPqUz7-fy8t4a%2RG;DeZd5i_5d&V&PA8+__g>hFRSMG z|H4o_%=mGIr-k}2M9!{u86XX5*aB#_9LBM$&~V& z`E)KEB0-`2=}u`INjE03M!1Af&q`Ad=T?!h`#=tJN_PfYQ*6L|E!eDm$;fgBy%M}_ zSeV_^puBclVrxpb?OZUykjO+-lK-3_*1RX2lE?^dZ-RJZlnahKu|}j~IDD8{uxJM)|uiIKJlMeeV#$rB9WKunkopqA4wryE0>wy5ac69pIE^NG>sL*rmKx@^qxmw-%A!w7I2g5nRQZ9DgDR4d8 zx@IiNZz%qLkr5r<#NJ%#aBPz`?#!YM)-}++-+wV>M$$qwFW>Pu4hv1Z#&dC*`_*c_1c$gww6;kHTZM~Ji8|H}T!s_W(d^;XDvY=$QfT}vSh%&{yde|p8%ijPaS z&p)`@E(af1-rh$3)We*^5UGV`jnq~l8Ti38b{I9D9_f>E_1DEq{uQmqSDJ$~<~$dR zRhn0tgRx^1O6u#Rildtp#t||+|5y<+1flyp9x=yy<|N#zIA}!=G?OVH&?c0bkoMix z_$lv2L{1E=Jh+3V`&{!+PkWK6al(8Qo6R^kRiXPTt5<`=Fk?BX+^N~71QV8dG^hBF zuYZXxjQl6CcAev|@-$(*?16!lKX;8dAv{#GZH;KT*UwRLG+g>opBasKwz*=oCL0(W zJ(d$TM|TJ}3dbO$$pa7Gn31*O@{g@CoF#ilRh5)3}IBJo|7nIOH$a4COlIm}I| ze7i3RMv8WkAG^kgl<~@?QBT7f)+&t3<@f4+UHF|XJgPTcY_X93GmEb7?cou;jSS>z zeyYh`hFpbM#f#9%e1*}dlovj(%`zE1v&Z|UYiL8&>v6Al##nlt`rI|2ps%b!U*&t3 zE@7LcJ^D9BGv~I+TG_BIO_R%!R*qnEjH6STRG-eByVTYoCv3%fZPLmdW6C7p8>=$o;ng%s z=q6?S9y4^F;BUXhP9%$o4c>DIwESnD!@Sx7M{MMhJ|V;3HS3+D>3?PE)1(v$CkS`% z$2aSh1}!0KNFCoT^%bRUTi#K>UE9bD474y&_guFN8LuLvSMhx4jxz;|bu`m1u6kd{ z8a91}!n`?AEYm&3@#5!xW1+7nun3s91<=ivfnNBT!6`6>rFkNi!&qNO)bSXuuI$iV zjK~TU9GloE)*tI*szzw`5V9Eh2^tCWA*x0vF}w??R={9jFs)-{iyE!V9il9skUBe+ zdH*6}DvY9X;6%5}pB|%trMVOKYEzmHrV}HoO-+64sSnDhR&cG4=jeLAEbJF^xVfC~ z9)P76vA{bGbqlvD5JNDb^|Lc*@6v0sDvON?pA@gko2WddsHGux6+tqoy3alr#+Iwh zj;I=ab+RHKOv}=GZ~=o|C!2y)RFqRf2*q-Djp(Bk2CmscBd3A+8WB&NOlcdU&?L%6 zeVy9%26TqI*5`T@MvIjW@dH}!v1o)1_LBD-W2j{WJVrz*yULN;)HWf4Ex5bgU)H?D z&$|c>h#9Rs?G~@BBaTt%QbB*`!l;7U_W%r$O?E+~(MbY>IJ}G`eZh^6d7u_4WW8epMIuGw8KlwNi4g%K+HDAAmSax3 z=#O2%gZ$!TC>v~(Yv@(Z9Pip6tKQU`T@IfgOSSJXLIW-C{>{j$LU{k#{-3NY5CQGN4h^HLiBm6rtqEdli>4wJ@YPL4Zw3W7==Kas*yRrZ~=enh<=`#i_;?6hkM{Emr9 zkgweXDbeARV}-|zme>4Qh~zm*AA3Ca5g5jJZ~;N`IIzu0wN4_=u}J^s_I z?PO^n|L1P2v#?6bg)OOHgD}Ybx8YKrX=TU7*J`w`@r`z!p04GJni2?p6|XS{)(ItYQXX|O`&Dntfa4R(a=N;*&H3gWUTfLP(k>e@sCjYP zAaDFd-&$htyWcIEP>=_rOgr!7S<9?%;99YVAEY&=O0eGK|XSMEp|XMI8d3i`*%M@O~pmkl_6Y*$)F78-8s{b} \ No newline at end of file diff --git a/src/assets/coins/btc.png b/src/assets/coins/btc.png new file mode 100644 index 0000000000000000000000000000000000000000..efb40ec1b9bc06f0263e23d652ad8677758bd3fd GIT binary patch literal 13736 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

rB5V7h}XTXdG^&EO~I0ACZbdmO6Bz$91 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 literal 0 HcmV?d00001 diff --git a/src/assets/coins/ton.png b/src/assets/coins/ton.png new file mode 100644 index 0000000000000000000000000000000000000000..ab89ee4c1a2320080e8090c30db5cf5b2ab0b9e9 GIT binary patch literal 4902 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 Js5kRU`adnH^8f$< literal 0 HcmV?d00001 diff --git a/src/assets/icons/arrow-right.svg b/src/assets/icons/arrow-right.svg new file mode 100644 index 00000000..0a8f0d38 --- /dev/null +++ b/src/assets/icons/arrow-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/close.svg b/src/assets/icons/close.svg new file mode 100644 index 00000000..bb3a6851 --- /dev/null +++ b/src/assets/icons/close.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/copy.svg b/src/assets/icons/copy.svg new file mode 100644 index 00000000..07741706 --- /dev/null +++ b/src/assets/icons/copy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/eye-closed.svg b/src/assets/icons/eye-closed.svg new file mode 100644 index 00000000..4ee30b79 --- /dev/null +++ b/src/assets/icons/eye-closed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/eye.svg b/src/assets/icons/eye.svg new file mode 100644 index 00000000..712f0e10 --- /dev/null +++ b/src/assets/icons/eye.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/menu.svg b/src/assets/icons/menu.svg new file mode 100644 index 00000000..2416a7fb --- /dev/null +++ b/src/assets/icons/menu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/paste.svg b/src/assets/icons/paste.svg new file mode 100644 index 00000000..738114fa --- /dev/null +++ b/src/assets/icons/paste.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/qrcode.svg b/src/assets/icons/qrcode.svg new file mode 100644 index 00000000..d790921e --- /dev/null +++ b/src/assets/icons/qrcode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/receive-alt.svg b/src/assets/icons/receive-alt.svg new file mode 100644 index 00000000..a4448259 --- /dev/null +++ b/src/assets/icons/receive-alt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/receive.svg b/src/assets/icons/receive.svg new file mode 100644 index 00000000..7edaac35 --- /dev/null +++ b/src/assets/icons/receive.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/search.svg b/src/assets/icons/search.svg new file mode 100644 index 00000000..e86e77f4 --- /dev/null +++ b/src/assets/icons/search.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/send-alt.svg b/src/assets/icons/send-alt.svg new file mode 100644 index 00000000..16fa292f --- /dev/null +++ b/src/assets/icons/send-alt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/send.svg b/src/assets/icons/send.svg new file mode 100644 index 00000000..0d12a4e0 --- /dev/null +++ b/src/assets/icons/send.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/share.svg b/src/assets/icons/share.svg new file mode 100644 index 00000000..b1506d8b --- /dev/null +++ b/src/assets/icons/share.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/tonscan.svg b/src/assets/icons/tonscan.svg new file mode 100644 index 00000000..9fad0518 --- /dev/null +++ b/src/assets/icons/tonscan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/logo.svg b/src/assets/logo.svg new file mode 100644 index 00000000..83720489 --- /dev/null +++ b/src/assets/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/lottie/duck_bill.tgs b/src/assets/lottie/duck_bill.tgs new file mode 100644 index 0000000000000000000000000000000000000000..f657311bc875a74f45c76ea8099e31a4c9c6f81a GIT binary patch literal 45317 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 literal 0 HcmV?d00001 diff --git a/src/assets/lottie/duck_guard.tgs b/src/assets/lottie/duck_guard.tgs new file mode 100644 index 0000000000000000000000000000000000000000..1e6c844892ff53d9ea0712bcac85919ed494d43f GIT binary patch literal 39162 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 literal 0 HcmV?d00001 diff --git a/src/assets/lottie/duck_hello.tgs b/src/assets/lottie/duck_hello.tgs new file mode 100644 index 0000000000000000000000000000000000000000..2a7a149f26aacdf13fb74bffeb2ecacdaf35d0f2 GIT binary patch literal 32614 zcmV(~K+nG)iwFP!000021MI!su5`(99r!9#U+*epsoFa;GBYxM zR;>8DufG4Q@4ou63}5~2S3mwLt<&0nHGK7#-+uMu?1ry?`P;94tpEB(|0Pxb<3D`$ z<0O9g>KFarzxlO(>3{w=fBxtH?%)6WKl`&k({KLlXFuate)`>aKmT4I{FASTuYUE@ z|M>H7@!x;9`SUM-^E1Bm`~UdWk7Iw%r+@wQ#~*(G!+-wazy2udlYaZtZ-4%q@AXsq z@$bInr~g_X@^@c-i+}voe!++S62JJr^grFYhM+IhhyFyq{+$kd`xnWj|7GRYE_?i0 zpI(YSU4NN$>H*)`d0cKXK5p%5J^D!3pVq{l*4Dm;{fAvRHgV(F#6^2ttZSdsEzcVV zCQ|KD-mQHqd=!2iz5ROSW$lAb5TF0;F#+?Pe6U-$)+R6IJNsW;^}Di_6jUC5D6-C8 z2B%~D{u{n@Ep5;#Cm-y$zr=549rU+xEvXG|XVTmE%dvNdu)7ix_0Lg;T-UKq-p!Yc z?-<|g*HsD!QOK zpZSJ=|Lzw*{q4_93ED}8fHdV*467Slyxcf#0bUdip4l2J-MnfhM!cw4kGxuM!9T= zM+LYJA@3ffogwNG30V)RZm@h}h(7BU%Q#RqL5RNS&I^Nx$~IgwLOCZu-LW&HleOqp zT{YdRr-m2OS~Y{{l2U#_cW<#uGUgzuE ztQfQ>t)Bn&r{DkLN1`h47e5>SI&>BJ-S=PdJ3A_N;Q!lP_?y3o!>0QWJHJc%n_uYz zREPiS|Kz{^_h0jGeDhy?|Lr$_{qrO5{>xv@y<3k))EDXhir_X~d!HNr7ox7y(NUT8 zHhuU1^vhrU>d2eF$Hnm5-8V-yOZBE!(`a2J%-lSVSJqeG?G4yD{SN=~?ap7^k%4~q z*9RZ_?xzR8;tc+`Z-4rm@BZ?eZ-4#O@4oK8`nTVH^Ebcctol?BC-+{ro^JWtJXB(6 zCw6ewOFrd6&q=OoLjEMebjXAL%g4Cvtta|wH8%8+`IBc_4Y?Zf5Y&1Rj8JuWibH7Y zyLI-NJ5Q%Zofy|4ozgjeodicC)&!NKJ2vXhZ7P_!+?9uesU}@sm*h{~ctI`5JgA+9 zn{mL;MQ_UB*DE zZ50q*!G2SF-RY-wm;1Cm71)#o?+7v3I|c6$nDxk z36|K}3B;p=biUihl%_XLmGok1w!}^~n#!(nL8}_l`ej=iXiYVkSL%5sPGx>YRn9qb z0mMTdYSw#f1jMq$+jEl29O_XLK9O~*Q9q&k&xWPL5ZzgR?UJpD?!=aM7FGW%3|`m9 zhl4e(y5PEEx#+C;X??El3DLza0Rz_?HL1KBR9~{49CV2Kg;?Xb$&y|Z_^i`yuIg21 znLP(nbVm-5oY;Em!dHEI)CDeWVNYIVRy?MnGvVk|+PDXG*T&{;MG-k$Wn6KI<5wAF z`-N?1$q;^6M|*3ePUV1rH8^!(diY(T_OCO!3f#;Yz3C#8STw+>O2 z1U8T=i=gYR3*@Aqidb~`MRgO`5SOB!gQOm4liL>c*5HS%;hX976Hg0Kb`d#TV$1GM&r%^`biO=hNC2T_jy8XRQP8GMEFQ1_5^kWqk zLLY?ZajTN;Jcg{lfR;>&5eLDZ!MTytrx63AGmLZVFVqW{I3O0z6*;}0sw13Q#G?91 z%{shMm4+%R)uqWy-^%@$19Yh=GLP7$4#d~~KEa$+8>_0uZ**<-&=*x=wxZa1dOanC zMC*dq^SfN5VV#4iflLLt)IA!H-J=IOckz3)>J&vEn6P)+!v4nVB7Me-^wxOf>lS^E zTlA<)yRZ($#>*6QtL=Gos7}JG1FN^Y`0yq=H0y?|`arK5Q)_2#tG5dh~UF<-kyRL-KdI*tmLs`a-jG{F6s1!d#T% zYr~l!fQU?he2AaL?00Y@eh)YD&!7JE!+-hok2|Q5yayWj<|5FD{r6EY1^?Ub z0pFb|cN~>*#lyxVyL-sv>fYlfzI@Nye|w=c^hoW!5gD*uXh}D2aHFK;_s7r6>;gcJ z-xCGyf*^7N^P)CdI6JsBj!rcv6#0##bFwE|m`p*oI2wt2Qkdds`ia9$uh)V44QXD$YRTG@|_X+b?4aQO6d zr&4#gUMt*7^|R~f=y`gIdbs?8T5wU(-Khl^lHGAF_-J9gwBVJVQ&ER81;%e*>D`O9 zAOLl)>h0}_fmnsCMsFEBVnr4V31t9=z)}GSU?2u!ad*ALEAH^Xv!nI|0v@HuGY|#y z76r3tR3)Uq<76_tv939(J%H%eHsPCq+HUK>7epK?{h6kUSlphGG(^rCABxawfYFi| z+d&WrF~xqqRv1$l#vvhc6!n2>@h9d$)P8qNFgss*2((FL?60Nmp^YjH8Y`X|4`M13 zW37!~#H@EPLT?!zRuAi6k)dm1LIe-TEER!K*T=@$Kn#fU0G zHOT+OTrJRuU5>951CQtd{Qld&dDOilMLnwl*%BL25M-JLwbd+w7#VkqYX+DLqr0jo zlSPwvH-kVELb8!THmJD3=$N?N!-2(PW~hdk-wZ&8riR^6XrW@?g~C@bzEw;Z2#dBJ zGEOC9?Q5Oc3c7W4NkR{2s(Fm?CPJq8Dd=buL8!s^=$xcFR9)yW*#|n5OfXF@eLEpD zwIbjs*$`935MfL6$mr`5gZVX3q?Hkb2q*Tyt(QA<3II>X9_n00-4I!z6QtJ1Duswej7*)xbW|zmaiCJ5cw*`@ z#?@UHPzt);nOa$gF>vjW8pP61wu0(ORJ`aQxI|55<0prCA(fy{Nh+_b`z%<9w;>1* z7cAYh7iN-Nc^ChqI@vcYi7l8eEKq1M z7~ICKbUCL+W#=p@JhK&m_U8RC=7CZCqKDWr+Pcn&kt4z`rArvmmx_GA>^^7$?Uu~} z#>cP=Bv>#V$#EoM`mxn332^gTCYzw>Z;@BlgUO7{nkfN&E;nkk2!ATNQG;oj#Cj+! zbKj_#PDmSttNM^T+uH=N{K)vL=u)2{66u&$qxeH4bY4O^vHG`~(z?vRN8(cS{=xTw zFnhG3!hDhop?Tg1S6m0WNp#2R$9zwE&D;lqWUj7gAgmIlhfD;fdiixwX?;Lva$5RP z0j{HGS>fXJH1FXinDJNMRKFveodgO)m(9vla=nozM%>KpUG}$U;Brk&u?bKzNVz%uSc8uVMT1r7v9*Y6?_K;zm2mOQ3JNY1 zWWf1jO<7eL3M31COx=QQL8lV6k0B0KPi;vbFdO%NP9^*Z*sGpKuPOzx{CvlU;abFD z$+8zJf#Oh2q+f{9Ziy(&P^UNvT&tM@tqVArVMDq~D!7h#q_XNnVAyo!nmpc5A_4&# zD6;|^rj5%~72?fwaeA*4FtQ(gf?8`HHi=K&F>;oLk7?p@qC!_6SaCh%@!}Vn3U$=k zgclUl_buWD>`f8nfxPPy z-xe}%52lImMF(xgIN~Z4^l>#R$WTix7hWQ-OA+V06c%?qxj60Yk5KUPOFq6)0SKWB64w(UmW7`!)nb@rbd-D3-I%lLTszKD3 z6ChRr*rP?En>*0LusF*q>O-&%Pz@{o`g`{%ti%)SQe91m6$gS$oJ*}P2`j0Yz&pv2 zhWk@rWbvskG6Z6hZvJY)Q8;!m--#)urB>2eZrH969>X0 z3YBOcX4`luL2HEch}o5?=2O+-XbyX9Kl2p= z$SQF61uIR5v!I79geC5Bvs#RMlx&+QIy!2pp9#0+u5z&*&x|f~rx~ zLTYqW!)pfhaMdNGifV`z5A;yOLU-5x^x&bvQ`6r>^H=DN=p0%(m>tII$D~(b96_fX z%MLyuVROdR9Z{VU{4^}5*(3n+dit)C^Ahogg?A@*4^({Nie+;{Q|YMP)4Ox#&RSSm z=q(Pb%5oIJEHe0~0yKFrBh=g9Lkf?%vmi6e-?`|4)>PBR;F-?BbreTWQui5x>5E-p zS?zhC`8`58PtF;Tp34&hOj~z_+R!~FR`q5Lx1!LngP#kh;h^=SS5obgBa;G#tH+g!hO77wl~{~*T8H{tjq9L zF;9H|cD6~)cB76lTNSY@_-D>pbZ8BXy($?45{$L?rV7=dvc#NTEeK|-%;Ff=qlq1W z##+QbJF~Ffw7=@+a{0pYOG1slx2}1zu6iLLzUIM=BHg70^#H25mb&W>rwi7vgzC0x z!Dr-2J+{|&x`F#t+URQQcM$R7gnT#qvjw4R+^#O_R_Gq-Mq%7u7n3#g9vdn5TsE?q z_+&{-xNPsWkv&|6!dObYU?0zUZU-xcBs(rQE3behrJkMMT6IgnL;I>`#$YWBey}wI zf^giL&TX&pfO;NG0HIex2J{IIDh5>^7K2UeprdK~Cd$L&r&2P#xQH4<_iiE68tSx= zLQQVEnlZA1LEYgV)RnyCP3^2^#GwT9xi9K`qJW_jW%{TVPjut|ovCFAM`{_uJJd2f zsQh5OUmse_a8Sv>!CqC%pbpL()iUf$0-EL|Atqzg@v&S>~zz|ExzKdk8DTHiiP6b^B^hfXwk81>9+5I5%^kD6Z zRV5VLn#?-oUS9x>P#n%q&N8nNLc|2TX$0L7R0(#{@G-I^wT)8nx;)69)E&$_z|z}~ zVI%dKSy2MiLozs~=O|SNz(>c)&tb%rL9szA^xSyq04(SN4n3)h*Nj9fl(+>c=&3Z= zJ1*A2Xu{edX%opG#*rh4- zGSUbKsnF+pA;MpX@E0Qdv54?nmHab~*sG!zc)RCOyi zxgv>n<}D7+^H3bzcDzOP2K+vk9>&BRnr@M(c2H@Fji%IiQv0KU#vR=vLh>z&l$@^h zh{Zf&{nxL5MMT`^fNgZM*r+?s(xX6sRrY~(eh*l8-%0%ofVh^j!{@w`4RCL7c83==D0SuhaStr!{=M(^@Q@p+0G2@Tah!MPUZ;VTV;8 z>eVcSiNs_?)t9s|w7Rafz0T_EtiHop^-p$I*TG?%2D)|LSsxl?OxU~#bv@=*Rm*iT zF73v2J_>i>JsRE9P9;w zV$&Oe8Tuapv%~9SK@&g?aVWlbK?=kjzyz>1Dg`xR3E+2cO;HeMNl-%WGCHl((n8CX zN-tJA|D#8~6*Flq+$S%4_U6(3$>W1hNGvcHor)gs8Hwowkwk_&Q+t0m@QsPfy#ZXs z8#8NsEWIZV_2hM^O+O)z%GZ4q9eM_W_)?DdDMxwLQ{P`teRIa|RZ#uJ1=Sy}y7<~v zol64(Bc|6PFea`%Lw#`sA17H@U2U%t<5!9Cf+faruf+KO{o(hY{^ip@e)^{qCB}Q= zi|qOrP}>^ji#@ILW3+~jZ(hwA!j6`nYjlnFe1wkqw4}qa^yU(O4-PhtJ1in)Ke*$y<@CE}k2!z;|N5Rhf-9?QxXfVL^a6ZeVEXxCV{J2IE$agROYe;`S%3Y}XB}#+`$N^svLR~hdy{K8 zqylrJiaczjb#9{uF7^tE-8LO*iB(6M-GNZiP}J;IZHCyZ9u=!h*Rg88U9XrfB0q|kj5hfvnqrLf$^jteglFX@a^=*Z~w=0=-$ zxOJ`v>_i3t3FC6td1apppnXnD&RaWa)Z&hOT6$d}Bp8;x!_nuRnz4kF14OZK)&Vu^ zgn>E`z#&kTu;{%F0|#{yX`S53)dfAK4C+c7k_~klWe9Eg`x+5nT-b1?{b><;2ZWVb zacpewG6NcU>08>5+@sOO(+3z`!1Vz47WILJWq?HI1#jnQg|JPp+miw`f>U5J3I4{O zP@6um(B_J3c>#6yaj)ZJaAdeXx*+lq>)G#d>C>J||F56^^y!a3{HGuO+mAl|t9ti; zQ1AXb(J7cMrO{yS#XH9J1cdc_QvT!A@Ts2Aq^}($g)mzjVKw z=Z!-O3%sfE-6M%^o=a`h5?#=1Q;^?(De zG~_N{1a(&`cTWd_h3g~P7yvrv2JTh2qqsc+?qV5E$FEJA8Cbr|w=oDE$;5(|cAYb* zk>MZ#D0&ar=&T_d5%xuPyPTep?q^Wvl-@D@+=KvUz>#)QIvU8OJm}3(YFYp$_Qumu zGd>6m<&&7V`}8*|gEKn_r*L+&f#(R!K|R%eX0th&cqop@j)Ew_i^t~*9juqS7*B0&@toBFFSB$&jFYm5;RkhN z;`J{_j2??6AfFfu30Gz;j3z|qGY6px0kl~W^$fIy;6xh6GC3AJw6(RWu_OW@1kEBo zOKA5iWrg!6lvQ=%CRrh6Gw}Oy#)DBcgSv)9e$#73MO zRFj&?BLTwIqT+r)F1pbtx>i)W?5L{2EgKiOmn0HKkF?;Nq}c3KYaTCKK)^mlx%xB$px}-U`PwMB;n?AaI+6Po-{krzz4={ z4hN^%gX~kTNSGZpQSe_of@mJ44?_#6RM=*5bPG-rR)f1CMYeaxA9)dUMq;*`vB!J43UoK|5{P^y3*J0V=>cVSkI>ipK zPF6GN`O_&ie$^n@Xr;=ImI=$>GG z&Vl?dY_1T~Rr&J8_2%bwOIK9iRLa>p6u;8m*Id)Y!!eiOGJ~6_-hjj3d8WkU$JEM9 zT9TPH``*gF$WVc`ZV?1RH{bkQqirIaDmt)rQh1gSr`~-=4NP#&8^J4{-Mt6ZNyy2Oe=)P=Im)u!!8_Y``oAk}^N zv2&e&v)h7_Js0hJEBhkZvb;SuF-ef7^xT1k%2wsZWtK>i@?D%(v}dVmBnp~)rd zXCIOds$bUhXEuI5wgdc05fJ3$>YNDtNfFe25g3V&8k@ZfpA?U_cXd4Fo~ahAh-AO1 zus%t_bDfpvzv$V|V>?PF$6aAG%dzR#h^7O>T|^_KbkN*;WnUb>x3Vu{_B~ZqB7LR) z&9S>o5Ez^#jgQZW2^hD|$lC8K*Wb^q ze`1%YvXKC%Y~S>p&1&<_4jJX7)G{->5IFQgrhhx{742&}wucObmf25_52Ut|UjN$4zK7}aO2hYfZ6z}~|8`_l^yWgBGM4PBe*_*yTXK+f zA*E=-X{a6u?9cZo0nA?k$i-6twM&46hrLrhhvB#?hZ4wP7{9l&FXH0wQnd@fzSqw` zdKLQnl^hD}=;PJD)ltp~VWTYp8=w~-wE^S;xbzRF9SZvh zjq?@*78hfZ#)hD=u%k!OFdoz!U0F8dyQG^Pq*2T4q-|Y|3R}Z?wD?=hh5USHf2jwF znKY9?o|S-?VKb9`5!7M)-kb=+z6^kFqs`1Is!EFJkzA}9a#HzJIM`t%Ma{ehV_VdR z{F3G$XXl@i^)T<+NGh!(vp&?{1-TkJRUXbiO|;m`zKHo#W8#ZESk8q>;4p#)m~E%6 z;2;s&Ag1Smx*YNtQNc-}5joT2@{y^cvA0=woEx%Ca; zGd#tXXZAmMXZqJx_C46j&DNg;+~XHVAEF71IJ$MIvqdlTY?Fues`p$?+bA+5hTxmf)1u%D{LO?y|}V3V)ctLP*$^~`Zxc!qx7L7&<57` zikX1)sI7jb+bv|hP{(OvP$e7+04)>7udVER6hP}@ zwe4TR#OTA7w;}x2Edq{k7snV911ipXJE$|+*d5omxU3WXjsnOINd46A5Wt;o^czmz z>q?t*9eUI>dh{$2b6>BS{!w504Lz7R5|h<71`;Z`W@_!L*%*$s2A?{Q6xa*9)CX0^ zF^wx?3}gT}sbZBei;Eoca$Yv5>GA;T{SaRbkT3VLSL|SJm=2e^=gTS^Fym+Ip_`J` zC;5II$3~UW4(ty!k;R`%H&g)DhEd|WF~Q!)LB{H}k(SRRWkOJcHNHWbKuyv#q8&t) zGRjwau*;F>R?zAzFW`KGE<0P2H0C7*!WzS5Wyel-02hhD{>oIwS%ILng&GWm4%a1m zY3Lh0m1pjB540kZwO#iHaZ)HeVUO;m94Iix&et>Z@vo!!Ubtt^;3Gu?7gLkdN+=UY;fzFLf0$UPvL%+c|sb@{llIn09cAm3{*#Z4zPrDzq7iv`9~5Y?ChJG;4KiYTc~c zv-f@%P^{PY*qwxov%!KF0_t|pmLYy*N)Yh*%GxcJ5+r>=YrP7fBU5-q2P=%ih)XZE zXg!M?X~g(6qf3O=cxQTuEEGWDfElYu_h;^sGBF86T^e&Hj1s)idseBGzDbqZmWy{LvgV93QcVI}nw2n+;k6*m5B z0JlB5Elh;v6Jx(}JnX#MMycQ_9@<03R&AMwr@6d@;mZxu(2d@u(GiKw+D-H> zILVs|NYeEy@lK)1oIr2}JCAW91urDRGnfb^#Kvr;Op&Hw{zW{SmZNURXz+tE^n>hr zgGgc-fxZX^p{8Kw5}xbybKcNE$%bvFg*sosTjY=PVu*z!G$n6;$(tF z;5_degWn*3O2@EHy1!)T6xcW+bdJWBh3qKNqHUu0BWUGQoZ{t!6a03h3e+u+x}4U# zR-ySNuCbJsv1~ukEN?bfQH|iuH}=NpQF-N-Zj|Wsh7Atn8%uv>Mi`q}8v>gE(76cILecJ8I#uN{L)h=(dg|hQU=&NjNFJ)gr)4y%D?xyq~_8`EsWyhiUQ z)2zf9w4UF=h06R6%}mg`vhi7)EM;aFSA;37#T$x+*;1qjOrgBlM{e6=w}gWT-6A z3$20uX(?l|7>)hd2`>Sz%q!V<>>wy=gIampd1j^o#*PmFm+C~?= z7ErV*YToG-<=F+vmrlP@z`GGQDhMf*L$MqNuydtp1qGZ%!giu6yrH`Qq68dSS57^=Goe@CnPi9er;7-~{uFIC`L=rNz}^DKe$#)kEL{Rh#VsP>PuGmMo*mjM%Br>(yRA9D zG-E=tcJL_745wr%rp!rl*!|@;A`5(u3zH^TAqWNI!)aLxz?859yYfb0CbDZ`4UegT zoXv0Q$byY9w=*Y(rMzfP&`(T_fFRY9t|)vgR+gZz>x>l-IH8|csbkDg5*2hC&wWFc zXXGO&`YEGIOVjdWP?f_cLrHN8GwtLGixN`@R|Fv!h>r_iR>kVmm`~YlW9vMlkB6fK z*aq$0dI}u$cZ`g+1*r&Bpa`2I6qw3R{dvR{1=+>Jk>WI=C}<2&Hm5@cdNwW3L=Y@# z72hpX-u4@9049RfSY5I+QgjoKtSjtzNoOtf z>NWTA(hBqQx|`8$K*y2+Ref^*u|6gHezKBxFTEl&upo0JWUp9emu4!m@xAeDD}HY^ ze$l?S+I+DSrTM}nn)S6n&X+I_BhH9y;e=|AWPMArSkfxB#VSbNbnYlnX4Q<%oj~MT zEZ`cNx4N&&si($Jb#i%;0+N8lt(Bb_K8Ho8F?EEqx4s%8ht+HNo}=4j(6s&V8oE z0KVtQtu;G$Z*z~6t)5vYR)d{#5H7PZJU`zuYZs%nj|ur$?d2m2M!uA}A1hVuHKl#- zEEb7=q(KnF_qVxHRk9JZ4i|P-EE2u()#Hnsg5kdDEz(`7;#jZ>mbMZ56$(y7{5;Ah~ z`8-L0g1df&$cQDAJ2tdOg&f3l9WK2vWaSr+@j}1R|D~=p1bM1R8`y#oY>_imqN>_H^xFr(rAUuVY8&5VS zmvcmY+L1)tD|QEIB`@Y8zVYM@$YVwlh*}Y`O>Hzi=s|ko9f(RHR>k{;SO#(>IDMoz zVZ5h~O)o)wjVgjRQ)WhPg%(Dx7Awo51(DZXr{*?gp%1VO9erVIMqE1P3ZXutms0MH zl$+5?guEcZz-Kt|%ee(|W#Nj8BS#Ob@k%f7hIMC`>CEgIQQlDW^b#HGuA6eUyEN=z zkgTVT*l8BD-vJ!k&KXOUt?dvl9J_yNT$ozmi<$mBvp_|}8zzj+-pGm!NRUYdZ9D^q zvv06`IxB!1eNG1U?0c)t7e}a_V4lCiWo4`3{K~?t0@bb_AG)td z%DpOaqz)imT$m}VM|BdCSmW%C>E9T+u|nOiSL z<7OL46(cHkF!JO#i6s{FZh*;`@oVI4>~tcrbbzZyg(3OP$clM$3 zACFcbBJz=j5=m(I+>Kh?lko~LT}_aQ?*aB$So`XdUlC?EFo9e zxo$Ke7m|irnTX?|xH(VpFu*aAW;tFU3wYhA1L@r~7T^=8&iYMsVkt+w4vgT;*dkhZ zvuGft&P(PKIRj=&L9I%Z)zhpK&y2v2UM3oduLA0^{8Sv?lJ7!=hJF|lhSd2SunGay zxLN&^v3g!r4;#llj{EL_PoT42HPnuDM%%`4kkNMmEn7?~X0#$XMX4Op$x}B|DjVh| zmPOaxiJe%r7j*CVFeRRVcEzWAS77k4#SNnXV7GA~4Z(=KR{w8c!|S*hr+@&o3s-S0 z-*cIfTjPgC*A{pq+%cU~z;_0;!=hnyyH`7+2Qac_a?CETYs2u@7^W&DTS-<*or%K} zvln_Rlt|wI$h1y)fObLxl7SY>f}{dg@>JK!*RkU%$sKQGKEPO!exZkj-$d@^98v`teeK(#8X^cN!)aPXjc z;e^yFlM-PjLLJjk6K!-HwbQ8*q9UcuX;@EQ^{!!K*A}6U=v3+VO`L9)QpN6@QOBy( z(T2LKCLfGLz?`nSM)UB~Ws`Rh3IrpX!0G9B9viNL=&w>5POKO|_C^Ij01Nx<9=mVC zSOF^Rv?$WkKvD>quam@)43EGMAbNiEX*H(?TB{IsE@m>PVJm^p_<7i z*Xbjk)URZ zfOXWYkzQe+N7~hq%z}_QP)NBRgd}g$2qCums4d&jqs`fmHO-qX)xxF%V4ZLF`oJ5d z6ZLzNrP{IImctg7AviA^YATeT=VX!cp3=)9PVZCKYuXZZYP3vCZ|mVb8#4;|JeM*) z3*xs7SXfNA8gWynJNK+AMy>y(_8itYIjgKBATTP>K&WaV{mlCF?8iHuBoKaCa6hVB{L3oz2%rse0j{bgiK@~l4u+|{NDo-uGQ zO-W?|i7Qr=9W2Tljd?bgv9B)tjmAdwi?InLGhL%t7#2N5G0~CVKrE)eL-i2?N!xl0 zN5DJ525rzV@DXt9rfHphA^Zy~+D3jMAqAHksp$~=L;>G}FfsdPUp5of)4}78N}Zg3 ze%G1wF>43Y-htNmtswj)0AwjkX@b2FBa4fm3WsZBgF(LtNbiC?wkd4 zMuD114}O`t(6T9J*~I>uPyhJoUq1cm)4%-i_donUY!CU{ zpMLxE-yl7r&oN1x`SZ;&8|Wv_xMXkw`+rYPC-aA8^H==$uBBiiz5j8+9`}%kRhd3) zqBS|#!yNz)u@c(vwma>FrFcYl?O2JD5-osOn21*w&&rLx; z$aA=4KkSyp1;ZK_H7G-8FJ$7pby^f)XNZvMNKdX@92*7#j!t5{oq|~qxQOBNL6cC7 zc8B~%cyw^mI|CrB)t|&_dEW_k_UbAlcVr#AQLq(sK*UQJM#J@qwtKBdv3+3^=*(mj z=nya*Mn>?nXDlI+;^=~^%!{`Afk-=yZ0s)8I|+_`5qsDmHN#?5@<#dA^K`C~DQr@9 zswO`wrM-nUNb?nXIRuRy$g~=;0Sq_5w4^gq1(zb*SBD;&5-ejO05x@%(9R)FTTW%} zX;Wn`EMqvZnwwFIX3~7qWWQUevq%bO{c}Mz6%S?VjBpa2TnrOl z;60hL^`XaS(uOn_ApE|3pgqr>-WXHc4lfzsFVK)?GQ%J~+O-~ZqWcVt_RWD*Vg1Ar52;)M-MO5Wb_lh;} zioI_XA?=K&S;fvo`v%9RgCMssI3$wp1ZkELYNLx+h{|MTOQ=XUO71Zo*Nm*GmkY2R zcx-V&YL=Icx_9{>F_CJrxM1nY=H|uXjP-B_I`ZVJk<;M^s-4&=c0yJKau$zdd`jEo zbsn#5ybkoUHP&mlUt*>hLat_M5)PJn9EwN?p!SWX(L6BUI)}a(TnvFihEHKG=^b3h zEaL0(e_j3;T>jADxczyOPF?LkiTIn|Iqg##i(=tHNe2Ko3A&@ZP-%Z=+crOxi=P;NzIgnD`79+qVnfdy$~I zj1q2ncV-t+PxcyjYFn_6EaX`9`kl8Nr8;K(ysot8OBRj5-B=BpDTRc3#1mwZ$jdTj zpa#D6p@@kv#Q<|dmgDfNqedp&xuLCR znk{a(ncXVJHK8mH=oQ1LJJ!7kG1c6q2z7_v6J#&opAfQ-(u-qP8Sx=B<1Fw-;iD!{ z58Cq!d3VI=P27f3*$82=+lBr4B3go3Loz}w34I7-1yquC##9@W_ZFV8N+{n(?ExB) zdP|S6%@!aACK2?SPPoAKDKLQrRizMFG)#$z-NP9m8pZ~^`PAUkFXnDKWDbUgV!~zb zGZu1@_qNwpS)zbMx}9P)R=C@$4&zQ^?o|LtUTgzZi*b}_LUDAeQ)a?5ka~MxDuUka z6ietmTM+$0?KRRohSKI1(-*@F#I@Ge4e23=UZ`!^D->~_ng+iqZbcT#U^2ye&?m<} zVXNBMVt#vkfPabHLowK10azPbg@Fjw*$JIMAeH^71!&mOW-xkUk+?^37Xzq^e~-;= zxcT%2iD4BiKvO|C6x!8CT-&n(vG!}BSgOvkgEnJah5}Ehl^<5Le<$Kdh`XQ=HjL>h zFlhmT*SdNEQYfZD)sFM+FyuwRy6(ZwMi$WzB-l}8jX-vW2Wtoeg*|l=7qk*iNhEJ1 zB3&fsBog-}lIJCIs9`A)=@MyOB636^;U>FePD`+x3ai6U=m=kknuE?WG}yk5h-m(! zh74NS@6EKX3u3^an(nAQ-^&xq82^L{0yGSwWc|-c74exw>SoO)G;ZKQ0nzZ21Ka(j z_Rs~$ExL3bZyN*u; z#LiT$=CQSwk-4F4%=fB5KLnJ9TAm|XRd<=fM_o4B9yN@K?ugk4te`uhDR8yW8Y~i6 z3D)Nq2HpT|nbI<~wD8#zydE*rP%Mo0=a!t5qCe1J`_($sIZ zvA;;5jTt+_gv^c&22Nw*MjTg%EyyN90#|Ao)W%6{#uk{q>&`)^)&c$w7eCscB}47t z2+|exk11U^FkX@Q@@#`G+$`B54cJWFTkOL;xn^*;I$K=?WGA}`&?KN|B5$gGw~@OK z&Undtw;!V`YFB_L-fZ(ODBY9;%yw^^S4~$5VA@lQ&Mq&IjauoVk>v;(WVxA&dk8zk zj4^AiauWLku(B3~u_40xv|g|g%V;~Q*BN{E16)<~O_{hr9@&2I3<7dK!pjAKYxYHp zW9nFtaJ0A_dsqXC-%Ccjq&$0Lw~;7?o(75vTI{{qcmyksIAFqUQbmqUB{|(Lta%If zKs9wzsOo4?Z`!iM)G{zWEDwOs5ow;(8DPN7&KFWNGGUpmty1dH_6+vo0eEiOvs6y? zta8e1ZK*QK{kUSC2jd6?83DwSML)o@H z#IsC>V+vx$!Z=xQw(~V$Ks>wBE;=xjeq!uPk%(#_^V~J z#4sUTx-U~~Pg+@YW$#G>x7MBnfZ6`A;DGMtcU>KE^qYZA)4n)cO|{RNyl%fui`y$m zYi-7+&C$|^y7^Sw<|#BSP?dHZ%O=+-IT$O09HcqXAaq|J%Xqh!+>8A>^_hp^#TUoD z7msg{?Ms_JoCSd#$$?w~l2fXlVjZ6~m)TU8TJ5?)vXI(j{x}szo45adQ|R0U;c(DB zkR8&OQ*HUwyhR6I)c8}Qf?Wl@rePh`MWJT|E3xnOiQyIQm66;|w>7(3;bx4FiG~VG zKxYQ%K@te?R5{ZJ6l^TO?Ij}>X}WL0DbOB~O$=l*e5=Ks9+jnE_v{(EW4FF;M_%&< zCAYBlGXr4(Wv2_?`T>E}09J4ietwC$!8;UT%vRm&C(fO$37j_C)9EITZ4DypW|uMy zUcnx&>nv?ieJGV!;q15i1`H@DT5>TTM2aB~@bh(KCk`&igzn0QT%s4n+zm3|YzAsc zL@2+RW`mvpfl}F(qav<@jAY1lQ3bi+qMy){OTG1_F0WFTKIux-fywRonWP5Z5=sG1 z6XND&Bq3|C4~t-~wI+fdJ!zmlP@tbY5zU7~>1*!$|Fj zMgT{*1*%JgyP`8_)orkuk0}f(C1gG08DRu54oE-^(+Djoy+OJ+*g|#W22^2`mY2N@ zajl_{rFG^Iw2TT|m}0rzIeCC^kK(8X`9Pfv!9j>L_CR1!--vL^c19qvT1USicK0GJ z&E97iLp6R#wHfttE`aVWc;kK^I^*co{uxZ~GX?{+O74A?P;KdzqP`|Y4U!|)#>d{n zh`AZGdDzrbM(gBbq*|bviljgH6Z4^=+=OQcjsn9su$hHZU1=t z1n_H?&I0rz4&<&*4@pQLnhIcE&Wu?mm)=Sz6t~b8wcXhS-mPI03=BnbBBQ1 z@infM`?Ju8*2BIA^43y@Y)zea4s_Ah6*hGqy6jOQ>n7320~KU^);{%)-3iw;*^xUp zY;D18&km}$OCM#DF=0#`1 zH0T6usD2qhuX>ii7!N`Q)kO5|sCZH)#TDU)ZUm07txhOogRBZZiUCk&Ul(Z}k%9Uj z0CTo}N}vFzVbuAff@Pi%VdxE)qBqP)N4kHrX~+TalxOIa-dgkQMb%Olv)WhLllXyg zT2+Q%hX~=Qd{DJOKp{f&X)I$QgE-8c++z)@3K4_IOPLRt6v*wpr3Q#G1Hc@Zy=DkW zaDG}e$V9|~y0)&*2H1J9AdU=Qq)h2fjj>LB$8CoqzHQ&Gc~SmFy9A z{OhMbefr}M|LKSS_M=b#`or%({ekpdf83#`Jz(#6I6rN9EI)01BtNa+=cf%v_-Ri| z15I+SL8?`5%?lxK+o7{hT;1pWoqgP7Y!?IH=AU!|LU%C3dN`&juo+ipsAs86CVXt< z0zPNo0&$VrfWo$vcK9_A=^@YMl-h$0F~La{FXZ-^lF;Qn5;|eJB{$NEZ(nV18DG+0 z?bx6Ook%aG`8{HqMf3}ZgX(tR0H>tJc)@CX!${wnwJWL(N7R>zv4D0Cd7; z^BLPF!Vby&Z2b;_w*G(|fB}9z2t`$z&)dG=0lsRsW{+%?5e$K_oU(iL#K4$?+^$|f zObOjSu{*TnC6hwynM991)pBl93|j$p<#M`fQnxGE{Yim9Jz8s)Z9omtp-g4xT|2i0 zJ;N(ah#=M<;lJlEN2iBI#=TV6A;}92c&$?R^ao%<3cb%wsNtRh zlXTp0hNL_&%X~>oyPGWCx0#A(?*`E4UElia620xM*|R$LDV*J8q-rdnnz>|?Ip(+# zHaB)BBwrf2E!!pCy~gnsXJi6$c6g!K@H)*h)3kw6lS$c7?Z`>bYc(U+JJ4SlJ9z~F z{1YfPKYA;#f_SYTiep397dq==1?&?$`+*YNlJlo5HgaVENy2U@lR}JcoCY+%1oGvG z#nW3}tNRndJKqk>3nZKbtJrFX=z#qydV-FLV-U3Qje3NcPeiJMsm+oMJC(uIjsVXR zs{Kk?S*JYe0vB$Q74SMt06`CAgFKKkD9q)QqaqeFLz2_43n z{0TnYCMNC$(kjvkx>ih}s#D`0*K2(6r37+<49H?Bb5bhgyl|c0@syB?Wn+y?&!Mvh(ccKYd*ub2srZWTyCRodc<8F00YDRJGjnfXNo2c|(&3!AZi#5vn>!%W z=4Lf|@AGpv3^M>{H6P5qpw}+*$ECM&awxxmD?@A)>dEj(={-Utn*28IN>6D)rK#E} z!cvS6o__?RW`I!ulDsdB`N8ioKm6awH~#SVKm5ZRb_;M1p@2Z@DBY5xJLnWJ$8cZ| ze;}d1cafC+LelJMHzeSM*i;Wac(<9T!QIN^KeAVV%^MBdyegteGRU5M;x(7?{EX5& zIju16jMfr~z8a_;rSxt-nQjniJqahVyDnQ-M#n-rAn?O2 z0mMr@>Umj+bwcQjwo_3c85t}<5{^ltB(@CiT@;UsgS^Zg*j{Qp6bPERl3x`u$7|$q z-O2bYH^=ePuFqw~Kj#>(r~VAopD+H4%al8)HIXz%CfD}4=SHP{GpTE|MlrpE+GL+Q z7U3}R+pKu8qR9q3zfDgvfhShUw71hyg5V8U#IG~vC7m2Sl0_3-iq`rTt;Qm0zpW7* z%A9mNBAP7qdjIaEuD?h$Co}-^^Kr0RopM|>r?kM1Y#73X^NTPB!<3Lt*-ED~O~OBS z*9hk(#s67voSA#zbKVUf&&wrYYhrJs`~lN-cX_$t0A%~eAAbMCfBxaWGBSOWpPQR( zv8&bZ`?{?hL6SN&|Gpghxr-!CBaqZ>8tSGX2k!G`Xix*;tm7LxB_PgANVkqHwEno* zE*@NrX9t(N4n?j<596()%f3Ial#54K>)Fw@u|Xco18*CfIKLsF?2`rmM80Vyw!w@# zy5nn~%0@*;KZ;WrFT51kdlX(9WOqvnnmi8$nYbybWHzsY%*>N00GXXs>t;FC;<>eB zZ%=7=3xmg1&_HL>(s=|HgF|Y3)rn}wMeogNcdrXb`t&Nv=<3pr#5_=TMGubm+GTL! z$vb`9JrT#|YHt}|vVAu>E#M*f+vYrW^Bzx-q`-Rng8D6)z8`NIU$pJ19oTSJQoDZY z%r}C z?3*no7X0)^^Lyu6Qo*1g_2k3u2_t28e^(y>S~bG=RP$mIWgE2sI-!7TK_3>29PLP{ zwrCwx!GUe=?NQx(R<)lCFQG9sQC>3ujfq9r9Q!b+Nn2UJ4er~-R9Oo7GKQxX>)90Q zTsWkRUB8jdsn3cHXN}@YW?zn&#$FN+*?=iO{RYhOnKxi@&%6Q03;208U=2^d0h>JY z25kA6H{iw=dfpu<;@)!$%DL^gvFF}k|KWABHpv1j_F~k%3VD)PQpql@5?+;2SKIw4 z;A^Di2&d}sGH5|F$(D!1?s2p(fx*6tU!>m{@I$uo_<+W>5#|Clv5jwzxI_uV@C zjMeWt{bgK-Q!N=hxC?PK;@FY_{WqnJohFts`W<_eB27EtMVz_u0=rrvcTM!1{*0bh zU>A;UIip|DW*IH1Sw?hXZ4(Jxzy?P29D2GntZgR^Th8czrrkGd@;}S&EAE+h->k*| zRJw20;(w;yH*4=d%kFFWnRnm3x&Kt#Z{FO0qy2ZIvA@XXJ8J7Muw2h>>(5!-3EL?S zXlDpe!K-ZbT8rB_@4&{Kh(aWCj+wnmz)C=EL1H zx_rRM&?YUSV8S;34v++mJX;x5K7bL9m4rDEWv)K=QEJ_>*_bVJvUB!%cO=6hg(()6aP5WH@- z#tx|MHEA;w+xdYjk_}da0k_F*z^TkHX#s_9XWj2C20nEbZh~>pQ_%O?P~wlWGuD6c zW65*@kIMiq>y2LR zV?{H%NURE&4m!^{m`YRD_sDIFdTZ`WScWOFciYBL1&(JXP!0T}0~)ATlASken1Y7t z6eMhtJ^ji>w0FS^V`|=M1uk~i3zq~Tj-G47`$P^*+ShcuSXGI zuVc%?K532v1_TjQ|1lb529PJ#u_Y_BL*oOrwg*W_h}Y#J2RGcJpe8P4JUF~W9jQ1# z31iKGmbyj3+F}g@Qg6%csr6PK4N~kkLS8+cfK?|heUDZYU>3^4YW(*v(hBNbuwh{H zESzI~U8EoOBAri2zb?`bdyyW=;a_!;iWOxSF!vYtn ze$W>-7zJg$y-zTw1PZYDHaF>P6!hhfzKuV+&^21a>l*!>uF-i|&FdQdu-E7jB+}~| z{jk^Qd^+cKkACQTbUp$0x=5e#BE1zH__{@(;}$)dV}0q+C(xmv30=o?6_1yU&Q?P& zbNqm0qj!~$$G!6LfBxb3pZ*CXX`lY^=}({j#5Z1EIDVAe?68V=7y~I5<6dZ zDo)Y57lo@=7u)vS>R9nvL3$iu*4I2KYHsXz2!bO&scBx>ugBjWv*}8XrzmGI!CqPH zX&s3JQ}|@os{8nIut-iO9a(4%n=wraKI>5#&Q^SqZ9MND=_7l2nEZ3xLObZ5%{Ce) z{~WheufHZTp*xxtQX1@^GY!Zd`O0yD@w`*$!H}Z~r%-->%w5p{Z$vi7#jk^<({vCeU9%Q~XF4D%M$0 zdo&QPsPmIUXBuz1f5py7y9WvIgpqKnIlp$xiR4Jk-{a?7N5Gs6jZ! zP#&i}u3L?l_V~QChkH`(F`V4H!^}Qb%blkKBuEHERQ_0`U%PsGD*Wbxt|y3WH1MU{ zHjlMl-6P;qowLM55{T;1jHyopojg@j<#JJn`J46B_%Yiw_{qRO%`pzv=iDl{ zvIC-j0yR+0UhP9&pwgtpP^3orvXxT%06OXNO*gjzVW2m}ol|!=5eIF!?UP@7=5HE$ z&?E*vi)B_FsGVSw$hxxG7g)j2kSghS8Jq_>KvZ1-wyxseM5R4K4uNv0CG}Z~m>>cH zunjF6Oc0FOBQ)d9UJ=I5AqJl#&vRi;8iGjh{ZtUq)wk1%_e!Hs5~hS2-A3?Gl)fKA zF)@UVr0h3s{0#^UQe|i#B7jm$;dW*E;r96Lx;RKEKE>>OK?tZ6=Upy2se1mhb#eV{ z>_g;)1rUw|E)?!IFYAB^DO?}R7W>F{xl+QIKMqhV`H9R!%)?P3s#Vggrw>L^Eyh&Y zxsfR|)MTGVx`rEhiYefSyg6Ed$P7M0T0Qg0a0G68cj5pA@=@e$n|FTZ>tZiW~P zY+^o*IyK*-nrJ?z7+;aFXVWM7sSTZDH`XSItKI@KxjBN2yW?sycXY89500@GhB}th zH5U&yMhmV-f^}P6x14w$t*OtoqrKZ^IX7fDCfzD2-8-X6lDnEZIo=EGk|o#orNX`t z6_!4>3bPYNI5M_-?5VC~8Eq666lTMke|H78J5*qR;Cp2&O~6pIaPZFMr%+$h0q?6a zM%xfNTS#-=ysR(1^@ZrI`0-phVgtr_Bsxza(o*gs48Gls+Zjv-V^~Qjhk8F3Zf8U^ zl)@wZw+p5JQXpT50tuf{klMqHM~0+lbkLHX0Y@*k&!4IPTV0a_T>8=S`iVoaMv$Ki#*}HP9Y4wg9=cPKo5Y_2F7}nz2 zZ1h1Gh0X}u_>{G!o(TcU#Q%&A5nVd({MaZvFu0P(qZ2G#oP1Yn0f~DQlDG8cpo=#V z2ui3_Ew^3`{8)J`fW3GVp+xHTbf-LSLSuZaQ}DV>z7#a^Mdg_1N-)!I3FZ&~@abPZ z{f|%otpEI{Pyd5?ngZ>q=y$iP%`EOA#PP0iTshmciyjBPJ_3sRSd zz`l{&+C*q~c3+ZBZQ_*|;Z|@74R?o7)4Hae-lHg}1Ix;^_bF%y8ei-VOESSl(Qll% z$D0!N+PQCC5&C-2h)%~w3&QYXe`}mNXqyd2j?w~07{RfFbZ@+k6Y9X4Zu9NvYNz`x2cu*o z?fwT25;#MW_&Ac8s7fQLkB)h+%h7aaz0u;mNts%Fv|;(G2zfGa&PmM^_(>j|{WdFs zEK2$pFI)B;HB}_=)WiaxNl#DzxjrDJJ+FKa{o?^UXoBh24Xl28geF5&kFJw*kwZ$S zQEh}J$&$)PU(~E`yDtZ#r0(%s<+D;fP)+@?iomh@gA{^3UZZ`MT)>wCdO>RzRzRnd zq_{c zUQW;_*Ulq}<&;j-sblvx+*D?B1*N^mntpa#O1^Bx6rM^kA;N2yapnOodVqx_v(1Qj zGlQ+D7RDKg`frjI=Lt9J%ILg(=cUag$&GI*!015=| zj}C`qx8!)$;~@IAW<5ruj?05d*BdEsMNeoQ*9Lp`C>;pv2m|(`K)lJLHp)ZiNq$$T zHtB}cH+>QSo!Iv>{%HTPvM+FsHg%W$)U|=e1nY3>%;bq|(3T2hqR)?s!9qbUqD*yN zFglMuPd4x7gH4>pmFSR*XuK}2&`aYeT?pIxS1iV0bn>KuN2N*7ebBfMO0)%|vRy?Q zet5obJN_lPmJmxM#P4dGzENzgz}E|3zp?KD7&C zNZbXj-v~u-4Ca}e^)2vBgQJev^<99xw8x+>H{(C>-u^uG|0|Yp1}SW$J2XB+$ z`<$|Cr|yrD!#)~((Zgxjyj4A&5E$_YbxJ7D1|f{nR6m2_ITYJj6wh0rJp2gOLi-gY z)W-jKC)CLZI(bLnON;N1y>aQxvg`oFWwp^rEo*R18;u9fnmJ-b?^ZkO} zEDybTQ&`Ils^{5&H}k6Jy>K^6$>ybdUZ|UQMcv36#EjUoOg}U|BH*fBr<9jbH17$# zY4I6xHs(J zxwCb{CtmrfbqGpgiDXpgBkp9QvgH{Y%gxyeJTRkGOGjOR+{z<66%37_`6WGc_UBQD3VT2CqY$LF61t?{_l?8l-KiOLmX-8*%Ow^#*hu`@fdv+bQqx(sUYY zbNQmF68he<5wHi#gJ2{D0bM4Q{ zdwYcYcJ)@fv}gQlue}<%U$)oYrSJEvt@bmv)xKbdJbMr1S1ZnE>=FDh)$^#1vafCO zj2&CAH@q+ECi)_%eu0@EqN$eZBl+5(FU0GcY|tAz1-|y?3sJe;{e8Zb+-v{6aC7hA zW;~`B*lY8?`fM!}eEAqnkX{Gi)f?z?07E?uV0a9D$RXcHPvM5J4%Od99MaR075!?% z@h9nj8^YlvZ%7;IL6RO;k%N9><9KgEDs16^uI61a#KLwwt@#O)h9fjJ0rI-d+v}H; zwd3(O_5m6t7GfTvOFJ)2LtF2>ETJU*_=`}}9xv)N7h)SitUGTDy8H6lg*bg534%(x^?g@4-S>U5XVmvGB;Z5(RJT65D-J?COTaB0Y zc!81Lx~uqOkW3)jj+Rkol)4q&_qNUBhSXx&Zs3oa2ntq8U5C`C;Q}>PE^pVv`_0g0 z*R|e$`>pcz3;yP-daPC z)g~dNu8n!O7(t;E*1q^RQE88mL!cb$1}DhuwF)9s3c~AfO%P2?Qq`NiA|ZD%fZvP> zZ`OE25DC7Y3L?7tc3Sb-5tY{|(+{`DzkWdhpAj+o9QGmLrV=Z6TQ)ihFYEzN*N0`p zz?(LFrUVdZ%;Qbp**wHN92KHkCDe%G9eFVrW2(dhp~em~E3x+@xO^UOY9Kxe1H6Ql z_`nVGQcO>YQGV;7c_T?ZT(??Ift=qgWUjUXqF$w`-nd~v%LL3X!hzoxFTZ>tzJ8$| zUV!uWH+0T|fz?|;emY0Bo3q*4u%mTH7xAa?>I+yi7YsH=3$DjRKcIqChUZaj`x{1k zx6QItHNd5I$&%~)Qem%>gpZ)YCiM*1?y;x3l4Z2j7I%f&u;$-gf$a`8wm{#@TCs7c zSvYv-@>8g<8)`)!rnzoj)|cLTm8(3fE4NeYl7Q$bz=_JcxN$p!0Sl>=v<~?lF;C}9 zf$s9(E|mUDfxPOCK3tG`uUM(BldB9kdMUH@N`CD^9lR5DrsC3;(Oq*X>bq3KSd~0G z7tj;>LDU}%Z)7>WM$pEaPa;)C% z<&{^@bF=@Cy++mzeVU?mkiYwVn`06~QeReI80FNwC``1GI3d&1FB}ik(HXAnC9=Dg zE3-UTa^q{qgLiZT+4JQxnd%TvzHNFkqfdRJ`GjQIzLZ^`N|+&`KRj@ACEo?b`e+q` z_8{`MT=ep`wb;`$`35!8<=i+F;P>{IQW)KV{j-6cx( zrwaPkMbN{htwpTukec)nNjANAPDThXYDF<_%$>2-b)_Q9YiF&#kGA}6=+YxP5*u37 zUwA#H#rx|=wx=e1oRwOLkec4-&Yy&xF>8wt7C(xOd0hL&y@Tr*m**Ye=IVOBg=Hzh za|)4;z)tnc+_y#TS~kcIxtvrgSsFeTo%9B+=xXcN z&B;>NZ3+T;g_GJ2o01K-ZCv~@J!DiT?%8)9+583j3@dr+etmDD9lcl=7Tn$U>Z1jB z>Oy^}ihA9p$L`Xqn^tX?7}hO3_f_hj>MBL;ZlEdWVzX}SDWdoK#?%dn#h@=Bn`?)) zkJ-BP)@>hebQ5oF@L?SZfk)>-nxrTpC$M!LTcwF==u*$pJdXyi6CnTEXRren>zpn; z4?_S`mbZ@LAq6zAi=p@N=1Y8FIr{Nz<}G(QI?^|@aZ8vH4CIAUXZ>sG-Og)8urlR| zT-1;*9!=L1#jr0HRVTEg!TK0XDgiCiC2w1~t7sESwLKevQaO~QN>Xia7HF*4*mfe7 z%#aGCmqWZ-DyIzzbgk48u5>?SrXu&ZOTzlHjdCj1(6>07aPd3aC84u$TBjK2wu`Jm z`Uv4$D|i)5;%?dYeb=3&BWd)(tf6yqeuz52)E6YQ-Ob{YJ`xqHA>AvM8B69Rnt4;| zb&!tQaabW!ip|UII|fV*4LgQB4YzC<{ga9-Z8l8dh6(j;Hq49}`T1{}n{C+7bkoe3 z(4VPka>j-?pvA&gAI=02F#`S`9dA%s)~FtcIvt6^6zrP@*QK#^YNcB~V!cDJ1~TdD zc2^TYy(CZBt@?xb94lL2>;4@d0$5VfCCYB?%(tO*VC}NB0`y&pE1}%$=`JP6(c+hEiZjLrC28#cR^qo0k9{`%MYYyAg|MSk{w`T4hh_46O$8{b`x@Aggq zS3(BB3ixiP|5MW`rT4^lV-Sv*ODrV*m%R98;oU@=#Sv}x-0|gb0_nYy5$dgORCMG2 z8SL91gME9q3;X`_$HTr|X?w8mrsu8P(b;r&g%AYP>Sh3{CB>5bbw2j3sB(dR+obT?tsAiwz(4ouG?|1SrfFf*Ndn!IxvCK zRwVfJu8)3#aMdeae~n82c3Z=y>E;cw>17lK?^TK-Q-Cxf$_ceT6WlT;xAF$Oyxx@9 zV!@|dKEz~W(Ccbv43EKr?;MJw?-B^QO`*~bp*>8t-44>8&N7L;8L_45n^*QCzyEeT zY$YcDTV6grav=({#XhBjm*ab~x6H(dchK)`IPrYJ9$SqFUVG0)fN_1;X)|?ujB&7R z(rtIr`-pLu^wh0&OUxj~4^QVDVmx8G19)zVe_On`_ix*~OWqVOzI&m)0cc$0;{(Rk zuLy}jXXon)WC%Ed)eTW4)w)}`E>)0^5Pv^@ZF2U5ifY6}4pB zP}L@G9m3<#X+wS9g)UZ=Su~j$Bhpcs`OHG&ASN>XF+5~c^SA2z59`R4`tGYZf1|#? zypCL_OUmm3x9Q{McJwNJxORHoqsQ*iT-I6D3Lr<)Ua0WP?@={8V6}BZ^U4OSKyLXC zDXYF&4l8!#Rh5chRC2~=w~k221T_M~hUSQww;}`5o;ghbTB6o+V`$GsgV^D9@#U#yG5Ld4X#0|EE z8kb!afa~F7$Rwm3Ht~v zUWjlx9CY{)g060}6tX%b0fZEHLsj=IryEX5vr`fmKP3)b_tr6Ae@L(#b+a7m%2qog zeKj0cBX3qCay9gj)ZXksryX%fDpvy_T-EfzN7!=cA>k2uz;f)HjIZ^0=k*YI>8oeb zSNlG~>wvuT0oikoUI%2k19F#B_&O*LJ}5KZ@XN<|u#a&cm+K4bH-i)S;*fr_IMOc@ zwKYZh=}8Xx9;jK|JP4}o9>`$rPYQR#1@mJ7eh+y{IW?>6AcF0bsHb?o($e|IC4Vro z9WYhHzq#mUpNc{jzTim`aqGU7$y_3pOmSH@ca@yf>s;z5vB{avi=|42GcZDNDbL}$54b$%k; z4_EF_n#MZ@CgdN-$SV8uuIv~6=euzX^^T#bh9Eft(DA{%Ar7tFHnjaVWG0B#u|=|qq)ru_iXKvr)8@B%GPh2av`g!Z+EF~bZjx8B_LYnmsfAspw9FJ+ zv0dJ~41$WX5x5#bg_qRqjAJU2L~5}nI~2tcv8qR9n~`(ig> zSJ&0+!;E?NU|@;5N$XJ6m@kw=gY`Sa*a_-Xy1t-dLNIg{hlekabo%aY z`kDB-FNctI1__44I zNdF8m>2lOk??y(}&wV|R{YGoKGOkBRwjOXp`g$~c1ZiZ>TfZ;59;Np6@U|Xct>NI{ zzC`@!xgNTj5L0Y7t;cDD@pV4l`h1*);k_2*ofo9MG}bd|tbMoWbwZXqAve2&uT%2q zQ!)#}d-)a*^etWxyoZDehz&?1HsFf`;rU$<-oN?L<575euy;{-WnEpnkJru~gloay z1Hud4-Bv|%2n)OhgBSfH(R1!jZoLzey6Q0aB}YEtvM=D|n3Bm4qXa^qW?-XWQ|yD;LyX1aVAgtQ5%xdnW;*{s#s+hp%;E52bh zzGBh>JF!*4i5Fjl!5cTZR5ZWP0r+xiy0>HS%9;1OkiH_&% z!u@lS2v3jTX^Xd>o7()lb^uoUr)dssmr?bB3l)UL@om9&n88A-Ju6dLYJJh_Hv4EL)D2F_G&C*y;&rI+`B!1Zf1U59w|>yj+_}*Jv+}nLZ9fy@pGRsJW#OM>Y_nWF z&#|O3%ZIbL+^z@<)wh$~QJBEPHP#C!a1?R(|F?H_NsjY2@G3cgM@54FH%OlIoEs!Z z_+E0VRH~9QY;F{EgR*6h<6aa!G&}dkcsepw$?1;O20PSpV;d8wS z?g?y|=c`yGE$DQr58_9?Hi6v0R?n^En-JcLK7MSf*MC&eb`38#Syoj5Xi8TZ1HUmY z^m{`|aJA+ih=2lXRGVzHraoU>%huDcAJ^5j^ab=dvyg5nu$7DG7DBs;T7RTp+85B- z1=OnyJu`K&?m)Zc3uuf(LY4`(Z8Q;R@)V7QqSsJ>9V4^&BB$P;8Ob5t_A*rjg5-*5 zR7z8>h^SXV8jUQ`0VIyBpR5fNDhye-q-`iEo-tPB7!LuB4fq|`P!l>tmn}agL0H-% zk!ir@Nm1c_CyPuCr7$W9ISxZ~%pk#NV^U4fyA@M1H#V_y12{0%9k?*r&!T-U@@a0c zPO(KVij*aaJiTqjU9QL*dpD#1Jk+5>LcfMVy@{mY?+DP1Tr^;0fP`Nja zgIFYDp_tdWzAK3;WryQSjU!!Lcvz{WO;irj5qu3D!>M!i+8BP)b4)V0wc4MD&NI7| z2YnQ1Jhs@op}_&^w{y>@qNh3NtjUVvakvynXKcJIVj4Gw6?9!gH#KyO%W*AS@M7P$ zK;uk!XXce#Zk7p`oK?k{vR|a}2!a=Ayd;0O#(j;{c+ONgG3ffSQNvtSc~BqFgbeJN z>FP_JN1TBBLhL8UpWBEA$Og_Z9wOGijzL; zp>sc)Vm<0SQRfkDo%L?&Me=&UuI!Win@{o&PAj|0zrV^a4uZR5|Nf5s@{GMt^WS-z z-yOc#r}}R=)vrW`_5=6tcHrItu8(OH8RXE8LRvh->RnL4_SS_e*{pmtG}kfVK=6$cxq+7fv)v0mODu%N2^73 z5bnnMjx#RA-iY~vff4Cd4h1 z``zIzat)K^xlq~L03l9)@X|L9zbmEN2inF$|auY{^4ucq( zo^5Psz$fYvOkG!a0Q&W1gtiP{`Vu2+udC1FBKSBtyb5iW79o8!f(1=b=Hq& zNFs;+a+~#avDm^OPH@tZ+`HElsfY+CA2wQFzea3JD>z_)CmZ%S9OmBq0zsD1L{?etMbp%q_tRbI)wql&d-$I<L5n)3F72;zVwi zn?&|FW1@Ix`8HuvJ~ESttRJXoDw2Qtx{!$mUuNgSx1bMD*!@l961x5dLUlmR13D3k z-MmV{7B(AaPIUEf92&mgbW5$jDq`tt3>BT^m~I0XjlM2JG)TGt%#R5dV$XJmY%{mz zViY}sET6uSrA#JnWP*_*U{+VBFmr|#WGBp{7nHQs1Z)7Zn0h0z7IOg?&ib@o4yo$1 z_dbc-(EFhp`HzlM4&ZsBgtNZwL26UD9e+!4a4HtIcC_yGDnvczsBqkRMyHP6s!y?P%Y2`aiknl(FuNAR;S zT1jQ{9L=%TVsYa_Z(@*=)}P_MnPfvAc%;B(iJdqUv+5Dn7t<{s5jmmMS-5z zIFra}i-dN(?oN^`>Iw^iCLfv#a0njVCkx4_^!v@*vzhI{pNx$h(gY^};sKh9hsOBO z)tNsrTZ!FPq}xh%*2oebz-&cmD`Zy>UAP*KGxDTN_{o-3hCI@{pt6 z=V&ScrjqY6l|_ev-J|?;kFxAww%f^WCrb{=`_i*7JxgO2yHEK!K4oqEX!k2W!LQ7R z^Y#GAw+@i(FzAPbVTsI=5t;SVV9@a#2K|?Z!=O8AD)ki#(>t$1=N36OW_K+fU7+g- zFf2c{Jd;YiPsYd-2Ksb2QMS1&!xr7nK(MSWpLJxg80>*>Py+ho6W zuK)HLw$Xc%ujNOg8W%LQejday$%&4&!B>obx4msGw{JVu)KLoCfDNzXvoEL1HL@nu z?<5>3V$ARM0Q~IukrDl1gT~gfuv>1xP@y8&05w!4t%o0^_>ggqt$uZ!!YVKq!A_*Z z)D7H{yzuSmD=#Wc;L;}JtnDG=)I}?VE==o(;IeKyATF`71ee``lnS%>K-)|JZH<%(xm@4?PH!QsZiLZ%4i6~qtI8A*Xo zP|{;sV=6=ebsrpuiTlvedd^n$L9OIZ4f`&?{n8@;z-`BYPO^pCxhAUl=RB$Wzzv++%vzjf28s$L%U#3j?V)xb7R4F6LT-ku7GUTg%PQYm5 z-AtX0YfllwQzDXiFJ}EMi& zc7ksf-mS1@)U2JT0U&tk(J#E&l|e%YkZvW@Euo~DrqZbSqB;kbB7hN>TkQ-19bz6D zPL$xSZH4IK)MBTTj_DwUjJjN~U^}3eYsPL}s0O{DCqpf51n_0_R*rdfM0zh3+kMKt zyRs*niGBo}-HtG{5Uwwo|J_1|Cr`Sox8|6jlU^QUrO zx=VdQn$1&1BD2o;SDLW><~_vYgD-K+ZH!j~q(^SCYv;CrtlN(uee-xXE>~i@LDvrd zH+K5ym&9~#e*Ti^5ITQJ8CuQbCC3V_i3m}b;VxwHQMNCR)Hvya=Ge5MizdiKvj3zpLZm%(LZ`Bb>|eMWK= zYw;J`x;lOmTDdTr;K10e*Ay!IGz8FORRAffE-$AM1pSttYz8BbK3rFL&T&TLs;LVj zTd(t}ZN69JAJ1g3?xT1s(N^*PcjE-5lrOpMIC-AIo9&;;nH_J7b85X;zq4)j_kD%+ zViGc)O4y3(pLgx6b-{_;Bc19?bqh%}RL{8rhLKV7n(7_7h|?Hd&FA)WIY^&T)_W}k zuLB|`DW3`=iaG+@UK^5FxA{0a>0p;-Og^qx_cL9}D?o$DL%$m(J{dpgJ-V5R#Zkap z8>pCV%r)OP$SW#8y7YJL)N{o^(TC~XNS$DIhBg^$i&jvccrZd~u#FYHkRCSHnIiBF z4RpFnJj>#qlKhE}J~d^7`_(LkS)kIq+C=d+`k##e%-g1c?sx2{SIGzVTDhDz0elzG zVyaWDMk95Cu$>PZ5(W!q)EqYS?Vua5>3uoTaQ;x+8l0Q7=aYf1M|Atp>`^L9DA-+a zL*H&tK=^hk@5D*hK4oFZ)_o35tmtZ30 zJ`3y~$%0m`$=2R|V=J9^@Y|W)?%=;iQd;4pKT@76tS1a?EsAob zhH=FjHulGlGpbq7`zR~9J1;TR=6uUOfUOCRFR{|5AXMd+`rj}-m_7(wh$_diq+3Jz z{!TZ(u+yD0;d4W7LqHxFjVg;JK|{d88ky~_EG+gQN~@m+ZhXccFCA)!s zXAIUwqs6N!*kJub*#2fc_0rLzbF&UIyAj2Mh@u~2XvRnepeNJecMbPbUVQ10g{`xl zrCX5%tcbES=Jp}($PvfKjd<3-Z*IRgUH`TQ`Rx`3|FhSD@N(+_a(vt{8kn&dDhEsv zBg`C$EignF)g}^EM954CBXm;fiQ9-9;jbdF8#sO&zNM0nQIGGP_A{^pT~vP-&fx82 z14S5F#<~E1V2m~!9|_n-MPHNK)Eg@W;utP$u;ic|fx|ZTBM63+L@JnK_#%K}@X!n) zN8Q^-jMjxok$BSWxYzGQmnj%@1p>PUXFULw+^Z*J<4_5Z)-;kvZz34S$ZZ7Nq&wRf zsDx@2fcGS2Z&gw(8<<*5 zRnLctb{}lL@Bl~!b}NElN@U%eTS`tgxyJo+EK~m7p_6 zXSktI@w2z%?`)pH1vPpE>B~qpA~c;By_H@IEKl^V^P;85RVBFXj=I-`kUfPEZH-+l z1RZz+`q-CrLkJ~zFO_2#LS;i?T}4bPph^e&+Ox2PN7PK`5w|-+Uo{1bZ`#_nSO@`h z-iMJz{kjkm{Uf&#-4Y6U;b8$>mayY-87SjoMKkK*PKcVX z?|Z8`N%&@SqF%i1->M{-}Jxh+WtkfDD*@u+X{SDe|?1QOo-?G ze5Lt)e%j^ztT6t3zA^smPXv9w^Zx0un@24@U-XPW@1=R&Z(0QRM}pq(>fiTgHQhg7 zh(DzXjNUI#JAMyEzOy|aSA@P3bDy6tdA_Kz1h*4{W1!!UZ!>v6pF;*dKLa~{cX{8> zCpX<+1Dt|BMoF9JrGy@9JEL3Qdkb-|Gb`_qK6Kx=eiL!#7B-*O55KOzOTNzISegbX z``(@-`X~h_P)4DcIyK$6CEgAMcWZ`D4UTkPw-HYW%-vae-J$aOdNL0n!3a6FL-jVX zu={83zZmsaGxj+dZaQDyE!ytVJSxuMuZ8zH!vMdI1YvecPi%+7@z(Y#?=pBSx00I^uP+b zp1c>SY!(j@rZ0T*h4rs%d{qdF&~%rIeLi;7_`OQJ5I%2|{@fQ`7Tfu$Q@;lNmh!z_ zxDj~jYDy!YK9|{it$_deK$jGJpV--BoWAmg!^JftP!mYnkxAWIm|lyv`&ug9`FvX0 z`FeyO9;W~4@%wtX>8`z>-T7+vYqSdbJUdb7G^ASA?d}7)7EGZ2NwBuLT3R|h zktofyc|HBP+PLZFeb~*ri}c0f*970c80-0F)23c<+tHUfr#zlK^?lDus`+|+8q4Fl z{5cq@`MF&%@cTKq5&XKV=njvsW$Z8g`joe5OrBk%@gf!u;DIb?FguCaaOVaAya|b% zB;C!GCOQWG2_M2CENn>WQCEq&TUtv$uh9bgst7mS2B#%Cbz|lV&tGdh<#cq{AXrh&qHSK^Jr{SZsz zkS3S#a?t;w6n>-0HPnY$Dhwd9SlGajZ^^dLMV(7nPUD(H|r!~BI;`YF6&kK zVpx-Nc;rF9rR^M=X&uWbO=L^8LxveHntKffJZ~eJ}C#^oiil{g3x|8Y4t=9zL$$&J2_~cQ~S-00u(`Chu3<9+L#f^Xb*4J{Mt6 zhKrFq=eJqwLuk!sa}0(Ip4}Pi0Y=f|x=u1{OL%v7TbSl?kr&>KyFIGOXGRv>a`jBf zK(Xuc>Rin9)Nq_6%1jK|iRUrJQZg$Z$Z@+;D@%7D5FbZBNrn?6MKW7^gi9HtlmjJa z{mFK0oU1pf0b}IL*ah@K)*xT%xiKZNqgG?to& zg@Je1SNpE-*XIy{k%5(FTeFN;5r>I~S(||e?91bu@@+Y_f0)^(*Q}Pi|FyZQyLuF! zF1osOiTuU7$)S^#@Rf_bvzfV9%F*m;zU3$eU|eZ)5p9$J=!-9bI30-BS8WX)Uh8lv z4Xc>assuIgsxZ)HBa71&jm?@HNN7nVWvu^gD4J-~Z*eZ`e4UrOnsID2{krt%^C2o- zM}uiE-fMjxS)&>!`c8Bwc0EC(b~iWGZ!}p4AOo6(nlOm++$fGe24xY(it66RKdSBJfI1bkhwXKv78U$5kp>W`tvi`GX>A=xwL8~ZVTl`E z5bL4p3(0kxG#IZ#yF%>i!`U5?*%4h`gB>&yM@atQJoW?P^`ZXoF?Dk^qZwFgz`+-p z5k4=;4-Mu`K^`jg=V%Xb=LlSZZv`D~Yd^7`s3C^>6lEvl?$ znFdXgvdv}I`ZX9bq3Y9*)GC$5{oL0x%MQWmjoNzlh_4ItI75`;h#AD{xl}thLbR38 z7LAu+Gx}kxH@iY_>v?yPWw^qjqaks4EdYhtuvl;hxbp+AtqDJW$l;9`Lz#d*jFu5F z90HkXP{%@gyJ#fap-RVoTk&dkLa{H|%45p91T}V@;_SG{&k=`_SMA!2K=Me#vhsVR zLXe_e=NIVQqsEz(jTafo2kgj~-AZd(SO=XuC zWGwU?TKy$_L6ZZAW)$DK!^hKVOPIsROSQKu4`po&AcKu2vW0+)N5)rB_$?VdDY`^Ayqeucn!o9P75pi z)M799-q)2Vvwr>!73;l9od8aca2MI{@>q`tE+m%foii#04_%W#C_@rRwIVScA_l!G z0ZY5~nC3=D$nvKABw>QPUc{lHU;<97Fab`=F2C{v(+5SzF#=k3^alTz& z*#FJ~_8Jw8QD;wGqXcmUq&@^&DfBVWZnt#df?1bVn|h?3AywbLJyu9&kl8rAdpll% zh$EDyf(2@6xlRS4m4ZAoHo(74B!xpXWt$d`q^)^Dl8AR&7lA!2J(+&^(ZluT{6s&>hx6`8E&ruqubi#ws$E{bN-KaQ#LgRh(-a43-w?+x=yG^;sqc*%_QB51qp@xuY3`u`|22Dw;Z`aL%?Zj7GkYY zs&Ct6<0DK7)U>i+y0hF^6lw@N5u(0>D$oyniQIn%b<3?Z4)`G}1E@h$NC#l+!BqkS zRnMTgR#23ik%*Fwdr$iZieSpXnQ~+Wj-*SH%y7qHxbd#Dc@}H1XpM`A4vKM011H71 zk=2YKsHm9T3oonO^+T^C-TJ2CSHG5<;G%0r`LXgIp&SUx189HcVz1*=hstokO^Q#r zS#QXs`h@Eg!3Zh9Xh*Q2u`ogrB%;l){z{H8!IJWBTdi&kK^8K34Wj}`4r(nx`2fIclUUCLK18def}2}q}tKr~0P732|yB-=S+O4OZlj}6yv5hF!0V$t>L z^3V}BC@5cQnnHrXiM!;pI6)-^BMD1|NYqpz2v$y&J|jS9C3H)6VZ`p3N_EwTtgOB3jbeqwSUxI?QID)m55P^R}&Q5&9f{Kwpx^y-^kTTiRbOBZ)yyuT8#? zzd0Td+xB68r%Q~#&l2{WT1(t0cC4{29m}qv-A+_dIJfXPa;TDow{7Awj_&&wHC|CIih4w-1ul$p- z+DO5AT?aM5awFGu{*}}Wd{#CT#4eGGXah-(0Qzgfu3_*R-wF9n%1=C|UAn%d&V9rl zdxbD!rSthqb0L-3rBix5!kfO5!f+b-(Lmx(Ab6)ZC3^fKoPW5i49xOuqP{I7)xKu0 zssv!7NinU2b|j?Sm`Svbc+%(zJ7l^gy&9*oO+xW-S0rD!`#ftsficQ3+*?&mS63P; z@`C-gRsne!+HH*xlSLUjmDfn-*pUw7kTzn+^{fzn-yYV*=1DQZiFG`;cmIS1JDQz_ zj$((7Rtv1k=}xyq21$!mf1vX$nx&2lIICjYxE48#`AG5RGD%?7*JC%Lev?q~Ur+1rCnhV>SHsxTx&j zI8ou3RO?`6i@%@~@*<5chb}m)!-r9jeu3#lDP1}KB}1f^6YETOjqO_>a3EzBnN&cK z=pSLER;|H|i!MYcxKnSU})RFg%b zL@bZXhwI1=pWCNDD&AzI+-GApG1Z<#KObog2gC}96KD@Skel)FGuTXY0(=7H_KlVP zT}?p@fd_R?se6bFFpa|Z#*=rF=unsziHI$*BWyUuQpkdoUerg8sO!m@+s4A_t4a75FDmtv} zmFdaS>$s5PNf3eo;i4Hxo>D3P2+SA{w0qJ-ObDVVn7u+?CA|h_34FpP)K1|9xqXS6 zHej@;WXUb^lV>|{<6vc6cm-u2<+qF^zb-Py^G6K#67iHBz(=ki#v=Y++sv;AG$-&C z@fS`Uoo?T(QjI9VWUWpOCR@pj3XbcT!&AYXQ;ab@K9wOwq-7clP5)wRvsIZycG@5U zV7WvR;KgNyJ3IL}F7FH&i}8UHC}pIRUozvREUoUbCEy?~s5IidMUC&)sE7&2;f1AY zjbem|l~0U$$g9@|7LhQ8r3@soF0yb2E&f?`E}NQVa=*gfO37jgba}*K{iLX)@o3g8 zRyx>LSXbuU^N&6=bSA-}HjrkDu~e0~Q`-MCx?l-n%AF~WnkK#H?klh~kPUp!RFdl9 z3~XdJ^+Mtl`zzHkAEdxQN=P<8g%0I(Pif#lsYOqfEfE@u7tvD0KD>ah#Ju4gF}}Oq_)jd}*ivYPMP_{= z@i0iTpggwgrr$=&+NhGb9VDK-;Oa4q$ zDk4yC{vLH=!6;5;W86xP)${Nww1R444k&hV;xYKYu9C_sXea$fz7%sW+`A*#WrNv> zQxYGxY^c`d03n*%x7(gG>|mp+D@e2YVLP@S%@$FM{^%d_-#U~U$XJBuQ@fW+zXGf@ zKcs-@)KHM9l{U?s)tk&H+qfL?OB8P%0y*0=3E%@S1=_#&;T99y4 zxU88^KtNpNv!yd#)ZxN_urVp=?xX2bNB1Lz>V4`VeJ-?{>1s#e67T93dDCiA_QnXY zQ<^$-Qe_3?bz{w6NG|dMB34W-9l%P*Ioy^R0_~QKG>(*b^;jLs>d&eq+{)?Z6xjTiOy># zBI)5mVNl1De7uyr*_C33#?X^U$C#Jm5lkNo4GYdMh(7!sDNMl=B&d#5NBQ8)1_ztW zBx~ebMkx(_8qZTM)B-Y|dm%NK?1m{@x$&*w49~Dx@!F0TWQyP5vSX(!46dPOf(bDoNKXc@Q#J(tXyl`KxpHo z08ttX{(OEQEPhhhg5UvQ8G*Pqq)|V+#jO%np$+IFQz02BTS?TWM9D1y^AT zh^hHJ)YcBM1YthFaR##doVA2uy7Tu9HLFdmm!;EP8p5e6mW6rKhA?{!X3*ED-kQa& z2H>e4-TEgRjhb`l;`nppuSgWo)`ySclBO4-Oa1v}`y1Q#lQ>G#=*gnO?^k6qT)%3P5XY%~NGl@%tSmlN{Ln^H9L)rMIc83X8= zEhZA0%b^vBN}TyYpVabmhHHacJ?cGlksxXo470Lh{sKK6mV zc$pqgNlLXcS9Uhi2ZSLsI8buvZ-3Zy5GGV)t0n@v0@sue8FYa9U}2%)LAmC|lv=?< zLGoR7Lj+UaB93xink*Q}nEK=d1vqLpaWoy3bzZL{^Drn(vgils1p{!8yh5d!u6jy7 zgQ{Ku1|)D3#9s_+QuM&-L2Ra)j~f^TpnrI1uBD`olB?p6UMxI#V2-(bB&8BjFpZ@H zR7I*;qKfczRS-!+Plj|FBXu$%_fme>#uEY%cEoWf>VyllXx*hv1()UyC@hV0vkhUjzI1p-!T!E zy&c&PA%ogP)1*;_K7O`IaXR6|Ropuwbg|muUp+ma2PZxMklf7Ab0PoWrIS~9Tj?`W z6ea)Q{NJ!u#1@{WAV4gBLCT$^P^?p?~XLIwK7#TMd>Gx*G-VWRioWEwQYERsax9UQ?0 z8eb*i=|qG?g8x)ReO_i+MswfYLLI(-q`;CyJ%ude<>JJJ1hZczNA%soC|CD~1Eh+) zx`k=^@Gq68&7xZfc$z!ex&d%-lXxS-f~2xk4{$^27NRX*-qd_=yFUc{8I59J)E|

A=_0N$Oa}Usk6L(kGHE*`2%yEwqzlVW!ItNd6_<(OtAga5y!z% zZ|-}-z;gsmg#N&S#Ca}-vHj#rHXY!rjbOX131d0gu^QX)AC3ISOdha|VrvHAMVqo_ZHSvO z_T|&~yq&$HNg^ZDy4KRgJEA1nZ3o#*0f}2wJ5aXYoUVl(e{ZWJ@Dxsj>RMAxW)RiUJJ;aWAIlV@|Q9sfY zr&IR5YBNyN2p+w@AD`-hkWEqfoAKA|dp}BeGCEhWPK*QY9CebyMy#3yoGSpAPElIb zaPBTPmtq8MqEofHHSvBpE^=?CGelU>p)PhNxE2wr%G}!<3AfQ_u6&ABoh&)0w;w*D zyq6T1muG>24R~dcJJkH%1MA>Zv+zxrbkkNhNI}aKIiTQ{9HCY~y}Hv(&tm&V z?hWVRovktON3BP{47g=ypS>EGyF<bRLekBpd5+C?H2Iu(Jb1 zLlij6m9_RfkWlPi)>3PT?XPT<+L@gfFiz(x$ZXYolD9-4qz>(v;4H)E=dC+9)Vn3F zyLp+qNX37qpl3IzxJFvg-kEJvcezU7MqQ0fC{zdM4o1Gz<$FfpL>72T?MNHE7J3}s znhz0r2pI!8ogd89QCs}s4}9AU$!W(da7vRu;Z^*{9#pvyI;2n=xe>zF-4Yeludgj+6BNWih#zqBz8IuI6No{R zD$gBWj4Z|1X)sIaUNE(Y10&jT zTT$T?X3Hk&ACt)d#4!(5dw26McQXEbJ>&`g9KpWL^!WbEqJD3mH3o2fxE@xwp&ktG z0|Mxs$nw3o4q)4_4(9yx-_@>)z0z*Z zc>vWCTEq6fTMFtl(RPao_d(2ei}zk-J+M&h_di*U;$lzp6c@yPKKk#O zNTLno0g%I_ivpeB$SdNo>*fBp3mB@kS&p!}M?5_{mu|oWfi&GZ1dbu7I}gvP+^~-Y zcTe)Oav3gT8$q+%GSy`vF;mrkvn32#UeS8iBC@&hrySr*Y7*?-vg9AQ zrH)ymvGV=Jv|}v-!}7oGxK{-Rv2r{&V-&beY{H7doKL1fTlP4`JX^DRiA`*oL*RjP zG1&%lC+`?x5U|hk#%@)L9>HAgm#dIg{<41qzLJNY;qw<99;iZX&`f-edk67BsXH(B z8aHx=>ZEh-O*o9O!1H%DaEN?do>)G9GBTGQ_dUtTg@+?m{n7X zD*mlC{4n8F(s5`EUq=LOnA=X1YMG!B1H)agbvP(Hj#J?oYIq>Vq|hDBB4UnU*jV2W z^+wB3EB>B7ym|GGTR3>=?rN3szy~v(1JBNJN0ur3P3lDxb^?yAl1WgsAm4A~`q7^a z2n5hL6SCs#6#8ph=k-ug!b zk2foi&=}<32N%lRRE{WuzXem)A#KnW`-+TcHUtUP8N4>lRJUaaPhm;KGdd(ncvDDO z@&>C)(A=8$Wz=>_MS`jD0&UL?YEqk9;NLu*rODN5`WbeeSt3MyBV7*>&+{@9)?y`4 zvvI!IOBz_7)lzNxeYw|G=%$KC+@MX;fe+%K8B10kMF}M2$v+~O^#EIb)V*g$)Awz{ zz3LF+E5$iQm>e0+K&q^c{PqK??=C*^Db>~vELS>ED>Rl_+VLX@Mp(So(WU~4@u%Fz zHivx#oL)`vY%=8z>n_?21nngGczh{Rh(>WG7zAa$J!oLEXX%YdMxw@5`BaMz%a!R! zYDJmuz`uw1P7mb(4C2@xKY%*oyPM496b-7L*#g!Rcz|_WzUU~Y+_mt@?fRHeRiW}3 z3IaDLw{wI`ijf@ogK?>XN2p|4ewMjgk6qiWM3RYM$1=DXazf`gvz`zcJv@HY?=A{K zvIK=&D|{U;BVVDvEpOb@jGltogkfOkZO`|71+~XupmNiMZQ`jZCbSf{-UB63r_Kn~ z0t)Md^*MA0aI{5;3ByB8(|HU?V}y{h8OFhuXcE+4LW}VI2Fi)k(DcSFcKY!Dqjh}n&zAsX3Ww6 z!qJQ)iYSQ5jXtBuiT0grg1_{uSM_p;!a;YBFpE%sFxPb|ylt*cT?6dcD3FMnSB}@c z4qBLbvs_%K87|sP*rH*;7ZaL8mz6w@A&1$j(ok(){)*F$ zhxb{@Khxau>?8KMx_%#d`zi|r1d~0=FGx`5BfUljjj6@dP-Uaw>j~$Tqt!_!!CEe5 zaW1js#X3znjf{PHP~)IBv?1;GyRKORcOtQ!f($8^-it*o*pkq?=Hcag;si9nofpc2 ziFF(m-`n8|jcMIoH@2W;2BS~QcYu#w_EPw-hUYQjdeF_=JGR#qhNALLR-6Yw=2E+z zZDNQAa-c?p=&6jjB7sLo5c`_t5f*CpqXAD4KpX!RAgmQ5fU=`A#tzzv!~ZdMcQ!{9 zlf9%B;06ZH0kBWEq3UX_Kr6$=^3ME-k>r-lPdR<2PFZ zb)joDh%LcE@^Mx^pF@coz~wj1RI+jiZ~ummgQ!Qx$CYkEtcQqOAF(Dy0E@Kg_R=zy zNgG_fKFk%+N|mi;o|N^%6A`hIpAhI@p^N(5C0!DYe0eHMkE0%Qr}dPM5P7sf!~4aV zK*Op%17s5w;Av8$Pw?GA{7b~-T+FuKJ(7U{UusS4(PsS609~QDA3Rnnu%w&Etd>U! zA7JPsE63@?Vh}40?&(>4m%gbq8Lg_9`&TawmUU8mGc|}aG`2Egt((uob4+;BTD2&9 zC>Jcaj`JUotsC5%G9;R!j|6Yw2uxd7sFL^Rw3&-re;?7xkrbvsl5&m|^C4CnVBr4y z!Tcn(6+D#6o`!gz6TFsIWKA@+s8=E&pbvGHykraRLDVzfWyigPt*l2&VL*W zKFq12K4~bqX))9ca7SXzS)lsLl}Qqvw%iPMJI6;M9#}*!$^%lvRO?UwlD9iZr zQwT#Fv;Fxs`yK=Di=jCfLdauN@lO=|*(7O(>T1&P1aXwpxrZZbeN2}tHoNT%kr+0+ zSOyN&5YxN%fL0x`M_Q@tF-TA&wigZ0mLb=rqIlscE(EpN)u^RA-Z6G9)Lzmmxy6;xYeT5yBp=)uLwZ3C-QirJE(z zS%$~!`p@=O@PxTa2Z|;5tY;tK|E24?H+%H1T&(HLMbGXwYIGW={!2C&ExGRF(8$2NF}2QD{%0F~ z#Ye@rg|zH9@Z}{>4{nzH=RS$R$W;!6`9MGBA$Uc+iyEL?MPKpfN-9FTU&}!lPODmY zY~DHl4^>LQ$Vcf@lsOYpP4<>^5XjFRsS9Eg$6tW?E&$Hb7AeufCJ5&tu?il^3}Fx= zxuNCY7h?!ug7HLdC>w{F@EdPK2yJzc4-+Nk74|v>mu_-a`$pcdx82+XTii zP*J>vZ#&A+T{^F>*FRP%W;Dz-<{lZrYE8vQZ8%71@Q_$IN^jT|c-Z+d(hX8IXK*W0 z<}$55T&Z%0g8@!(#l)@%>g`gxCs`&hqhU0;u28@-$YO0voAxtVm_Tw*4MlU z5(ja^zKnG`#Dh*HC0_ngn#GyTzW%sa8M$R+q+)-4^AZRlHkZUq&k5OglbGaGwKPRO zfsw7&v?1GSQebx#Ki3LbYc2{5{iEBGvW{TSaz5x^z+hs+i{r_uHckj(4@4%9_wPZP zmK}HejTA*NV}<#AIkb%Jq5-?q^Ny6y`rDc+%Fx=gaX(ZN;J@`O0AL0uShvn zpH0tymYJ6f8aVE56tj8@EM}4hi?O8`izMv?E)HxgQQ35;0K#}%a-iDFI7(O*pxpMI zeB~cazfvExa`#QTZj&XYUI+hhER&JFAR+$8;b`jK7;0^*6NL>na4M%oUl;_`fJ$z% zP_qH3yHS_}atuhc&BmwSHcvnjKkBFbi+$)$df&v565A7(HQS-r8JQ?di2qzZw|yE~ zHAun}!7n!egeQ_YgVadcbmuNsz6Y;Kd%Z;iN3@zrm~mNC|Ho5lNeTKgq9cE6*bQ7x z!tGnFkQ~sH0^>>zimJ~05pjwAAjC8Zdw`@C!tz-}wAwJRwlG(lTxcVnnp0Qe3C{ODYLa-dJng z?%4V(OU0}CEkp*gm=XEYwo$B8uId6c8YLOq(g>o!!H{EcK(B(PcR-loo>^@zSwxtE zbuEUp=X+zBYR}dt*=Eq*^M{6OG*lwB3EV@LBuEpHnG1?ObCyO1tDUm0#@6}DZ8Kk2 zi@HoskBAq0uy;1^=efF@f}P{#xXoEo(ROczeS){bb$Ib3OuziIY6L;n8yTzkzGsEw^^}_ z?8Wp4p>&)gxdr;6isXbHH8_DpQY3jmOW>JfYWvAi;c-F6`XGhYZOxvxQ#AJ)cJ*{{ z+*{rcD0w(xx5U*=V7fL&q6Q7z!*;hK1Jh%^U(o$KG+JuAAzN+S(0?7&PE<;ROM!E( zCFh|Um7T@(o6_S_742t&KRq> zT1pEjHaKy_ZMIHxl>vg#tTG+`xHyB+8vGPF=`?j^@M4^sLMKK>M3ar8^PdA*~ZJE#5?W37%X>+J9Pt z4M!2-4ao!wp8BLqz$dOC!dE}A&TCt=eDDIp2L{DNyNu&Hwd-mnBd5{^qqDvOGX+KE zR;Ko1tw`O%QDJZp2<%kkR5Aw4CTW?>Pt#toYL^5eu~kxDM9%2o<-I6F(xP}y2aPau zR2!~|{T9uA20p(MdhM9i_ruI@DPO$NGG9XqoU3y{wOV}FUQ-nO6RGK7Cv&}MA<~c1 z8hwN)(PlCvQ#Oc;y%DbrEH_4H#RwT+tE%7cs*h~sF8Zgdpgg||ELRsvdL$GGbPYr2 zAY>1Be6CAROj8rt$PN|xn31^u+%`Mm`YpcJbRU`wZh40^zIHm;Hbh2vUNd@U=GapN(MK8y{zKKVB$5sRp^`u3XT$)4frEWAbP{vEMe z9CmaJK7Y-+*0mJ(;{_TXz|V)FF@BqnU{XSK_3?WLF%%k9Y=_ zOfU6wK0EeBL~fJe;ZKO_YCRglG@$?P9_Ngn`&`3v6$ZW|x*tT6&=ae4dTj*A@%H+O z--Pu66Ctd;{8!wRo(&RM=u*x3zt<+~k(%-HWh~mtLfZ)~t+?CLDyM09~ z5weSqHYAhxhL}8s5|>K_(R^ zhkah-L{>vohfd}ii##2GRLv!a+n}U#zxU*NA-CxLaxiEtqCsVg64eZdw@TYyczH??B7@mui>rK3lBRZaA&JUA|)|3PtfpD9RVEf_P;IYvMWOWq7P_&rCf3J8gm zo6RgxVZqA6t-_v9rC46!HMA>C@7N)j_RlJssF?rq)Phj@7_OGQgu(id@~>+YJ(ge6pytPHPv3Ba0w zGe-WEf-9P$LWJ%W11k0Jo^9HRjiMUzh$8WbYbN7mgu)#5+=oRZ?Con&)m^l^E`{$^ zYEkui3hGwfsW-TK4>1~vtpmeqK4qKF+z>ddkH&^EJFB1?%y=v=Wb)-vh;j`Qb2Xy# z0E43=Y(i@Z0FSB4uR~{R4jf+AeE;vF`t0ieE%LPg*RX$U{cm&pC)_J3pVsz$ke-{vjCNMbC*}SVu>}01Hvf3WiO;n4I3!vkI zn2&j>DG~mC+54tUbBKVI*LFcoyh|;x`iwRsz%;zv#CRIH?}dm1UU|4m`ShndKMIGu zLPH{wRoZWmt!$iqV6w&HPsqXD>fuQpiS_9Ar01M--7WaxoElRW0n0Ic@S3QO- zPF^WWIw?qZP~;Da*cF`9ZOg>kKrW%5ys9@zrsTwP{EAkZIvI^cLVkW)x=hC9`P-d* z--_>Hb?p@{YEn^|LTH@n&PTS|^sx!kj@Y6;S~sZ(+tM%q5GtvIe9MlNm6q@s0xdMc<;s8?)uRK+hgPu@MmzhwVM_qzs7MEjIQtT!- zzK5+(6m87j_Hb*=2mL{W2HRbSIBLhn?BL$pzlTjKD$F>U=R2{GLpMqm9L%`)ohu~F zIIz%LdZ6-S3}6)(Xow-Zq#&9UXB@?iBEsZUNHha6U&pdl+mm%$TjW-rnV$Tu^t9uaSi0^zf(&nJma(>3dPM$)9Haeo9!FEb@Zc@iX}HHL)D z?KoAkd1l{m=cA1(29FM-U;|=XZhzQ6o25(IbFIoWnHKv9J)ZTheor&=95<0w-4sGZ zwx-FzE_ivn!zgBQ&FGw%gFrrw{||zB4q}th%Ho71c@fxB-DvIW?(r|vWCgC@c0qO9 z6XF@JOBS+vKHD!KST3}fN8{oiav-R<8`sj3H0vPNfm;Q8rsww z(mBOty-L@Hsj9m`DFJ97*EK|7i(`HB)RWvQME|$kK2d6la6SYyN1rOwfqs+bw_0^V zHQ~zH)|Wov4A(WT{eE}jBbX!W`{a4`dr`*3B$@+YsUU%MvYF|AP&kS1m&0=5o zJ!*L^8g&(xy-lq-iG3%i*t_(tw`WYN3kZp-vadsDXzm|UZ(W7K)cGGo8v(EX6Zziy z{}}d6ylZR(hWSDGuTt<$A@8SW#;^bUKea!-5Wh&{S6?1#bBU8r(7IWJFWJ)NIl6)> zuthtr+x0eP6x#l)G=>}@l-K*JCEyrh#%AW;V)$wxLuU|WM2fph9HWLl)(+K&+ldhK z;#9zAxiAxey)%mC_m#aqfuvIwE$RGQ-Ip)3b>w1AkIjRRfEj#dvpmxQ^t`bL{o_=h zok(NYZR~BbLi%{K116u5Ka{wAQJayq*JWPoV{?Nf@AfX|vs)4s7FFSyQ|f_)E`rC2hM>81+vl9vJ4S{7 zY^q!|oVTtZVyj6hV!{`vx73a|1DJ=NV>%@7aPKxB;##(3c6S$UtE3U1%TeZ_-X1d!9qH=D9 zS$~LT$Zx#qg|Z?m0&Y4%>|dpd2-=u1c3mBS7UZELXM{cBGI0)UB(~5fE6m(;5F70O z;4a>d^@@!*8(Yjo(_VK1uBxa=%>9~;b13h$cEzV!D!P9;5F*k=5kxr`h)T1XJe-n9 z&P?Izv0hFD_m#W>y~(|QyW2zCuGU(sgKlf|DA4i_?)NisHeSqx9~cn>5w2PEp1h5E z3c-<3Ls5aeBr_oVmu6#yzxmc&Me0;*($82klgddck%bn=x*q zP&kVCn+tz!=^RkkG^;N97|yk29OLDrNUHNS-Rx(@wG9S5WF1<5f8rW0Ge#(#QMKE8 z=G|jK9^g2IP}kh)#Twc-_DT|{%sq*3KtN&ICl5clYJ22dmQk~< z#pxvM8SysXH@*1eA`+`sE~m~yJ241MZ&@)oZ>F4Nw~o%nvRjH2o8 zC_gnIYx)Q6L*#jGD_{-&oFv_(Y7IBJt}PJ@tVuog53NbvU7HrcgmqP;!@Y5(0dTYv zi4PzkN+$knHxl_matt&*hM}$|eCi;mxA0R!UAIxidc^u3dM#=<*CtBmj>=3UO6v^z zNRXg#NBqvZ<-Sbib7am)4X~Qur`j-yKebL0R_fDi#Go+7TmWDqB68)EP9_c~5kj}) zsyj`5sE>}tUayiV?0{K^XnXyK7PehnDutb|O~bDSu3i_qtotfrOS-JlWXIdsH$dLa zdGU{E9ErwhU7jDsqef8pl9ZR^O=^4ZL6>ZnnSX^Y-<+DLD0yPBJT4#C?(BQxR@GpOp`3WU&q*2sse*EGW8Ee`(e zQg6^3fwntETK_FPD;Ebg<$-+M$(_Zi5C3CVig)r#ugcU>HV}SF*vNGoZBmAq6c6+O z5lj0Mo6|^TKA^duvQ!J5C#oqBD)GxF`*La{8_#nmorSUpgQDXcxzihdR4a=}y}`jW z&g+CJbd~9iq`q49Fi(ExD#GxXiA(_yAeD+U-x4!bhS7;w84CDYtEf)yz;%J-Dw&go~vHA3a`oz*~5-a_qVPV z1sP)zE0hG9CdosQ41kr|WStN$*VSlg_f`OwH9Q5ASn+lD}Y5(M$q2iaWi+}A}MOam;iRPdL zCThnp{I!8|J|9a!=~UQC=aQZ6$4V@Qn!J|n7p^xV7P+a883Q>ZRwCvvQR;x5p*D?J z^PH4{2U}54Ufm2)sE6vqAZCxh*)#((zUl`+fFiw4WSn_m62jlWQPP}XM`_H-0;%`} zs##uZaU3<`$}5sbFA`Z6bj2i+oQZY+)_QA%X+KDN$VKIwr{FrvWrbaYm$1^$?0G{m z9Ik*!cr9lbm07iUubQi6DdvaCG99!cifrG_)a+;EY+84p|Lb8+nxYQhvBJYpv6y5^ zXWvoco!>@Fv4QT{iZeeEbR}5M3fSfgeCJtIy~9dEiKkAn`D$Sx?CUTQ)aZW!Pe8E0 zQ+9=?g2h3W@UpX8z;?f989kAx$R5<(-n5dB#>F5uFFMW#E&8X7l}?)l)MQc9K52%i z8b2YNE^11|9*q+)KH@N%jSn$H+%d;xZ2Y^H6Qs&ox7REkE6#eA!^h0KB9GepRXhwa z>cA$O^NDuXPY)k<+aF`KVw7ph(4#P4EBl38y>iT`!=-{IQXeqXM9u9>w4X` zU#Qn@&Cy}FElB)tK=`C)kbG>wQxSC?fXMNLW9ktkhf%7TY%6YN>i2s>7$v7}LvBJ& z0r0j>P|pcr#|Ca)K6^~!C(6jyHc*X?;L0|lUx&hgT$87E-2xNg(0 z+VZk(zfLdP?yu8{qnOrj^u6i}_G+(Kec@Tnv)F)SQ6V!~HbS`RjbGyhLex~q`4S+O z1v}a`IczfSlu(SBiilt58RhKNj6waCr;S z6zM*$x~n|PcRlxMk9x{Z^^=7wyNp^N`JQdc&0_z0LWpp%)~d?QpUOL~>=$nJ%5A?C zSC-BG!Y=S8gEH6HphuYK{f+O{8%d5p^56AOnIwj(?C)b*xvDZobWhRwx7}_t=ij$` z)ai$b>7y{ZUANT>xBW_9xWBHSYq200hTO8AYgWW10T#pGfd@v?py&aQB!xp_E0sB> znaBKpP%_cd+RuWoz}80CWZL{|Je|K)4QKko8Qnv?RIl7$s0g5zvni!rKt|TXqX3a9 zrtvkWNT|?#Z~nT(AtBOuM-8fk<=&VmUT(s?1;Uc!tsRJCNsf1Q}@?y)2 z_CSRuntvX!Z%Q{ST@oxJ)^^^h=%(KIbbMkz1>ct1l%u(;>Fg)xt|(XAMWr0gpXR(D z&c6{S6`H8vz=wJRxx|;K=Gsub=Qx9t}Oo{jtK`ku-N3It^iKujQRu!UlCjbS;pqe)I& zAXYr=jRhh=LF{*C<7^LUV9KRMWr`ure&PVt>$dGeUbpQR>U9>>LI-mxSP<}O3k$gW z8L0R~djZ4&0i5~P_x+x*@&}mJbHhJ@KDW#(stRyam)bWE69Z!(s$eGO4D7yMw$=I-!Ky>6=)Zrhc5;r_ZF{lVeld!!@KbFYZZ^GH(%Tbg&(s z9spv>Pi?oxV@(Svr8aBl@xr5@*w{{c!Q^&aIyJiVN?gb{-mW}QJ{mfLDkcET%hbeR zPCav13$}uZ9sJ;U*jZZ_2?5C(YiPDjUVWL^7&z$0p^*4~T#4423vS;T1HvGprpKCvOoPAn@KcM6 znS3&Fy|Q1p)hoCC(%5A^A0{5ie*!|{b^rkDD57q46$~2ti9B>KJadh#%gaT9-udhw zi~|AmsX@;;Fprb#XHQkym7Yvb`|G;M+k)k)s@5_&M`R6si+U7L znS;1mKcyoDlX|%zkY{s}VaS&lk>uO#qxyT3v&WUgsITW9*Gu)v(ex|MH{aO!5%ocx zT=^ekgaV&boaV({z(dKJ`IUe-omQEBl4peE?K1)hqWG_LuLR8WsiD6o$-^*DaiH z(nx%uWt)M>g5q;2E)x?9da#&gTH{5MI7m-1IALm_`YGp)>Y;XRk*s=esd;bOTr2v) zfyY9XvddbVEU&z7w1r-G6WA%BcGIZ@#Z1oT@E?o`z1IaeUk32Lyz#pmC~-8lDwIfd ztnEM|ndE}uA~cH!{TJTP+m05cw^&243fu4W9CZ^Om7Xbj$szQv_z_;$ zFYBmJ@jP*7cJFdo+$DIHnQ?e0Z;wGzQa#{9M-O^7!FE4TsA|@r?DM094W*t{R(m^5 zM4W3&RFt-hO;y}bZfRv2-083#A(a8>pVsCD?l(+oJ((*P4S%zZcr7yMGMj07p!Qf? ze!qVMRF3>r%l_q+sd7vcwzO*isS=tx)?b6V&$zH(r*Y{FFcfCS*u1=50Ec|*i2;**d}cgoKem}Ga<-ar}$T9wr-ffK44@i-hD++U5}RW=p{Ii5mb^~!C(l&n}P zG9>ZN++{zBc~RSS_b=*5)s&j*q<7P{Ra<$wk)#7gjUrkJc| zYo8q_@*VbaKz^{KLY+sHFe(xvo?^;*CD9gb>Q>Q`UR&=JW>VXQU9}nhQTuJNb9y0* zWYM%a7^+2a6#cLPsIqs<1&ZGL^dF2Afq5+-#|kXH+}csDZu%_O3y)$23dXMuR_l(> zatBO^szR!8TXu zNAi&&qnGNH`wKhaX>d5sER!YRA(Ej31ZZ2ABa1kayf^!8 z4?ecJ_9N^BJmE|;;r!9e^;*4je`Qy9rXmj#nGb+AV{3H<4mDyvyyy0z2a%O6X-TY5 zRhX2k!`EJ$Emt(=>CDtI*HBWf9=~_BQF!V8${r+1%r9nc`2wC?-+oC@I?Tf)epD1T z;-g<0H1u-w$5|IQN|%5cmjs2UzXiq@KWQ9*$C9I^^D~KCA9j z>V2bvYgcXiWqQ^AqE02}2%ieBS*{fobvyN83`>9a_P=AnioDEaqC(62Xy8so2e-mr zLWc%!aYw1f8K=~M3X=u<4{>BvlFLPd-rK~_*MGeeFZ-=xg1okjK0n?!N4d-B$6NMeQX!)4t+=QcJ(`Rkm z8GQ?M6o;bPvZrPg?+8H>vnLM5@gYu?e=baj5gZUa$V7tLO_3y#mXUpw^E*OTlBPXS zYlA$$n<^P&M#QIH5@2cIM}|b8AdK>(4N7zqtb+q$AQ5we#$=s!x}X`g?CsQvK=q~h zIT*=Z@gSfVkXI$syuR{mlcE~}15;Q=l)1E+cq9g@HL4jdM3obtl`y`>ZcVdKfF&9# zio{`o;m;4NErQBJWxL~`A@|TMW|X+flZZ`njk}1L$=vCWo){rIm59W)8if%68`W{} zEl4&i5hZGsMQlY9tZ_%k!kv`}Bpsu&{zTgXgxMi}-wKT!TAD(Er@9B+1kyMa|IDBf z-n`>PQlKCV3?tac*ug(V~L!oDEm?1rZC_1gmPU01<`aNV|0hGj%*?9CCD3&Euix)yiG zTgL0*R06eErw%X^nBTGmXV(Kk7J?V68@Qw(&X2mTp)_W|7>=-*LCNDn>{}G5tlarN zU1EsBcPe$qWe&aO>&X$A3#(DI?mV!A?d)oJ6d(~-&=Fh27uiD}a5DHswu~K6vMYz7 zmg?mOU$Y7k0hMB6%3C$aL&M}4D62OG%KRnBjmtrUk^<#wDri$k<>h~9;`;s%4LtJ zqvjh@i#eorisYk=OtDIjpO~ry?V$>jZx%N>L~87E;nJ?P640UNrwlnzE&EhDB7 zZ69=}TfRLAYTG4|r)n(|#oSe4x3RgzMUgvIeVM|R59G>paY$WXRA*Z)^s21+L&irj z7+~6oaC({n;#w^blK8dXP)%^lSoYp`m#^<5lM)4ljA=CbL z6mPHDwA7OGJPCNz*}f`n%1=d+2bQGctQcd$xO|*@>It-Tt2^>J&HEGS`SYdN| zl2}A_pBdyvzdI}jI2jK+V@YZb82xf z0SH3tM?%GWkkwUkI;LJnQC?6LoZi_fw01bBR$ai1kQ;`XEjw*EjWw_!WfPl| z4In$UT9yr=pQP3p*c5Tj3(6FoINkT?7s!;z*hx7y9e=mgE*XwN@gMP6=RB z2MN0tBQc8quU7M6T9%RqI@e{<&4pHl)ASK|uL~K`8C_D=5lb5ljvIny_-lDOASkka z34?8@7)vUZ(!uoE5_>iQgF=Tbon~`yo0K;!JkUJ$2nGeVc_rDVHjv#LB8tY0@@ZKj zihAcWWFd0Y&}mo%4+K6UOf`46N{KZZzSo1hmD4+=$O?Plyzjo7l49{vy>fry9vV=r zp6OQ4bZ;4*slLHPG8k>j&Zz)Ir{v%{Jilrzqt1yC+zy2DmA+vsX3AP!UQQWgatBHI z4u{d=K%06uV3xGHfohZ2NKkfZ2{SA2qPF<4+Yte=*LsC5MoL)@3G|+){vZk{Hnd|4 z4>h!7=|Sm2l@(1q-R2GLs2B1&qTOw)tlsP|>mVTC$|7uo!32_p6 z2stc=0t(_Mv#`ky%cXMdv_?Ap3GAO?bQZ8a)XN*!AntktkkGetr8;>8VOGK zq;XbX@?7{*uiN$uPve(G#4WcL-u0*_QwwERwns;Y4y${xCH^7i35*CxX*?0g(J4(HvpL?7V-u*DMgcaH^vk+eQ)va8IVi57l?>74gw>J4QL`vi zrXX*^NI2TN6j~daKS4$(D6%Qn-eAibjsE)ZY$9qtS6fqhb@`DsAtr&iLk}_nE>|e& z;Db*t2I5o>`4z@+Il;TC&pWcgKiA$G3QY0YaGZ~9M@;TLdOqOc-E(0?zg(nG+jD$+rqZ=TC;(})?;xgdZ0Er9L_4_H>s++2?0^x?d+j%xThf5djEUO~2L`}E zO8(l};$Uk6!ZRQCx(9AF77clIj^JvgZM;P^lHn^1y%r;~>n641ImxivW*Vp>TALkk z;}8>U7Dh0{8#S_eqoRv7S_W@4)}^Nl!VVt*E2c&q$ZX>&d(vn{*d!1u;+0id-l}iC zgonf^BnyQ@ zgSuy3Y=DF6BCsP;P!xzsG`7_cF)SaIEga~OOgvG(1Uy1h0PJl)i99NMcg>rl)?X2@ zCj!~6E(wDRU<xmcRps*@rIM5-@0FQ!= z?DdnUkVi$q+(;P=7lgns*Qi*rK$&J;?ryBnjxW~iI}v9+mAp$=!HzzV=l)iaM?sAv zr|R}ihn1{(mAKM*)DfboK6NTPrF8|QF`wqDaQJ8@&UAQV&_gblVM3M-y*jutHNbf9 zZUXT%tS72ZrlFRzjDZkwsBN5@nRfjCzTwyb5VpMCwe+KvtQ z`kwVO!Ir1jiuoS=HjNyQWEQqHM;gw_(5mcMTpX;xYdTcJkEdi<*@{xm-p)o{9e04^ zvLM%6_w@KoX7L-`sSEE2OtFpR^1>U+8u0>5y^#Zv93(0Gs7w=)62OmRd}@G&WGA#2 zOlw$CmA+0-;ql8M+9>qyU5*@&`!*~4*+kl|)ay!mCuWS@Xv(Z9Xdl{i+|y$uGOol| zpL-9EtjxT0Fmr@!uauNUYztt@s0GnAY3paw1SJ0HA3!PGCEQkXOL@ zU{1)GVZUqUUjvAHP#cA~&=dEwOz4lq0ZJt=rBc!ZOG@;IotP84*V;}I4@$bKl_zn$ z@uBJ~ooZ*B!^Co-+FC(HtrID1IPzSFzR8)K$;uq!qdy~ORg6sHOKTks-@$8-YROjH z5w>(?OK;rGum?nS2`9XP60EX)!XeKylVFLn9}AYx3K4`V-y@3{%4qM;)B8aBpf2M! z2R4IaMQLs*MeP+?TaO7HdL00REx}_rQTy>7i19QWvxt*n(Q+D+NI{si_L)vqRZb1J z-$D-Bg72y>Qh{^OYzhW!r8d)=EoonoJl-%>i9>8ZSO|ZEaK_#`j^13kfOZVmLjER! z5FL)7*nsnMAZ{td(>X9ZM(CFE;zw42^cj#4v#>kv)lh~vWYgd8G7=yPghDZe6*s;R zqhKPG)RJW^mW59ac$4zRy-E9Kyh$di62sQaPyp2u8en_8Em&#Dz*cN=w;Z)q@py}S z(1|m4Qgm}@Gfk^?gD$Wm30ep~nW@CfsjH#Fd|@sejnePgOOt`xZV6H4=ZFzGrKkry z>N0|cf|7l9zakctC9TcWhQcVq^{t}9o=(bVGUt{)C+&1>Pv1{sXcqpBY6dN2tUb7- z?y9oXJ)1qmcJ_sM@in1R6KT2Lo_bc~5GfZq&ZQCVv)MxHWDfjoT)>%p+ahy z!eA+*-43mb$lMrCXB3>8{yh>8W)Cu#gz=Qn2E4_#tr|FJ0k-%4iKK9JH*I>pGdcHS zI=Xe{eXwx>m1NX9HSO`;3V*MZu1B27H!=PPlG3a_M{Ra!MLf1@XSwW8wtUN^l`d1T zbUJm%Xv-4`A}4+`f^5)T(giAM$MIyA$t$0 zra`?$-+F9EuY^)=I7vDJ=&0GsVOplA*PNpd@nzAw+r1Q@17#WP6n0+n#EC(1q7A2- z3`&ndBRy%*c`C9uY^#?xOvb0QpmX`q6vRWW>WX<~X6F5NDwU6@|s443@Q%lH6Yz90|)glbi%o+t#?5NwA(Soa~W6 z#z{gkd&QgukwtBcGy&(SHcz@TdHIHn`uFEbhKR0D8yLyPzHv{|O?i^?oo|2O-@ccB z(C+)wPe1c_eif7d?Qhkwq=PAEKUX8Pdw>3y&wu&+=g)un<)41}?^vF%fBfbT+`w`l zU0wA;zdz@Se%Z3y*gWm$!Ny_=BJV%N&&_gcdrOz`@!Pds@syj{?wOhWu5)oP+~Iql zT9359s~tU$ds3hG)sc&SGHww6TzQM;86(zK?D#$;_n*9x1Ni&sM#s}0+=R)q$(sxo z@T+4Nu(0m+_(tcZpDA{F8SY3TrK6VfDb;9N(?m-g4-nhv#@;wp@N~X#Duq$S8y%VB+lPav9$; zj0e~4Gtd>8aQ<$ygHxKCp-F)dxSYJ>^RVs9A8rkqjlxWAKRU-c_W&Z>j8py7&)@5D zpuc>(|K;vTR<`^g!X6GcJmRL<60mz{zTn6)arHy4kMsmUBnuYGqX*ps4>%KjfwckO zs{lHfZdj+A0wN;%U<}=42xfd}9%n)n-fM4Y`sFuF!NaZ9F7~ABS!x1W;9c26u8gqQgwAnQDQHnrhHz5H=R`K= zrNf^@2FWsII*({z7C&Tn8V<lXv!|y-eOcAj1!yiH`B*z4&Xj zg2&;JV1hNqJ_P--@ms$S@Y(~bo?Cfw{{?)F_@LueMR;o+Bz?L^s?B+YKt47=n84pOmGsU!eh2=dGQ>kX~}i9mLcWwa`&rhUPu$Gqv2;(9zIe z^|vK*d8mOcB+xH)W>{!xF3xkvEuNGzG0M@&sxOuZ11TaI4}6MqOGZXGWyHxEMoCJZ z@2p)YktE(zC4v+T59fzgxk}D7syu*;Qv2|OqeR!VbkQ>4){ptkRWyUnTf z1coh^7D{AXDQqRM@o=yWU5o<|)wdpo?zzq7Al=FgtT&09# zF@n#tx+H4nT2%eHPEH$@)%eguVVPiPTSZf6S1~Y*#$-d+cE0lWI4^^bMide0Cj(3k zc5Z-}ZR3^1f`R-LTf!ltcPQMqI1F@aH(LwrEaR~Vo`bk3H9{xcC~w#WeqwuCWY&}E zwa?k@GHahbTBafbo6&g}#kd7wcH|5UJDu1-eYlLB7Xh}$nOaQC7LwZwofvFvWoMS0 z)B&x`ht-qh7fz|=k}J|FT#UrUi0oK{Q|csEy^Zn|pinY0X}*;Md5yHE&irMS-L-)3 z78lS#Ln8?_7WPCy44ZM z^_4(mKem-HzV+|aJdUiTG8wa9k=taF37iOrMZyzWAnPlDj1}k(nQ?9{vC$uxU2S|L zgv!d+WP@iKc@fKkh`8#G{>FuXn5CaIk&rLj0}lW(1}O=zb|X{U99lb8sisshvuyg(*%S>zR$5bpsOe!d&ZR%ntX)Rta`rcV={F=*-_Ylb7)o*XT~kPVzt zqN16q;(2he>YpN*I+0FhB`3e+rYwmY1uYaG3c^5NN^c#8s&XIZ6DKeNeq{gHFC zN=dHcP4O`d?+*fhm~t!S)goGMvm<}un|3SRn{g|*F|feV z_eMnrag23BS}D)*AkTX_Ps&Faa>FwYH%OY;Ku5t*vEvAN%FQm9n|m7Ifi%QT@)M~z z0{FK0Cu|R=#-*KYigE`_+IU$|lu&SXXTm)JZwz#;ltaTd%E<(bnmeweKrdqv&TJb_ zv4Y0J=Z0!#YZs8#dQIOS$J!mbywVOsAv2DxVgi|bu`(sM z$rZ9;izyHW5nKj#K@$>?T8Ij)L)%QP^J+~oNWPI+<3C!ML>?cDdED3j$cD>m zP)@U*Q|_XXJ6RjVl!3gpM7A&x1C%os!fAtx1R;k>mkwDvIFBHR3Y~R4f+S}HY2TLw zmLe`BgwNJfi6O@{%?&1}azb?q45v=r8o-?ejciKq1CG)GS!~g7=z9Om?rj&&q@XRw z@v5qO=uAooPi^+Ad$cG;&m;tIxB{i0Nyy>qnUwmOWcN+(=*P*Tz&f38)OA-Uw}9}0 zyec5FCypgj*;8Ch>oyMu6sEs1hkXluPo7r&yqgpN*^k=3np<47AgXrpcM@gId#aa&rupp5JkAM?szKb%PRk6YSs*idL>;LZ zZGi->s^sYrD!!^+kebXeJ&l)AyUdVf%yCT-8JLlodwteRi{li{j(*Ih$BwISZffv@ zQ@fy^Xaj4kHJTbP56DOh9;C~Bv^=6y3zkQmFBaIy5;!hTgbFFmpB2AGPw}Q_M4Q8@ zfathuMCTU&^=am>*EU_uWZr82ig6ed>RbVl&+5Xd*npF-nZKopjhuDO{Eb=lZ}gL@ zW{UFcgBtq}v8TNXV!kTTt1Zw5Z`)V(PeIJ*W5oO~|NQx1ftdf|(+ZJ)5s18d93p=X zx_uKo-tUpywbX~;@n(8B*F)p`P$~j<4!=sDVJwX06?FHhe(OL1p^K74l{50)a z;is+x@}tlD|J%EkUDu85`YR2OC86GrPY94fkPL%H(C9dsblQO7NoGc-4dh!KCq@VE z!2Jv7{!#W?yNaSD>P_lM#|H*{FL@=ARV>zit-aQH@SyyqZx%PcSnRT^$G$s>sz*MD zl~zC!-W62ura?RvWYj9qvQj8u(vV&QB;+bqNY{;8@XN+&dN47dhlY(~I>?dqz<2m! zIS_?fm%{1Dm0IhXJw~X`ycd&b3CM=X^0#XIAg-^n{xcfF>%GvfY4oz+1epd9qi;o< zsG4Av&-uXZwpAT@NyRf^@&I2d0LJF~!CYn!Pyaad0O5Gl+wHv(GU>0i9 zWNG68P_DaF@WX6G*biCq&b5L*X>pCDGNmNIWc`@b&My-hqUz)_} z0Kb{}j>OVfd<>9W*fne8b4d{WMjqLW0kH)CA)muCqXTya>YJ%oK_Id1GAmBWPe3sO zWH1f-3Y6@o6|7uaPbeFxvW;tbRn%dOzFj5X*#MKC(vYTRNKw|}!pKPt2$hMhGo*K* z*`TIkQ8DP2R32pEat$5OIWZB56A^ry2DjI+wat{8Zc1h2e=ds)*OV@1*iyLlI#zXIvIzo~HxWB2yyLBpgJtg(qHLQg zpo91iwSz+w;wli{id!jE)I8-JYn8E)@hQ)6C6Jxnj`9JZ18lexZ?#v4vlO%j;ghE` zcl99Mg@c4ClKVr`K0_CA{#fD?54jC8FpH4OnL*wX)8R73fI6)b>kDD|z_-(k73q^c zwQ+F~n3N1v#M(M0j8~?&dgNJJvPx$BbZhI4L3iw;gn7`k25*05W5>NnD0A>QE81DG z<>f^mCu^pwgdp9i2xQgnTd%NOd7SbbvDeyDs@7M>W0aQ$L$cv@(K;p%Ha1j5Wlu=# zLQf402x0*lHiE_0ofZMtu&vTPF+86ctYoO>S&dZ?cqROlZx|*Z1dE}2cMGoKbf~2c zJJivNYQ$9{(;6~F7A788g!bA_b(rQ9v=x2tNoXHy@s&e7hB`AVSUb2iM;!^SSfC=v zmTH?)A=@ZcVsC56SL3kGhfrjgjA76km$7<+X&Q7qD5wRoP8p9CG@wY&C?6w+3VB7% z)?lQCeY`4f*bCs%x>f2LjNn8us68j8Vsy$wn5h$b7pyAHY)IUr4asdFsVQ4RFbe_k z>fUJwmv`~hNF%roLG7NW#|ac3Y)Ndkr0O`W>Eje*!*S+w(Q(>bWbJ62Bm_~g8hrPnyK0W793YTL0O4`$X-d4# zRU2B5XKYWi4%j5CqeMzJTqZI23UA!4=ot`}Mk)__gh$A_xowDnhaGSvCQhuuf|~Xb zOdG(=0>1Rw_i>mQ5WAY|mg1!a!)Wd!EWU@!tmc&#Q9Iv~Pui;6f^InR#m^gv?9B`E zo=9}nRx`3$S-eA!?vG9l3_n`qRdfRmDG>K)230c;Mruq>PsvYCj!k`_hAsSP?qZ^( z_Q^p|P&Aj)CI^{m&S>70le2SM1Ou;)T@A_%fb3=_1->p7Q0*bXoLZMFVw$K$xM0Uk z4%BhN47E+pYXhYLPFL5CL&Din==s>%LAyLWuqux;uW>2yOI|iVL;JLc82>E zF*`o`x#OObZxy6uTGmW&_vqTe{_o*^`04iwworUwrq_?J9l&fWy%V+`^CrfVKv7?_v{-F@+NYVu}H7YcyjAWj`%mm4qnFNEo9_Bsjei_9S)dBbrR9K^JmZ zBFutKC$oO+O<|ZJfL>wEt@gP{M5WU35Q0X1MRuV&q8$TeH=2Plk;LI5y{zS*)?tOW z)wvbLO!!tYPl{x)vs-V%vhHJi8|0fuIHLsv9$28?90r60Bhr<&wrxcmgN@-3(~Pw7&)|! zKOpWTnsGZrAf55_iKFcWF7iMi$C-N#Od;V}Q_a-TJ>ds!UO`E8-#-qd*R7nJB|ZRu>%$Bt5U<1yNIw=+48FE8GzX3P^czG0fw#A$`C zo|+o3n~qFPR736?m;`;2Wn3e})Hg$J2Se_Qn>~C~9|eUL|E|jh+(g5b4q!U&06L?SA-ZesaMxvVkdqecU-*BR1_WT5|vAEGxTpX&`Nduj?lfBF8) zpV%Gp_SY}pzy0v`@l zRj!b2Kx7N*(53}`zu5aR<%S9-h6wCzs`t0LjFi!B-Hnr-O5d%BQg@4JL=?-hfGo4x zT(QS~P4qOBT8Prvh1h`&M#hMG*gzA6f;ljJP5BRWI4hLrT)4L# zWePb8n7q6bY13s~kB$Ps2+9JQ1HvNU#$}TL6Na^u!|-HM0;0v<$mY1eZO5eslfZQ0 ziTKtU`@v`s{sn%(o`$@iXcIfk3Qi)N=XpG!i1Mr2WOxt912A*Ozx&fFm(vDyYAj1G zHN*s{23J4*#z;ud?4>;oGrr7jyCnxAuYN)XZu->+wJgSw&5e2x`yRq#uMBtzQz6UC zkrf79SSFuRNpZGUCQiOGj#{6o>8qa^5vZkFS#D<&aI92;ZWDCk(=Sa%!qr5UY-StM z6t3N867$Hw>;+HB5Dyd PTSLo(}N!;x19PH8S(19_eiO%dFC2i@;ghj5;;o?vB~ zpo3%2L544#Cx>Gw-C1Fxuau*oD%wmz@`PDuZ2$GxeRt#k?Apsx4{ydYN~BJSxOT0_6GLos_4C1Rxvuej5MN>7`bn0DM69 z4z+_&$Rn2(e7ip+z**rHh-J!VzAbLD8P2iAlY+wyKzeFJu(C}8thvAHKvv{dCA0$b z)TRx_F9u(3wgKg-23UZ{$adJ9KY<0VM1G)9c{nEObZyE36C%2JppMr`kq-vtD2tP! zl|E0mVxHO;pp-0aQpi(^=#xsZOd(;V+d22S=bS!gQF0P2lR zFloD39Vw+{YtDYxA%J_Ex2u)p+xbpxYCSnNgr#CP;t-ae9vRq=0p0g*dT8jBLV`-W zRVIg~87k_Yq?=H1rxR2Jby=j90G7RXgoa{I5!A@zycLKlYo%*5HAW)c@Bw=xPwn}v z6^2;m_r#Uacdh<;y^mNKgv8Q&G z8mII<<4Y6+NUTGT@?fb#pJZq!I(!Eu9A#|mA(k`OTNu;fI5X}pv)>OXF^h3J?an+u z(8xwe66r=oEm72KlpYH}#+%fA>Vt72*{n=5A3^~c^u>_<6mqMdD&<*+RwlojBm+B=F!NW6O6lXhoD32{c1 z&w%h!l^wNl7xlO%qh|mF5pH^nh7TL`=&4)uovI?#t@X8D=G0(B zGzL~;7`yVl8@lJ#DzJFe-I!jfSm-2QHaBiMr!#9{;+G5hriOTz*9O;K)^}C$qfX53 zxuK*6E1Vc1dbPn&U*s9rxt3|lhYn7nVXWkig6bC(svu~ct{JGpj*DBtUGY1rC;$%z z{5ie3qF1@;s+~0c_hjIZqe3YI5x3PQAy15I(^9x#n8*TG+Xb=;+M`Py=jA{*2e6Aj zWyma+rz3Y^9P&iX`vLICOWa zGUulE9Y^|uOoi_`+Agv^*jHiw;gn>}cV$hgmKZO4kQ||MP-sU#xTI1VXIY>q0X(&x z_Ey(Xt|pclJ+A()#))$10T>ims1r=vxO1~FDK z+RJj*waGw$H3rLxXc0X}j_rk2)4M$Zm>SIohz1hc`;)z2nc^_mH`MV1p`;ppIK?1% zG#43tC*z@_>XFBXciJP+F!k8uV_Fb|Rwhli5%||hzPw&5KqS<81yvdH%D-A;`_+vA zb-xkd?Jr;c^X*6eddL0~iaN&r?@b!ylbI_vA?f_=&01vrj2dClE(Mvp&Uu>3t+x#M zHwR~0pG?wZ9bgD_>%F{Fn&h7mZZ*lQdHT)@l3EU(tG+=%9L3bziK*g3saIbm2X^ks zk2)3SBHvR#o~J}0ZaV&Zm)yUZT)MBA@jtn*#$dUTW}sftA(>co@j?87<@VL5pWKCL zLYCf?N|9IGqSmg&$Td?rF=m?ocifYbCAKrD+p$6l60o#+x1{}xq(m-?&n@X)n-M>^ zqwERccKM)f%(HM+jU3 zZCqoRw))f(eBix*o`}+q+Oj8nZE7p_Rzl=c8RkDUPL)OGADp-a3hcJcKh%;7Q<81| z5h@0@it7A>%gf5O+Wc?-`RbIzG&m{kCLDYqm0k_T0;^i^-hO=h-|Nz$c4G@9t1R1qrlJhA z2|`C{6JIqO8o|jV%a0|Q6<&nNp#Fx;!MR_SN6fO0zU=w>-v{whScS@Rp#1zQ)Du^z z=H?O5pIV`!bK>`{xnYXDUZCg{nbQ|=cBu>8?riN~y~TB@dRWQIeyM+zKNG;OkfQ{l znyYO!W!A!>QZd_xaoO+RyKPtycGh9v$jX>E_tt^2WQ-+@#$smQK>A>~yAFe~dFE~8 zs>^(CCQrj7cZJJjcU`7`fCKZJzy006fBh|;vhV(xTh1wW$wjd+@d{aBp7{3na-#kC zp8FNVW6xtQsolx{c6y@z{_Ed=_q#v->mR=U&DEUz)<*H>iZhT5Kv!x=C8bzF(rwU! zm|YAK(A2b`yAG)D%B8${T9vQu4BPY21sBY@rRR=w82;t$CuK0)b=+m6{H}3?O)ba? z+jyD$x$i3LafO1nCJvHg*)j|^=>-d!SD^(><6NIH9R7EjOt$`dv0H}#gL{cldOH?euyflaOC z#e%P^R?T%lkCaF<8x*EnDO*I^`E-)6;HtHC4Jf35KOTA9Oxl|aUVDT-k#bC@8riQ| zfY;qoQ~=>{N7N36gm}DC9op?eJ?$+w(zG@#`NrNCG+ph%iA}mcpIR@gNB$bj5!!Q-Hls=cEc15T(Ao%fBH%0e1#xvlVq zv9wzgTj;gCCfl`z6wGjDxcU7PE}~^`nSFGYksxcGDdp83gF~MN0p!WW3)a}tP57l= zmJhtmhp1wXflv6?h$_5i!}sbNp#IKnOg$3F1^IGp5qnBGN+?SSC5!GMi`O9MGO>&u zBt)Sx(3Y{qwz#v5Yv75fjiU`$Oewin-|?~4oF+nhq0PP>Kl5JilkWAy*1osbpB~7G zt^So>lhuP~>PsJfkLXl?`<$fub|e zNkCuxC?#`yb7de;GZm+%AN>2ke zgSvNuESCC>nUVvnu6s=Yc+xnylISp6s>{AhKEP+DWg-ydp8%c*nxw(r`HTa0&<3^>}b+>ZOibhK-4)5 zx9Zq$a$S*-Q|mf%8vm&Ai4EMP^TwsPwAFA%iAco|q}0{gU7k3BCdk;rCw@gwJj7;1 zDoJI13v=I4dJBD)g5JUI z;V^~z;Zsxio+&b`L+QFq*6CRGj*-G|9OL|aJ6_&$SXq6k@dZ>GUs<4(#F1&`J04hv zU1RPr%O-_+j0e+V)@sv9&WWJ^o)t@FQL|#m_vHO1y8KCJ^GLgbnhJX(Q)>LmF7w!z z-W*=C17$_Yp`S1npRlzoU5t^7RT9xE(|$W#_v7`k6MFoRVhkrJu)EZc?$MEAc63Xl z6WC&gZ#<+Jv(!A!n*Unj9^W$oHs5#_Ff|r%ONT|MB)(7z$UJQ9@2FH;zW27DKv5ef ziv7@)7;r^+?t!l4PimNlq646Es9=EPJC%xQ1;8%IVUvEsl;MN|)@)rK9ME3cZGlx! z3>DSM!^eUH+BNImErQR52+-rl4+IA+GmrCv0~WZ)cLfK`Hl9U7pF-_ezQ{^Sh%+R8 zH&o(K8)Xzf5KKRj6hL6zufiz306ZXlw9H#GI2mF{osFz1cnz-+h3-|)V=!6b$oa+5 z0mDn$s;vDT?p4-)+^eiRpMMBCpj{EEW7UYh@D|$_9)b>7W)>HSj%K~Z_YaO{7|t@W zk=hyAa)}5+>{A`l0WHB^+8UMUDDT)RC~wqP#|Ly{^8)yQ{Cw7imVr%&RKva5>>v?` z^1s`LJ*eo6!lJ~*w$0KdiJHO%7H5__?60K!Y1}yT)sNT5PV}!_YJTRt-P|PEhr=d8 zb@Vu7f3XdE_IcemNKbvgcUq?>9NQ67HOrl9{tl9~qev-jYN#Xg)RlRAb`P?%@kO8q zYLZwYO3!VQ%Et5l1vb3X|5O<*{mo9MNNBnq_0r!I?2u zjbC~oR!x?xIF3cz3jdKIQ@^B{l?jT_>iE7ZGt<{v`8m+|3t^CwJ$sttHwL% zkCbZC`-dZ}S{x3a5UUnA+YOvnbtJooTdW#B`w*-e1h%p046!g`HLM*UWvG5C>;yE> zwH>{L#h}XQOJLRN2g{iGP0k2TyyBOj$64ungm##@x>MC{FBbf3aA9$%nq0bsF)~eM zSPxHZp=#|b4}_|zI4<7)NDF&-B%c_7b;IFNP|NO#Xk7os(s(s(VjD0&t*31Z@i}th zk$5#w0YuD4wXFv{b9!pilLPU{?s3_E{xN8^g=TSqZq0e`@%`I1=NQjI{h9%4D&jk4 zZP&DssMKV8H>vS?_k@*Y+rIJPi38$Gz}2jM%4$t4_oj)}3Z<6VX^a9}?MKoD>>Sq8 zK7CQK=KdROZ|^pbttUol>mw&_sMXAIw_=hge7e2WOlNDn@obO9VCko?DAYXjoKDnf zp7wU{FVj5P(2iGW?!QqrTj(*fTe_RH2?GU!-8q6u(+|Hy#;sYRSE$igH;-^kI3Ps) z1=<~NKkic^riCdH$=@6np+wA3o?eC$F}lkc5!Yy0Fn(T2L@@C=zw!n&A3Fjh;zy#^ zVM>~n5V5i|SKJY~pUe3WucF)S7qRKOt6a{5J6yqToI9p&B6A343#9%^oFYTCVUvP~ ziyr+kF2tJ1;NWW9`1piMC)lMc_%Fb+9QVus$S>&h1?@%8CQmhB70!)lxRecQ8r7ch3O={OK~P7Dn113#Yr4EXAyn#>t46p^ZMVw%!`n>6jn$ndpTpmC3@ry_eS z9%7R5M06D;Bo8Sboau#Nu8LpKCeAn!8Pr!RSSlY0S4PQzs6?5}YKz``z}rgiXfGqH6>f)3wFeLRDY&>j~my#Yie za0R%5n8ptx1N2<#71ipdCXW~|`maI0A|99djh`~VpEAD-%KWC?rT67O-hQIUFMQxB zHQ%}OgPz=QA2>bO1~^M{uwBGK8%w?rs@UXmjebdY1NpaUpBR5@GaK6FkXFFuO1koL zJw3?3O}kt8TYCoi&dZ(86WV&)CHOqMSPc{cIr+JLcPc*!>M(DhPgTTGv5%Kaxh$;A zs2z!;R+N@jqOh7Nd1#d|&p?4u{#~(gV?QnehqFSzUx~^fnt^7L_=bVWCdxkT!6rP$ zKgx`y1ii4TA)$D!0VH=wWD)f!A)W{4eZZfVk*xepUU6~WN<68-JpBeu)Y-G0bb7P= zg2Q$6PJm<#+AbB<^GpccR&XP|;@@}W$uefng89-C%n90VB;v@eMJ2A43^T?wVlONb zwR_CJ3pyVj;l0M~xhWdUu;oO-YT||98oL#Q%Zz&}K|grPvf^VP=LMpBtKG>-9ByVQ zG6HxBTM~SDt1${*5=08=xn%uH*1>?|l7o?0Ei}DZ9ZZo}4e99NBfDRD7FoaIW7eLD+*hk4vEFlm_kuHoH5ha2E#4r`SCcOmO8*H_gZYpd2k@fH^ zK-$WUdvd3%vTBXsr>NibnwkbH<5t1=C9a(nr}BCp87;mu2lFYBkQ%k@gHf!mMs zn@~D>3ROeo9ioa_$_hv3l$NC&8jQj;CkmFWK>{P}Lp?8v|NOQVHzLMUi_!I=W?sz&eomwmT+{gM0#gmR@!s z5{l)(jvtpc;iT~D<87zxKS4HOx%C)qOI9Jp4a2Wla9KsgW9tHd-0BGg>GG9So=XvT zYAmoYKC}ljoWMu)*y&L4ji(XBof=1g+>$&K%lk%hk{)5Dm*>Ie?f8vyRmSyjGZ7m` z@o_oB0?u`tNo8#T#g%-?UZM?ehnorTQWzid>$oimH!BDzA#_n@Qpttfb0n3F7bkdy z?aFPfBR1!Nqv$NsyUVrl%gz8nn_<{b$j}F z@c@znyTDIFPJlh#Ms5e${Mrry;DdhYuEPfq!pOIkrE47D66X91TrtadDkxzR+){aG zg9`aA7*3+t>2Sw6HgdL%SjdqlPZeM?6b?}=IS8(05tb(E)EdgsDg+KEt4E>WEeuL{ z+k(kVevb%iX`A=!5j!%Ztr|>5R$HLaFa(oMf=RKM**|G8nYB_B@qQw9Os&SvU{XdS zftkwT^xNqMX~7zC53eHAl5KMlQN7HF0zPgG*3!cBoov`8{p*mmSwtlQ;{`M7_4hE8T92nOLBm+!y) ziM6=5zkd1t?T5D?-+p=f=>WYyRiv8@gZ02p-@?at?&4Ocda+_U53jd7i`#3W4PfV* zJCOC==QLH2a?C8@a!&quI=nhiMAW7u#ORn~vTh$+PkoM78@?^s*i@%GbB>WTDL%A3 zl>w1|%$SFks45cG19<12s-WUXa1KDe%0D9?hKiIpk8WVkQx`b3k1$^V2hENIpr67A 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 literal 0 HcmV?d00001 diff --git a/src/assets/lottie/duck_stonks.tgs b/src/assets/lottie/duck_stonks.tgs new file mode 100644 index 0000000000000000000000000000000000000000..522a31ef0724b54dfb108c9f6521747ba97686db GIT binary patch literal 18344 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

dyn1kp==wD>T}pm(RR4B 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 F1pr|t;939x literal 0 HcmV?d00001 diff --git a/src/assets/lottie/duck_ton.tgs b/src/assets/lottie/duck_ton.tgs new file mode 100644 index 0000000000000000000000000000000000000000..c642bdfdd26960fe56a8301b479042dabbf16589 GIT binary patch literal 33431 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�%V{8kD{;L9iHk&snVd@ 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 + + const [shouldPrerenderMain, markShouldPrerenderMain] = useFlag(false); + useTimeout(markShouldPrerenderMain, isGuest ? PRERENDER_MAIN_DELAY : undefined); + + useEffect(() => { + updateSizes(); + }, []); + + return ( +

+ ); +} + +export default memo(withGlobal((global) => { + return { + isGuest: !selectHasSession(global), + }; +})(App)); diff --git a/src/components/auth/Auth.module.scss b/src/components/auth/Auth.module.scss new file mode 100644 index 00000000..ab130db3 --- /dev/null +++ b/src/components/auth/Auth.module.scss @@ -0,0 +1,296 @@ +@import '../../styles/variables'; + +.transitionContainer { + overflow: hidden; + + max-width: 25rem; + margin: 0 auto; +} + +.container { + overflow-y: auto; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + + max-width: 25rem; + height: 100%; + max-height: 100%; + margin: 0 auto; + padding: 0 1rem 1rem; + + &_scrollable { + justify-content: unset; + } + + @supports (padding-bottom: env(safe-area-inset-bottom)) { + padding-bottom: calc(1rem + env(safe-area-inset-bottom)); + } +} + +.logo { + display: block !important; + + width: 12.5rem; + height: 12.5rem; + margin: 4rem 0 0 0; + + transition: opacity 1s ease, transform 0.35s ease-out !important; + + &:global(:not(.open)) { + transform: translateY(-0.75rem); + } +} + +.appName { + margin: 2rem 0 1.875rem; +} + +.title { + margin: 1.375rem 0 1.875rem; + + &_afterSmallSticker { + margin: 2rem 0 1.25rem; + } +} + +.title, .appName { + font-size: 1.6875rem; + font-weight: 800; + line-height: 1; + color: var(--color-black); +} + +.info { + width: 100%; + + color: var(--color-gray-1); + text-align: center; + + &_push { + margin-top: 3rem; + } + + &_pull { + margin-bottom: 1.5rem; + } + + &__space { + margin-bottom: 1.25rem; + } +} + +.counter { + position: relative; + z-index: 2; + + overflow: hidden; + display: flex; + flex-direction: column; + align-items: center; + + width: 14.5rem; + height: 6.5rem; + margin-top: 3rem; + + color: var(--color-blue); + + background: linear-gradient(to top, var(--color-background-first), var(--color-background-first)), + linear-gradient(to top, #0088cc99, #0088cc1a 50%, #0088cc00 70%) no-repeat 50% 50%; + background-clip: content-box, border-box; + background-origin: border-box; + border: 0.1875rem solid transparent; + border-radius: var(--border-radius-default); + + @media (prefers-color-scheme: dark) { + background: linear-gradient(to top, var(--color-background-first), var(--color-background-first)), + linear-gradient(to top, #469cec, #469cec3d 50%, #469cec00 90%) no-repeat 50% 50%; + background-clip: content-box, border-box; + background-origin: border-box; + } +} + +.counterTitle { + margin: 1rem 0 0; + + font-size: 1.0625rem; + font-weight: 600; +} + +.counterDigit { + position: absolute; + top: 3rem; + + font-size: 2.25rem; + font-weight: 800; + line-height: 2.75rem; + color: var(--color-blue); + + opacity: 0.8 !important; + + transition: opacity 0.5s ease-out, transform 0.5s ease-out !important; + + &:global(.open) { + transform: scale(2.3); + + opacity: 0 !important; + } + + @media (prefers-color-scheme: dark) { + color: var(--color-white); + } +} + +.small { + max-width: 20rem; + margin: 0 auto 1.25rem; + + font-size: 0.9375rem; + font-weight: 400; +} + +.sticker { + margin-top: 3.375rem; +} + +.modalSticker { + margin: -0.375rem auto 1.25rem; +} + +.form { + width: 100%; + margin-top: 1.75rem; +} + +.checkMnemonicInput { + margin-bottom: 1rem; +} + +.errors { + width: 100%; + padding: 0 0.5rem; + + font-size: 0.9375rem; + font-weight: 600; + color: var(--color-gray-1); +} + +.passwordRules { + width: 100%; + padding: 0 0.5rem; + + font-size: 0.9375rem; + color: var(--color-gray-1); +} + +.passwordRule { + font-weight: 600; + color: var(--color-blue); + + transition: color 150ms; +} + +.valid { + color: var(--color-green); +} + +.invalid { + color: var(--color-red); +} + +.error { + margin-top: 0.5rem; + + font-size: 0.9375rem; + font-weight: 600; + color: var(--color-red); + text-align: center; +} + +.buttons { + width: 100%; + margin-top: auto; + padding-top: 1rem; + + &__inner { + display: flex; + gap: 1rem; + } +} + +.btn { + max-width: 66%; + margin: 0 auto; + + &_push { + margin-top: 0.5rem; + } + + &_text { + margin: 1.25rem auto 0.75rem; + + font-weight: 600; + white-space: nowrap; + } +} + +.modalDialog { + height: 35rem; + + font-weight: 400; +} + +.words { + counter-reset: li; + + column-count: 2; + column-gap: 3rem; + + min-width: 15rem; + margin: 0 auto; + padding: 0; + + font-size: 1.0625rem; + list-style: none; +} + +.word { + counter-increment: li; + + margin-bottom: 0.25rem; + + font-weight: 600; + color: var(--color-blue); + + &::before { + content: counter(li) '.'; + + display: inline-block; + + margin-right: 0.25rem; + + font-weight: 400; + color: var(--color-gray-2); + } + + &:nth-child(12) { + break-after: column; + } +} + +.importingContent { + display: grid; + grid-auto-flow: column; + grid-template: repeat(12, 1fr) / repeat(2, 1fr); + gap: 1rem; +} + +.footerError { + margin: 0.125rem 0 1rem; + + font-size: 0.9375rem; + font-weight: 600; + color: var(--color-red); + text-align: center; +} diff --git a/src/components/auth/Auth.tsx b/src/components/auth/Auth.tsx new file mode 100644 index 00000000..7988f101 --- /dev/null +++ b/src/components/auth/Auth.tsx @@ -0,0 +1,72 @@ +import React, { memo, useCallback, useState } from '../../lib/teact/teact'; +import { AuthState, GlobalState } from '../../global/types'; + +import { withGlobal } from '../../global'; +import { pick } from '../../util/iteratees'; +import useCurrentOrPrev from '../../hooks/useCurrentOrPrev'; + +import Transition from '../ui/Transition'; +import AuthStart from './AuthStart'; +import AuthCreatingWallet from './AuthCreatingWallet'; +import AuthCreatePassword from './AuthCreatePassword'; +import AuthImportMnemonic from './AuthImportMnemonic'; +import AuthCreateBackup from './AuthCreateBackup'; + +import styles from './Auth.module.scss'; + +type StateProps = Pick; + +const Auth = ({ + state, + isLoading, + mnemonic, + mnemonicCheckIndexes, +}: StateProps) => { + // Transitioning to ready state is done in another component + const renderingAuthState = useCurrentOrPrev( + state === AuthState.ready ? undefined : state, + true, + ) ?? -1; + + const [nextKey, setNextKey] = useState(renderingAuthState + 1); + const updateNextKey = useCallback(() => { + setNextKey((current) => current + 1); + }, []); + + // eslint-disable-next-line consistent-return + function renderAuthScreen(isActive: boolean, isFrom: boolean, currentKey: number) { + switch (currentKey) { + case AuthState.none: + return ; + case AuthState.creatingWallet: + return ; + case AuthState.createPassword: + return ; + case AuthState.createBackup: + return ; + case AuthState.importWallet: + return ; + case AuthState.importWalletCreatePassword: + return ; + } + } + + return ( + + {renderAuthScreen} + + ); +}; + +export default memo(withGlobal((global): StateProps => { + return pick(global.auth, [ + 'state', 'mnemonic', 'mnemonicCheckIndexes', 'isLoading', + ]); +})(Auth)); diff --git a/src/components/auth/AuthCreateBackup.tsx b/src/components/auth/AuthCreateBackup.tsx new file mode 100644 index 00000000..cf262cde --- /dev/null +++ b/src/components/auth/AuthCreateBackup.tsx @@ -0,0 +1,156 @@ +import React, { memo, useCallback, useState } from '../../lib/teact/teact'; +import { getActions } from '../../global'; + +import { ANIMATED_STICKERS_PATHS } from '../ui/helpers/animatedAssets'; +import buildClassName from '../../util/buildClassName'; +import useFlag from '../../hooks/useFlag'; + +import Transition from '../ui/Transition'; +import AnimatedIcon from '../ui/AnimatedIcon'; +import Button from '../ui/Button'; +import Modal from '../ui/Modal'; +import SafetyRules from './SafetyRules'; +import MnemonicList from './MnemonicList'; +import MnemonicCheck from './MnemonicCheck'; + +import styles from './Auth.module.scss'; +import modalStyles from '../ui/Modal.module.scss'; + +interface OwnProps { + isActive?: boolean; + mnemonic?: string[]; + checkIndexes?: number[]; +} + +enum BackupState { + Accept, + View, + Confirm, +} + +const SLIDE_ANIMATION_DURATION_MS = 250; + +const AuthCreateBackup = ({ isActive, mnemonic, checkIndexes }: OwnProps) => { + const { afterCheckMnemonic, skipCheckMnemonic, restartCheckMnemonicIndexes } = getActions(); + + const [isModalOpen, openModal, closeModal] = useFlag(); + + const [renderingKey, setRenderingKey] = useState(BackupState.Accept); + const [nextKey, setNextKey] = useState(BackupState.View); + + const handleCloseModal = useCallback(() => { + setRenderingKey(BackupState.Accept); + setNextKey(BackupState.View); + }, []); + + const handleMnemonicView = useCallback(() => { + setRenderingKey(BackupState.View); + setNextKey(BackupState.Confirm); + }, []); + + const handleRestartCheckMnemonic = useCallback(() => { + handleMnemonicView(); + + setTimeout(() => { + restartCheckMnemonicIndexes(); + }, SLIDE_ANIMATION_DURATION_MS); + }, [handleMnemonicView, restartCheckMnemonicIndexes]); + + const handleShowMnemonicCheck = useCallback(() => { + setRenderingKey(BackupState.Confirm); + setNextKey(undefined); + }, []); + + const handleMnemonicCheckSubmit = useCallback(() => { + closeModal(); + afterCheckMnemonic(); + }, [afterCheckMnemonic, closeModal]); + + // eslint-disable-next-line consistent-return + function renderModalContent(isScreenActive: boolean, isFrom: boolean, currentScreenKey: number) { + switch (currentScreenKey) { + case BackupState.Accept: + return ; + + case BackupState.View: + return ( + + ); + + case BackupState.Confirm: + return ( + + ); + } + } + + return ( + <> +
+ +
Create Backup
+
+

+ This is a secure wallet +
and is only controlled by you. +

+ +

+ And with great power comes great responsibility. +

+

+ You need to manually back up secret keys in case you forget + your password or lose access to this device. +

+
+
+ + +
+
+ + + + {renderModalContent} + + + + ); +}; + +export default memo(AuthCreateBackup); diff --git a/src/components/auth/AuthCreatePassword.tsx b/src/components/auth/AuthCreatePassword.tsx new file mode 100644 index 00000000..1f9c0101 --- /dev/null +++ b/src/components/auth/AuthCreatePassword.tsx @@ -0,0 +1,216 @@ +import React, { + memo, useCallback, useEffect, useRef, useState, +} from '../../lib/teact/teact'; + +import { getActions } from '../../global'; +import { ANIMATED_STICKERS_PATHS } from '../ui/helpers/animatedAssets'; +import buildClassName from '../../util/buildClassName'; +import useFocusAfterAnimation from '../../hooks/useFocusAfterAnimation'; +import { usePasswordValidation } from '../../hooks/usePasswordValidation'; +import useFlag from '../../hooks/useFlag'; + +import AnimatedIcon from '../ui/AnimatedIcon'; +import Button from '../ui/Button'; +import Input from '../ui/Input'; + +import styles from './Auth.module.scss'; + +interface OwnProps { + isActive?: boolean; + isImporting?: boolean; + isLoading?: boolean; +} + +const AuthCreatePassword = ({ + isActive, + isImporting, + isLoading, +}: OwnProps) => { + const { afterCreatePassword, restartAuth } = getActions(); + + // eslint-disable-next-line no-null/no-null + const firstInputRef = useRef(null); + const [firstPassword, setFirstPassword] = useState(''); + const [secondPassword, setSecondPassword] = useState(''); + const [hasError, setHasError] = useState(false); + const [isJustSubmitted, setIsJustSubmitted] = useState(false); + const [isPasswordFocused, markPasswordFocused, unmarkPasswordFocused] = useFlag(false); + const [isSecondPasswordFocused, markSecondPasswordFocused, unmarkSecondPasswordFocused] = useFlag(false); + const [isPasswordsNotEqual, setIsPasswordsNotEqual] = useState(false); + const canSubmit = firstPassword.length > 0 && secondPassword.length > 0 && !hasError; + + const validation = usePasswordValidation({ + firstPassword, + secondPassword, + }); + + useFocusAfterAnimation({ + ref: firstInputRef, + isActive, + }); + + useEffect(() => { + setIsPasswordsNotEqual(false); + if (firstPassword === '' || !isActive) { + setHasError(false); + return; + } + + const { + invalidLength, + noUpperCase, + noLowerCase, + noNumber, + noSpecialChar, + noEqual, + } = validation; + + if (invalidLength || noUpperCase || noLowerCase || noNumber || noSpecialChar) { + setHasError(true); + } else if ((!isSecondPasswordFocused || isJustSubmitted) && noEqual && secondPassword !== '') { + setHasError(true); + setIsPasswordsNotEqual(true); + } else if (!noEqual || secondPassword === '' || (isSecondPasswordFocused && !isJustSubmitted)) { + setHasError(false); + } + }, [ + isActive, firstPassword, secondPassword, validation, isSecondPasswordFocused, isPasswordFocused, isJustSubmitted, + ]); + + const handleFirstPasswordChange = useCallback((value: string) => { + setFirstPassword(value); + if (isJustSubmitted) { + setIsJustSubmitted(false); + } + }, [isJustSubmitted]); + + const handleSecondPasswordChange = useCallback((value: string) => { + setSecondPassword(value); + if (isJustSubmitted) { + setIsJustSubmitted(false); + } + }, [isJustSubmitted]); + + const handleSubmit = useCallback((e: React.FormEvent) => { + e.preventDefault(); + e.stopPropagation(); + + if (!canSubmit) { + return; + } + + if (firstPassword !== secondPassword) { + setIsJustSubmitted(true); + setHasError(true); + setIsPasswordsNotEqual(true); + return; + } + + afterCreatePassword({ password: firstPassword, isImporting }); + }, [afterCreatePassword, canSubmit, firstPassword, isImporting, secondPassword]); + + const shouldRenderError = hasError && !isPasswordFocused; + + function renderErrors() { + if (isPasswordsNotEqual) { + return ( +
+ Passwords must be equal. +
+ ); + } + + const { + invalidLength, + noUpperCase, + noLowerCase, + noNumber, + noSpecialChar, + } = validation; + + return ( +
+ Password must contain + at least 8 characters, + one small letter, + one capital letter, + one digit, + and one special character. +
+ ); + } + + return ( +
+ +
Congratulations!
+

+ The wallet is {isImporting ? 'imported' : 'ready'}. +

+

+ Create a password to protect it. +

+ +
+ + +
+ + {renderErrors()} + +
+ + +
+ + ); +}; + +function getValidationRuleClass(shouldRenderError: boolean, ruleHasError: boolean) { + return buildClassName( + styles.passwordRule, + !ruleHasError ? styles.valid : shouldRenderError ? styles.invalid : undefined, + ); +} + +export default memo(AuthCreatePassword); diff --git a/src/components/auth/AuthCreatingWallet.tsx b/src/components/auth/AuthCreatingWallet.tsx new file mode 100644 index 00000000..c27671a3 --- /dev/null +++ b/src/components/auth/AuthCreatingWallet.tsx @@ -0,0 +1,53 @@ +import React, { memo } from '../../lib/teact/teact'; + +import { ANIMATED_STICKERS_PATHS } from '../ui/helpers/animatedAssets'; +import buildClassName from '../../util/buildClassName'; +import useFlag from '../../hooks/useFlag'; +import useTimeout from '../../hooks/useTimeout'; +import useMediaTransition from '../../hooks/useMediaTransition'; + +import AnimatedIcon from '../ui/AnimatedIcon'; + +import styles from './Auth.module.scss'; + +interface OwnProps { + isActive?: boolean; +} + +const START_DELAY = 700; +const INTERVAL = 1000; + +const AuthCreatingWallet = ({ isActive }: OwnProps) => { + const [one, markOne] = useFlag(); + const [two, markTwo] = useFlag(); + const [three, markThree] = useFlag(); + + useTimeout(markOne, isActive ? START_DELAY : undefined); + useTimeout(markTwo, isActive ? START_DELAY + INTERVAL : undefined); + useTimeout(markThree, isActive ? START_DELAY + INTERVAL * 2 : undefined); + + const oneClassNames = useMediaTransition(one); + const twoClassNames = useMediaTransition(two); + const threeClassNames = useMediaTransition(three); + + return ( +
+ +
Creating Wallet...
+ +
+

On the count of three...

+ 1 + 2 + 3 +
+
+ ); +}; + +export default memo(AuthCreatingWallet); diff --git a/src/components/auth/AuthImportMnemonic.tsx b/src/components/auth/AuthImportMnemonic.tsx new file mode 100644 index 00000000..843d4451 --- /dev/null +++ b/src/components/auth/AuthImportMnemonic.tsx @@ -0,0 +1,113 @@ +import React, { + memo, useCallback, useMemo, useState, +} from '../../lib/teact/teact'; + +import { getActions, withGlobal } from '../../global'; + +import { ANIMATED_STICKER_SMALL_SIZE_PX, MNEMONIC_COUNT } from '../../config'; +import { ANIMATED_STICKERS_PATHS } from '../ui/helpers/animatedAssets'; +import buildClassName from '../../util/buildClassName'; + +import AnimatedIcon from '../ui/AnimatedIcon'; +import InputMnemonic from '../ui/InputMnemonic'; +import Button from '../ui/Button'; + +import styles from './Auth.module.scss'; + +interface OwnProps { + isActive?: boolean; +} + +type StateProps = { + error?: string; +}; + +const MNEMONIC_INPUTS = [...Array(MNEMONIC_COUNT)].map((_, index) => ({ + id: index, + label: `${index + 1}`, +})); + +const AuthImportMnemonic = ({ isActive, error }: OwnProps & StateProps) => { + const { afterImportMnemonic, restartAuth } = getActions(); + const [mnemonic, setMnemonic] = useState>({}); + + const isSubmitDisabled = useMemo(() => { + const mnemonicValues = Object.values(mnemonic); + + return mnemonicValues.length !== MNEMONIC_COUNT || mnemonicValues.some((word) => !word); + }, [mnemonic]); + + const handleSetWord = useCallback((value: string, index: number) => { + setMnemonic({ + ...mnemonic, + [index]: value?.toLowerCase(), + }); + }, [mnemonic]); + + const handleSubmit = (event: React.FormEvent) => { + event.preventDefault(); + if (!isSubmitDisabled) { + afterImportMnemonic({ mnemonic: Object.values(mnemonic) }); + } + }; + + return ( +
+ +
{MNEMONIC_COUNT} Secret Words
+
+ You can restore access to your wallet by entering the {MNEMONIC_COUNT} secret words + that you wrote down when creating the wallet. +
+ +
+ {MNEMONIC_INPUTS.map(({ id, label }) => ( + 7 && id < 12) || id > 19 ? 'top' : undefined} + inputArg={id} + onInput={handleSetWord} + /> + ))} + + +
+ {error &&
{error}
} +
+ + +
+
+
+ ); +}; + +export default memo(withGlobal((global): StateProps => { + return { + error: global.auth.error, + }; +})(AuthImportMnemonic)); diff --git a/src/components/auth/AuthStart.tsx b/src/components/auth/AuthStart.tsx new file mode 100644 index 00000000..2a785ae2 --- /dev/null +++ b/src/components/auth/AuthStart.tsx @@ -0,0 +1,61 @@ +import React, { memo, useCallback } from '../../lib/teact/teact'; + +import { getActions } from '../../global'; +import { APP_NAME } from '../../config'; +import useShowTransition from '../../hooks/useShowTransition'; +import useFlag from '../../hooks/useFlag'; +import buildClassName from '../../util/buildClassName'; + +import Button from '../ui/Button'; + +import styles from './Auth.module.scss'; +import logoPath from '../../assets/logo.svg'; + +const AuthStart = () => { + const { + startCreatingWallet, + startImportingWallet, + } = getActions(); + + const [isLogoReady, markLogoReady] = useFlag(); + const { transitionClassNames } = useShowTransition(isLogoReady, undefined, undefined, 'slow'); + + const handleCreateWallet = useCallback(() => { + startCreatingWallet(); + }, [startCreatingWallet]); + + return ( +
+ {APP_NAME} +
{APP_NAME}
+
+ Securely store crypto +
and make blockchain payments +
at the speed of light. +
+
+ + +
+
+ ); +}; + +export default memo(AuthStart); diff --git a/src/components/auth/MnemonicCheck.tsx b/src/components/auth/MnemonicCheck.tsx new file mode 100644 index 00000000..d94effe7 --- /dev/null +++ b/src/components/auth/MnemonicCheck.tsx @@ -0,0 +1,103 @@ +import { FormEvent } from 'react'; +import React, { + memo, useCallback, useEffect, useState, +} from '../../lib/teact/teact'; + +import { MNEMONIC_CHECK_COUNT } from '../../config'; +import buildClassName from '../../util/buildClassName'; +import { areSortedArraysEqual } from '../../util/iteratees'; + +import ModalHeader from '../ui/ModalHeader'; +import Button from '../ui/Button'; +import InputMnemonic from '../ui/InputMnemonic'; + +import styles from './Auth.module.scss'; +import modalStyles from '../ui/Modal.module.scss'; + +type OwnProps = { + isActive?: boolean; + isInModal?: boolean; + mnemonic?: string[]; + checkIndexes?: number[]; + buttonLabel: string; + onSubmit: NoneToVoidFunction; + onCancel: NoneToVoidFunction; + onClose: NoneToVoidFunction; +}; + +function MnemonicCheck({ + isActive, isInModal, mnemonic, checkIndexes, buttonLabel, onCancel, onSubmit, onClose, +}: OwnProps) { + const [words, setWords] = useState>({}); + const [hasMnemonicError, setHasMnemonicError] = useState(false); + + useEffect(() => { + if (isActive) { + setWords({}); + setHasMnemonicError(false); + } + }, [isActive]); + + const handleSetWord = useCallback((value: string, index: number) => { + setWords({ + ...words, + [index]: value?.toLowerCase(), + }); + }, [words]); + + const handleMnemonicCheckSubmit = useCallback((e: FormEvent) => { + e.preventDefault(); + const answer = mnemonic && checkIndexes?.map((index) => mnemonic[index]); + if (answer && areSortedArraysEqual(answer, Object.values(words))) { + onSubmit(); + } else { + setHasMnemonicError(true); + } + }, [onSubmit, checkIndexes, mnemonic, words]); + + return ( +
+ +
+

+ Let’s make sure your secrets words are recorded correctly. +

+ +

+ Please enter the words {checkIndexes?.map((n) => n + 1)?.join(', ')} below. +

+ +
+ {checkIndexes!.map((key, i) => ( + 1 ? 'top' : undefined} + inputArg={key} + className={styles.checkMnemonicInput} + onInput={handleSetWord} + /> + ))} + + + {hasMnemonicError && ( +
+ The secret words you have entered do not + match the ones in the list. Please try again. +
+ )} + +
+ + +
+
+
+ ); +} + +export default memo(MnemonicCheck); diff --git a/src/components/auth/MnemonicList.tsx b/src/components/auth/MnemonicList.tsx new file mode 100644 index 00000000..f19c31f7 --- /dev/null +++ b/src/components/auth/MnemonicList.tsx @@ -0,0 +1,44 @@ +import React, { memo } from '../../lib/teact/teact'; + +import { MNEMONIC_COUNT } from '../../config'; +import buildClassName from '../../util/buildClassName'; + +import ModalHeader from '../ui/ModalHeader'; +import Button from '../ui/Button'; + +import styles from './Auth.module.scss'; +import modalStyles from '../ui/Modal.module.scss'; + +type OwnProps = { + mnemonic?: string[]; + onClose: NoneToVoidFunction; + onNext: NoneToVoidFunction; +}; + +function MnemonicList({ + mnemonic, onNext, onClose, +}: OwnProps) { + return ( +
+ +
+

+ Write down these words +
in the correct order and store them +
in a secret place. +

+
    + {mnemonic?.map((word) => ( +
  1. {word}
  2. + ))} +
+ +
+ +
+
+
+ ); +} + +export default memo(MnemonicList); diff --git a/src/components/auth/SafetyRules.tsx b/src/components/auth/SafetyRules.tsx new file mode 100644 index 00000000..9299f656 --- /dev/null +++ b/src/components/auth/SafetyRules.tsx @@ -0,0 +1,77 @@ +import React, { memo, useCallback, useState } from '../../lib/teact/teact'; + +import { ANIMATED_STICKER_SMALL_SIZE_PX } from '../../config'; +import { ANIMATED_STICKERS_PATHS } from '../ui/helpers/animatedAssets'; +import buildClassName from '../../util/buildClassName'; + +import ModalHeader from '../ui/ModalHeader'; +import Checkbox from '../ui/Checkbox'; +import Button from '../ui/Button'; +import AnimatedIcon from '../ui/AnimatedIcon'; + +import modalStyles from '../ui/Modal.module.scss'; +import styles from './Auth.module.scss'; + +type OwnProps = { + isActive?: boolean; + onSubmit: NoneToVoidFunction; + onClose: NoneToVoidFunction; +}; + +function SafetyRules({ isActive, onSubmit, onClose }: OwnProps) { + const [writedownAccepted, setWritedownAccepted] = useState(false); + const [openWalletAccepted, setOpenWalletAccepted] = useState(false); + const [canBeStolenAccepted, setCanBeStolenAccepted] = useState(false); + const canSubmit = writedownAccepted && openWalletAccepted && canBeStolenAccepted; + + const handleSubmit = useCallback(() => { + if (!canSubmit) { + return; + } + + onSubmit(); + }, [canSubmit, onSubmit]); + + return ( +
+ +
+ + + On the next screen you will see the secret words. + Write them down in the correct order and store in a secure place. + + + + They allow to open your wallet if you lose your password or access to this device. + + + + If anybody else sees these words your funds may be stolen. Look around! + + +
+ +
+
+
+ ); +} + +export default memo(SafetyRules); diff --git a/src/components/main/Activity.module.scss b/src/components/main/Activity.module.scss new file mode 100644 index 00000000..76807182 --- /dev/null +++ b/src/components/main/Activity.module.scss @@ -0,0 +1,50 @@ +.emptyList { + display: flex; + flex-direction: column; + align-items: center; + + height: 100%; + padding-top: 2rem; +} + +.emptyListText { + margin-top: 1rem; + + font-size: 1.0625rem; + font-weight: 700; +} + +.emptyListLoading { + padding-top: 8rem; +} + +.itemLoading { + display: flex; + justify-content: center; + + padding: 0.75rem 1rem; +} + +.group { + padding-bottom: 0.25rem; + + text-align: center; + + &:first-of-type { + padding-top: 0.75rem; + } +} + +.date { + width: max-content; + margin: 0 auto 0.25rem; + padding: 0.25rem 0.75rem; + + font-size: 0.75rem; + font-weight: 700; + line-height: 0.75rem; + color: var(--color-activity-gray-text); + + background-color: var(--color-activity-gray-10); + border-radius: var(--border-radius-small); +} diff --git a/src/components/main/Activity.tsx b/src/components/main/Activity.tsx new file mode 100644 index 00000000..f27d2d73 --- /dev/null +++ b/src/components/main/Activity.tsx @@ -0,0 +1,153 @@ +import React, { + memo, useCallback, useEffect, useMemo, +} from '../../lib/teact/teact'; +import { withGlobal, getActions } from '../../global'; + +import { ApiToken, ApiTransaction } from '../../api/types'; + +import { ANIMATED_STICKERS_PATHS } from '../ui/helpers/animatedAssets'; +import buildClassName from '../../util/buildClassName'; +import { formatHumanDay, getDayStartAt } from '../../util/dateFormat'; +import useInfinityLoader from '../../hooks/useInfinityLoader'; + +import Transaction from './Transaction'; +import Loading from '../ui/Loading'; +import AnimatedIcon from '../ui/AnimatedIcon'; + +import styles from './Activity.module.scss'; + +interface OwnProps { + isActive?: boolean; +} + +type StateProps = { + slug?: string; + isLoading?: boolean; + byTxId?: Record; + txIds?: string[]; + nextOffsetTxId?: string; + tokensBySlug?: Record; +}; + +interface TransactionDateGroup { + datetime: number; + transactions: ApiTransaction[]; +} + +function Activity({ + isActive, isLoading, slug, txIds, byTxId, nextOffsetTxId, tokensBySlug, +}: OwnProps & StateProps) { + const { fetchTransactions, showTransactionInfo } = getActions(); + + const transactions = useMemo(() => { + if (!txIds) { + return undefined; + } + const allTransactions = txIds + .map((txId) => byTxId?.[txId]) + .filter((transaction) => { + return Boolean(transaction?.slug && (!slug || transaction.slug === slug)); + }) as ApiTransaction[]; + + if (!allTransactions.length) { + return []; + } + + let currentDateGroup: TransactionDateGroup = { + datetime: getDayStartAt(allTransactions[0].timestamp), + transactions: [], + }; + const groupedTransactions: TransactionDateGroup[] = [currentDateGroup]; + + allTransactions.forEach((transaction, index) => { + currentDateGroup.transactions.push(transaction); + const nextTransaction = allTransactions[index + 1]; + + if (nextTransaction) { + const nextTransactionDayStartsAt = getDayStartAt(nextTransaction.timestamp); + if (currentDateGroup.datetime !== nextTransactionDayStartsAt) { + currentDateGroup = { + datetime: nextTransactionDayStartsAt, + transactions: [], + }; + + groupedTransactions.push(currentDateGroup); + } + } + }); + + return groupedTransactions; + }, [byTxId, slug, txIds]); + + // Initial loading + useEffect(() => { + fetchTransactions(); + }, [fetchTransactions]); + + const loadMore = useCallback(() => { + fetchTransactions({ offsetId: nextOffsetTxId }); + }, [fetchTransactions, nextOffsetTxId]); + + const handleTransactionClick = useCallback((txId: string) => { + showTransactionInfo({ txId }); + }, [showTransactionInfo]); + + const lastElementRef = useInfinityLoader({ isLoading, loadMore, isDisabled: !nextOffsetTxId }); + + function renderTransactionGroups(transactionGroups: TransactionDateGroup[]) { + return transactionGroups.map((group, groupIdx) => ( +
+
+ {formatHumanDay(group.datetime)} +
+ {group.transactions.map((transaction, transactionIdx) => { + const isLastTransaction = transactionGroups.length === groupIdx + 1 + && group.transactions.length === transactionIdx + 1; + + return ( + + ); + })} +
+ )); + } + + if (!transactions) { + return ( +
+ ); + } + + if (transactions.length === 0) { + return ( +
+ +

No activity

+
+ ); + } + + return renderTransactionGroups(transactions); +} + +export default memo(withGlobal((global): StateProps => { + return { + slug: global.currentTokenSlug, + isLoading: global.transactions?.isLoading, + byTxId: global.transactions?.byTxId, + txIds: global.transactions?.orderedTxIds, + nextOffsetTxId: global.transactions?.nextOffsetTxId, + tokensBySlug: global.tokenInfo?.bySlug, + }; +})(Activity)); diff --git a/src/components/main/Assets.module.scss b/src/components/main/Assets.module.scss new file mode 100644 index 00000000..61bef7b8 --- /dev/null +++ b/src/components/main/Assets.module.scss @@ -0,0 +1,48 @@ +.greetings { + position: relative; + + display: flex; + align-items: center; + + padding: 1.5rem 2rem; + + &::after { + content: ''; + + position: absolute; + right: 2rem; + bottom: 0; + left: 3.875rem; + + height: 0.0625rem; + /* stylelint-disable-next-line plugin/whole-pixel */ + box-shadow: inset 0 -0.025rem 0 0 var(--color-separator); + } +} + +.greetingsText { + margin-left: 1rem; +} + +.greetingsHeader { + margin-bottom: 1rem; + + font-size: 0.9375rem; + font-weight: 700; +} + +.greetingsDescription { + margin-bottom: 0; + + font-size: 0.75rem; + color: var(--color-gray-2); +} + +.emptyList { + display: flex; + flex-direction: column; + align-items: center; + + height: 100%; + padding-top: 8rem; +} diff --git a/src/components/main/Assets.tsx b/src/components/main/Assets.tsx new file mode 100644 index 00000000..1aebf4e3 --- /dev/null +++ b/src/components/main/Assets.tsx @@ -0,0 +1,71 @@ +import React, { memo } from '../../lib/teact/teact'; +import { withGlobal } from '../../global'; + +import { UserToken } from '../../global/types'; + +import { ANIMATED_STICKERS_PATHS } from '../ui/helpers/animatedAssets'; +import { ANIMATED_STICKER_SMALL_SIZE_PX } from '../../config'; +import { selectAllTokens } from '../../global/selectors'; + +import AnimatedIcon from '../ui/AnimatedIcon'; +import Token from './Token'; +import Loading from '../ui/Loading'; + +import styles from './Assets.module.scss'; + +type OwnProps = { + isActive?: boolean; + onTokenClick: (slug: string) => void; +}; + +interface StateProps { + tokens?: UserToken[]; + isNewWallet: boolean; +} + +function Assets({ + isActive, + tokens, + isNewWallet, + onTokenClick, +}: OwnProps & StateProps) { + return ( +
+ {!tokens &&
} + {isNewWallet && renderNewWalletGreetings(isActive)} + {tokens && tokens.map((token) => ( + + ))} +
+ ); +} + +export default memo(withGlobal((global): StateProps => { + const tokens = selectAllTokens(global); + + return { + tokens, + isNewWallet: tokens?.length === 0 || (tokens?.length === 1 && tokens[0].amount === 0), + }; +})(Assets)); + +function renderNewWalletGreetings(isActive?: boolean) { + return ( +
+ + +
+

You have just created a new wallet

+

+ You can now transfer your tokens from another wallet or exchange. +

+
+
+ ); +} diff --git a/src/components/main/BackupModal.module.scss b/src/components/main/BackupModal.module.scss new file mode 100644 index 00000000..ed1797f0 --- /dev/null +++ b/src/components/main/BackupModal.module.scss @@ -0,0 +1,7 @@ +.modalDialog { + height: 33rem; + + @supports (height: env(safe-area-inset-bottom)) { + height: calc(33rem + env(safe-area-inset-bottom)); + } +} diff --git a/src/components/main/BackupModal.tsx b/src/components/main/BackupModal.tsx new file mode 100644 index 00000000..4d4fb7bb --- /dev/null +++ b/src/components/main/BackupModal.tsx @@ -0,0 +1,164 @@ +import React, { + memo, useCallback, useEffect, useState, +} from '../../lib/teact/teact'; +import { getActions, withGlobal } from '../../global'; + +import buildClassName from '../../util/buildClassName'; +import { selectMnemonicForCheck } from '../../global/actions/api/auth'; + +import Modal from '../ui/Modal'; +import ModalHeader from '../ui/ModalHeader'; +import PasswordForm from '../ui/PasswordForm'; +import SafetyRules from '../auth/SafetyRules'; +import MnemonicList from '../auth/MnemonicList'; +import MnemonicCheck from '../auth/MnemonicCheck'; +import Transition from '../ui/Transition'; + +import styles from './BackupModal.module.scss'; +import modalStyles from '../ui/Modal.module.scss'; + +type OwnProps = { + isOpen: boolean; + onClose: () => void; +}; + +type StateProps = { + isLoading?: boolean; + mnemonic?: string[]; + error?: string; +}; + +enum SLIDES { + confirm, + password, + mnemonic, + check, +} + +function BackupModal({ + isOpen, onClose, isLoading, mnemonic, error, +}: OwnProps & StateProps) { + const { startBackupWallet, cleanBackupWalletError, closeBackupWallet } = getActions(); + const [currentSlide, setCurrentSlide] = useState(SLIDES.confirm); + const [nextKey, setNextKey] = useState(SLIDES.password); + const [checkIndexes, setCheckIndexes] = useState([]); + + useEffect(() => { + if (mnemonic?.length && currentSlide === SLIDES.password) { + setNextKey(SLIDES.check); + setCurrentSlide(SLIDES.mnemonic); + } + }, [currentSlide, mnemonic?.length]); + + const handleSafetyConfirm = useCallback(() => { + setCurrentSlide(SLIDES.password); + setNextKey(SLIDES.mnemonic); + }, []); + + const handlePasswordSubmit = useCallback((password: string) => { + startBackupWallet({ password }); + }, [startBackupWallet]); + + const handleCheckMnemonic = useCallback(() => { + setCheckIndexes(selectMnemonicForCheck()); + setCurrentSlide(SLIDES.check); + setNextKey(undefined); + }, []); + + const handleRestartCheckMnemonic = useCallback(() => { + setCurrentSlide(SLIDES.mnemonic); + setNextKey(SLIDES.check); + }, []); + + const handleModalClose = useCallback(() => { + closeBackupWallet(); + setCurrentSlide(SLIDES.confirm); + setNextKey(SLIDES.password); + }, [closeBackupWallet]); + + const handleCheckMnemonicSubmit = useCallback(() => { + closeBackupWallet({ isMnemonicChecked: true }); + onClose(); + }, [closeBackupWallet, onClose]); + + // eslint-disable-next-line consistent-return + function renderContent(isActive: boolean, isFrom: boolean, currentKey: number) { + switch (currentKey) { + case SLIDES.confirm: + return ( + + ); + + case SLIDES.password: + return ( + <> + + + + ); + + case SLIDES.mnemonic: + return ( + + ); + + case SLIDES.check: + return ( + + ); + } + } + + return ( + + + {renderContent} + + + ); +} + +export default memo(withGlobal((global): StateProps => { + const { isLoading, mnemonic, error } = global.backupWallet; + return { isLoading, mnemonic, error }; +})(BackupModal)); diff --git a/src/components/main/BackupWarning.module.scss b/src/components/main/BackupWarning.module.scss new file mode 100644 index 00000000..dbfaf4b8 --- /dev/null +++ b/src/components/main/BackupWarning.module.scss @@ -0,0 +1,27 @@ +@import '../../styles/variables'; + +.wrapper { + width: 100vw; + padding: 0.5rem; + + font-size: 0.8125rem; + font-weight: 600; + line-height: 1rem; + color: var(--color-red-warning-text-75); + text-align: center; + + background-color: var(--color-red-warning-background); +} + +.button { + margin-inline-start: 0.25rem; + + text-decoration: underline; + + &, + &:hover, + &:focus, + &:active { + color: var(--color-red-warning-text); + } +} diff --git a/src/components/main/BackupWarning.tsx b/src/components/main/BackupWarning.tsx new file mode 100644 index 00000000..bd4f95a3 --- /dev/null +++ b/src/components/main/BackupWarning.tsx @@ -0,0 +1,51 @@ +import React, { memo } from '../../lib/teact/teact'; +import { withGlobal } from '../../global'; + +import buildClassName from '../../util/buildClassName'; +import useShowTransition from '../../hooks/useShowTransition'; +import useBrowserUiColor from '../../hooks/useBrowserUiColor'; + +import styles from './BackupWarning.module.scss'; + +type OwnProps = { + onOpenBackupWallet: () => void; +}; + +type StateProps = { + isRequired: boolean; +}; + +const UI_BG_RED_LIGHT = '#F36B6B'; +const UI_BG_RED_DARK = '#F36B6B'; + +function BackupWarning({ isRequired, onOpenBackupWallet }: OwnProps & StateProps) { + const { shouldRender, transitionClassNames } = useShowTransition(isRequired, undefined, true); + + useBrowserUiColor(isRequired, UI_BG_RED_LIGHT, UI_BG_RED_DARK); + + const handleClick = (e: React.MouseEvent) => { + e.preventDefault(); + e.stopPropagation(); + + onOpenBackupWallet(); + }; + + if (!shouldRender) { + return undefined; + } + + return ( +
+ ); +} + +export default memo(withGlobal((global) => { + return { + isRequired: Boolean(global.isBackupRequired), + }; +})(BackupWarning)); diff --git a/src/components/main/Card.module.scss b/src/components/main/Card.module.scss new file mode 100644 index 00000000..289dd104 --- /dev/null +++ b/src/components/main/Card.module.scss @@ -0,0 +1,152 @@ +@use "sass:math"; + +@import "../../styles/variables"; + +.containerWrapper { + position: relative; + + overflow: hidden; + + box-sizing: border-box; + width: calc(100% - 0.125rem); + min-width: 16rem; + height: 0; + margin: 0 auto 0.5rem; + padding-top: math.div(200, 343) * 100%; +} + +.container { + position: absolute; + top: 0; + left: 0; + + display: flex; + flex-direction: column; + justify-content: flex-start; + + width: 100%; + height: 100%; + padding: 3rem 1rem 0.75rem; + + background-image: url('../../assets/card.jpg'), linear-gradient(125deg, #71A9ED 0, #436CB6 100%); + background-clip: padding-box, padding-box; + background-origin: border-box; + background-size: cover, cover; + border-radius: var(--border-radius-default); + + &.isLoading { + align-items: center; + justify-content: center; + + padding: 0; + } + + @media (min-resolution: 1.5dppx) { + background-image: url('../../assets/card@2x.jpg'), linear-gradient(125deg, #71A9ED 0, #436CB6 100%); + } +} + +.secondaryValue { + font-size: 1.0625rem; + font-weight: 600; + line-height: 1; +} + +.primaryValue { + font-size: 2.125rem; + font-weight: 800; + line-height: 2.5rem; + color: var(--color-card-text); +} + +.primaryFractionPart { + font-size: 1.0625rem; + font-weight: 800; +} + +.secondaryValue, +.primaryFractionPart { + color: var(--color-card-second-text); +} + + +.addressContainer { + margin-top: auto; + margin-bottom: 0.125rem; +} + +.address { + cursor: pointer; + + width: auto; + height: auto; + margin: 0; + padding: 0; + + font-size: 0.9375rem; + font-weight: 600; + line-height: 1; + color: var(--color-card-second-text); + text-transform: none; + + background: transparent; + border: none; + outline: none; + + transition: color 150ms; + + &:active { + color: var(--color-card-text); + } + + @media (hover: hover) { + &:hover, + &:focus { + color: var(--color-card-text); + } + } +} + +.icon { + margin-left: 0.125rem; + + font-size: 1.25rem; + vertical-align: -0.25rem; +} + +.tonscanButton { + font-size: 1.25rem; + line-height: 1; + color: var(--color-card-second-text); + text-decoration: none !important; + + transition: color 150ms; + + &:active { + color: var(--color-card-text); + } + + @media (hover: hover) { + &:hover, + &:focus { + color: var(--color-card-text); + } + } +} + +@media (min-width: 400px) { + .primaryValue { + margin-top: 0.5rem; + + font-size: 2.625rem; + } + + .secondaryValue, + .primaryFractionPart { + font-size: 1.25rem; + } + + .address { + font-size: 1.125rem; + } +} diff --git a/src/components/main/Card.tsx b/src/components/main/Card.tsx new file mode 100644 index 00000000..2b037ab5 --- /dev/null +++ b/src/components/main/Card.tsx @@ -0,0 +1,98 @@ +import React, { memo, useCallback, useMemo } from '../../lib/teact/teact'; +import { UserToken } from '../../global/types'; + +import { getActions, withGlobal } from '../../global'; +import { CARD_SECONDARY_VALUE_SYMBOL, DEFAULT_PRICE_CURRENCY } from '../../config'; +import { selectAllTokens } from '../../global/selectors'; +import { formatCurrencyExtended, formatInteger } from '../../util/formatNumber'; +import { copyTextToClipboard } from '../../util/clipboard'; +import buildClassName from '../../util/buildClassName'; +import { shortenAddress } from '../../util/shortenAddress'; + +import Loading from '../ui/Loading'; + +import styles from './Card.module.scss'; + +interface StateProps { + address?: string; + tokens?: UserToken[]; +} + +function Card({ + address, + tokens, +}: StateProps) { + const { showNotification } = getActions(); + const tonscanAddressUrl = `https://tonscan.org/address/${address}`; + + const values = useMemo(() => { + return tokens ? buildValues(tokens) : undefined; + }, [tokens]); + + const handleCopyAddress = useCallback(() => { + if (!address) return; + + showNotification({ message: 'Address was copied!', icon: 'icon-copy' }); + copyTextToClipboard(address); + }, [address, showNotification]); + + if (!values) { + return ( +
+
+ +
+
+ ); + } + + const { secondaryValue, primaryWholePart, primaryFractionPart } = values; + + return ( +
+
+
+ {formatCurrencyExtended(secondaryValue, CARD_SECONDARY_VALUE_SYMBOL, true)} +
+
+ {DEFAULT_PRICE_CURRENCY} + {primaryWholePart} + {primaryFractionPart && .{primaryFractionPart}} +
+
+ + + + +
+
+
+ ); +} + +function buildValues(tokens: UserToken[]) { + const primaryValue = tokens.reduce((acc, token) => acc + token.amount * token.price, 0); + const [primaryWholePart, primaryFractionPart] = formatInteger(primaryValue).split('.'); + const secondaryFactor = tokens.find((token) => token.symbol === CARD_SECONDARY_VALUE_SYMBOL)!.price; + const secondaryValue = primaryValue / secondaryFactor; + + return { + secondaryValue, primaryWholePart, primaryFractionPart, + }; +} + +export default memo(withGlobal((global): StateProps => { + return { + address: global.addresses?.byAccountId['0']!, + tokens: selectAllTokens(global), + }; +})(Card)); diff --git a/src/components/main/Dialogs.module.scss b/src/components/main/Dialogs.module.scss new file mode 100644 index 00000000..bb913a0e --- /dev/null +++ b/src/components/main/Dialogs.module.scss @@ -0,0 +1,13 @@ +.dialogs { + position: fixed; + z-index: var(--z-modal); + top: 0; + left: 0; + + width: 100vw; + height: 100vh; +} + +.content { + margin-bottom: 2rem; +} diff --git a/src/components/main/Dialogs.tsx b/src/components/main/Dialogs.tsx new file mode 100644 index 00000000..b0cdd86f --- /dev/null +++ b/src/components/main/Dialogs.tsx @@ -0,0 +1,58 @@ +import React, { FC, memo, useEffect } from '../../lib/teact/teact'; +import { getActions, withGlobal } from '../../global'; + +import { pick } from '../../util/iteratees'; +import useFlag from '../../hooks/useFlag'; + +import Modal from '../ui/Modal'; +import Button from '../ui/Button'; + +import styles from './Dialogs.module.scss'; +import modalStyles from '../ui/Modal.module.scss'; + +type StateProps = { + dialogs: string[]; +}; + +const Dialogs: FC = ({ dialogs }) => { + const { dismissDialog } = getActions(); + const [isModalOpen, openModal, closeModal] = useFlag(); + + useEffect(() => { + if (dialogs.length > 0) { + openModal(); + } + }, [dialogs, openModal]); + + if (!dialogs.length) { + return undefined; + } + + const renderDialog = (message: string) => { + return ( + +
+ {message} +
+
+ +
+
+ ); + }; + + return ( +
+ {Boolean(dialogs.length) && renderDialog(dialogs[dialogs.length - 1])} +
+ ); +}; + +export default memo(withGlobal( + (global): StateProps => pick(global, ['dialogs']), +)(Dialogs)); diff --git a/src/components/main/Header.module.scss b/src/components/main/Header.module.scss new file mode 100644 index 00000000..fa9b4e29 --- /dev/null +++ b/src/components/main/Header.module.scss @@ -0,0 +1,85 @@ +.wrapper { + position: relative; + + display: flex; + + width: 100%; + margin: 0.5rem 0 1rem; + + background-color: var(--color-background-first); + border-radius: var(--border-radius-default); + box-shadow: none; + + transition: box-shadow 0.15s ease-in-out; +} + +.icon { + align-self: center; + + margin: 0 0.25rem 0 0.5rem; + + font-size: 1.5rem; + color: var(--color-gray-4); +} + +.button { + width: 1.75rem !important; + height: 1.75rem !important; + margin: 0.375rem; + padding: 0; + + font-size: 1.5rem !important; + color: var(--color-gray-4) !important; + + border-radius: var(--border-radius-small) !important; + + &:hover, + &:focus { + color: var(--color-blue) !important; + + background-color: transparent !important; + } +} + +.search { + flex: 1 1 auto; + + margin-right: 0.5rem; + + // TODO Remove when implemented + opacity: 0.8 !important; +} + +.menu { + margin-right: 0.5rem; +} + +.menuSwitcher { + margin-left: auto !important; +} + +.modalTitle { + font-weight: 700; + text-align: center; +} + +.modalTitleLink { + display: block; + + font-size: small; + font-weight: normal; +} + +.modalText { + font-size: 0.9375rem; + + &:last-of-type { + margin-bottom: 1.5rem; + } +} + +.aboutLogo { + width: 10rem; + height: 10rem; + margin: 0.5rem auto 1.5rem; +} diff --git a/src/components/main/Header.tsx b/src/components/main/Header.tsx new file mode 100644 index 00000000..be980525 --- /dev/null +++ b/src/components/main/Header.tsx @@ -0,0 +1,186 @@ +import type { FocusEvent } from 'react'; +import React, { memo, useCallback } from '../../lib/teact/teact'; +import { withGlobal, getActions } from '../../global'; + +import { + APP_NAME, APP_VERSION, MNEMONIC_COUNT, PROXY, TELEGRAM_WEB_URL, +} from '../../config'; +import { IS_EXTENSION } from '../../util/environment'; +import buildClassName from '../../util/buildClassName'; +import useFlag from '../../hooks/useFlag'; + +import Button from '../ui/Button'; +import SearchBar from '../ui/SearchBar'; +import Menu from '../ui/Menu'; +import MenuItem from '../ui/MenuItem'; +import Modal from '../ui/Modal'; +import Switcher from '../ui/Switcher'; + +import styles from './Header.module.scss'; +import modalStyles from '../ui/Modal.module.scss'; +import logoSrc from '../../assets/logo.svg'; +import useShowTransition from '../../hooks/useShowTransition'; + +type OwnProps = { + onOpenBackupWallet: () => void; +}; + +type StateProps = { + isTonProxyEnabled?: boolean; + isTonMagicEnabled?: boolean; +}; + +function Header({ + onOpenBackupWallet, + isTonProxyEnabled, + isTonMagicEnabled, +}: OwnProps & StateProps) { + const { + toggleTonProxy, + toggleTonMagic, + signOut, + } = getActions(); + const [isMenuOpened, openMenu, closeMenu] = useFlag(false); + const [isAboutOpened, openAbout, closeAbout] = useFlag(false); + const [isExitConfirmOpened, openExitConfirm, closeExitConfirm] = useFlag(false); + const { + transitionClassNames: telegramLinkClassNames, + shouldRender: isTelegramLinkRendered, + } = useShowTransition(IS_EXTENSION && isTonMagicEnabled); + + // Remove when implemented + const handleFocus = useCallback((e: FocusEvent) => { + e.preventDefault(); + e.target.blur(); + }, []); + + const handleToggleMenuClick = useCallback(() => { + if (isMenuOpened) { + closeMenu(); + } else { + openMenu(); + } + }, [closeMenu, isMenuOpened, openMenu]); + + const handleOpenAbout = useCallback(() => { + closeMenu(); + openAbout(); + }, [closeMenu, openAbout]); + + const handleOpenBackupWallet = useCallback(() => { + closeMenu(); + onOpenBackupWallet(); + }, [closeMenu, onOpenBackupWallet]); + + const handleTonProxyToggle = useCallback(() => { + toggleTonProxy({ isEnabled: !isTonProxyEnabled }); + }, [isTonProxyEnabled, toggleTonProxy]); + + const handleTonMagicToggle = useCallback(() => { + toggleTonMagic({ isEnabled: !isTonMagicEnabled }); + }, [isTonMagicEnabled, toggleTonMagic]); + + const handleOpenConfirmation = useCallback(() => { + closeMenu(); + openExitConfirm(); + }, [closeMenu, openExitConfirm]); + + const handleLogOut = useCallback(() => { + closeExitConfirm(); + signOut(); + }, [closeExitConfirm, signOut]); + + return ( +
+ + + + + {IS_EXTENSION && About} + {IS_EXTENSION && PROXY && ( + + TON Proxy + + + )} + {IS_EXTENSION && ( + + TON Magic + + + )} + {isTelegramLinkRendered && ( + + Open Telegram Web + + )} + Back Up + Exit + + + +

+ This will disconnect the wallet from this app. You will be able to restore your + wallet using {MNEMONIC_COUNT} secret words - or import another wallet. +

+

+ Wallets are located in the decentralized TON Blockchain. If you want the wallet to + be deleted simply transfer all the TON from it and leave it empty. +

+
+ + +
+
+ {IS_EXTENSION && ( + + Logo +

+ {APP_NAME} {APP_VERSION} + + https://mytonwallet.org/ + +

+

+ Securely store crypto and make blockchain payments at the speed of light. +

+

What is TON Magic?

+

+ TON Magic provides native Telegram integration by patching the official Telegram Web app. +

+

+ Turn it on to send and receive Toncoins from any Telegram user.{' '} + + More info and demo. + +

+
+ +
+
+ )} +
+ ); +} + +export default memo(withGlobal((global): StateProps => { + return { + isTonProxyEnabled: global.settings.isTonProxyEnabled, + isTonMagicEnabled: global.settings.isTonMagicEnabled, + }; +})(Header)); diff --git a/src/components/main/Main.module.scss b/src/components/main/Main.module.scss new file mode 100644 index 00000000..508894a9 --- /dev/null +++ b/src/components/main/Main.module.scss @@ -0,0 +1,185 @@ +@use "sass:color"; + +@import "../../styles/variables"; + +.container { + display: flex; + flex-direction: column; + + max-width: 25rem; + height: 100vh; + max-height: calc(var(--vh, 1vh) * 100); + margin: auto; + padding: 0 1rem 1rem; + + :global(.Tab) { + padding-right: 1.75rem; + padding-left: 1.75rem; + } + + @supports (padding-bottom: env(safe-area-inset-bottom)) { + padding-bottom: max(env(safe-area-inset-bottom), 1rem); + } + + :global(html.is-extension) & { + height: auto; + min-height: calc(var(--vh, 1vh) * 100); + max-height: none; + padding: 0 0.75rem !important; + } + + @media (max-width: 600px) { + height: auto; + min-height: calc(var(--vh, 1vh) * 100); + max-height: none; + padding: 0 0.75rem !important; + } +} + +.head { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +.tabs { + position: relative; + z-index: 1; + + padding: 0 1.75rem; + + border-radius: var(--border-radius-default) var(--border-radius-default) 0 0; + /* stylelint-disable-next-line plugin/whole-pixel */ + box-shadow: 0 0.025rem 0 0 var(--color-separator); +} + +.tab { + flex: 1 1 33.3%; +} + +.buttons { + display: flex; + + width: 21.4375rem; + margin-bottom: 0.5rem; + + background: var(--color-background-first); + border-radius: var(--border-radius-default); + + @supports (aspect-ratio: 1) { + width: 100%; + } +} + +.button { + user-select: none; + + display: flex; + flex: 0 0 50%; + flex-direction: column; + align-items: center; + justify-content: flex-end; + + width: 50%; + height: 3.4375rem; + padding: 0 0 0.5rem; + + font-size: 0.8125rem; + font-weight: 600; + line-height: 1; + color: var(--color-black); + text-transform: none; + + transition: background-color 150ms, color 150ms; + + & + & { + /* stylelint-disable-next-line plugin/whole-pixel */ + box-shadow: -0.025rem 0 0 0 var(--color-separator); + } + + &:not(:global(.not-implemented)):hover, + &:not(:global(.not-implemented)):focus { + color: var(--color-blue); + + background-color: var(--color-interactive-home-button-hover); + } + + &:not(:global(.not-implemented)):active { + color: var(--color-gray-1); + + background-color: var(--color-interactive-home-button-hover); + // Optimization + transition: none; + .buttonIcon { + color: var(--color-gray-1); + } + } + + &:first-child { + border-radius: var(--border-radius-default) 0 0 var(--border-radius-default); + } + + &:last-child { + border-radius: 0 var(--border-radius-default) var(--border-radius-default) 0; + } +} + +.buttonIcon { + display: block; + + width: 1.5rem; + height: 1.5rem; + margin-bottom: 0.125rem; + + font-size: 1.5rem; + color: var(--color-blue); + + transition: color 150ms; +} + +.slides { + overflow: hidden; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + + border-radius: 0 0 var(--border-radius-default) var(--border-radius-default); + + :global(html.is-extension) & { + flex: 1 1 auto; + + border-radius: 0; + } + + @media (max-width: 600px) { + flex: 1 1 auto; + + border-radius: 0; + } +} + +.slide { + overflow: auto; + + @supports (overflow: overlay) { + overflow-y: overlay; + } + + background: var(--color-background-first); + + :global(html.is-extension) & { + overflow: hidden; + flex: 1 1 auto; + + min-height: 0; + } + + @media (max-width: 600px) { + overflow: hidden; + flex: 1 1 auto; + + min-height: 0; + } +} diff --git a/src/components/main/Main.tsx b/src/components/main/Main.tsx new file mode 100644 index 00000000..ec9a84ff --- /dev/null +++ b/src/components/main/Main.tsx @@ -0,0 +1,110 @@ +import React, { memo, useCallback, useState } from '../../lib/teact/teact'; +import { getActions } from '../../lib/teact/teactn'; + +import buildClassName from '../../util/buildClassName'; +import useFlag from '../../hooks/useFlag'; + +import Card from './Card'; +import TabList from '../ui/TabList'; +import Header from './Header'; +import TransferModal from '../transfer/TransferModal'; +import Transition from '../ui/Transition'; +import Assets from './Assets'; +import Activity from './Activity'; +import Nfts from './Nfts'; +import Receive from './Receive'; +import Notifications from './Notifications'; +import BackupWarning from './BackupWarning'; +import BackupModal from './BackupModal'; +import SignatureModal from './SignatureModal'; +import Button from '../ui/Button'; +import TransactionModal from './TransactionModal'; + +import styles from './Main.module.scss'; + +const TABS = [ + { id: 'assets', title: 'Assets', className: styles.tab }, + { id: 'activity', title: 'Activity', className: styles.tab }, + { id: 'nft', title: 'NFT', className: styles.tab }, +]; + +function Main() { + const { startTransfer, selectToken } = getActions(); + + const [activeTabIndex, setActiveTabIndex] = useState(0); + const [isReceiveTonOpened, openReceiveTon, closeReceiveTon] = useFlag(false); + const [isBackupWalletOpened, openBackupWallet, closeBackupWallet] = useFlag(false); + + const handleSwitchTab = useCallback((index: number) => { + const tabId = TABS[index].id; + + if (tabId === 'activity') { + selectToken({ slug: undefined }); + } + setActiveTabIndex(index); + }, [selectToken]); + + const handleClickAssets = useCallback((slug: string) => { + selectToken({ slug }); + setActiveTabIndex(TABS.findIndex((tab) => tab.id === 'activity')); + }, [selectToken]); + + function renderCurrentTab(isActive: boolean) { + switch (TABS[activeTabIndex].id) { + case 'assets': + return ; + + case 'activity': + return ; + + case 'nft': + return ; + + default: + return undefined; + } + } + + return ( +
+
+ +
+ +
+ + +
+ +
+ + + {renderCurrentTab} + + + + + + +
+ ); +} + +export default memo(Main); diff --git a/src/components/main/Nft.module.scss b/src/components/main/Nft.module.scss new file mode 100644 index 00000000..045876d4 --- /dev/null +++ b/src/components/main/Nft.module.scss @@ -0,0 +1,121 @@ +.emptyList { + display: flex; + flex-direction: column; + align-items: center; + + height: 100%; + padding-top: 2rem; + + color: var(--color-gray-1); +} + +.emptyListText { + margin-top: 1rem; + + font-size: 1.0625rem; + font-weight: 700; +} + +.emptyListLoading { + padding-top: 8rem; +} + +.list { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 0.5rem; + + padding: 0.5rem; +} + +.item { + padding-bottom: 0.125rem; + + font-size: 0.9375rem; + font-weight: 600; + text-decoration: none; + + &:hover, + &:focus { + text-decoration: none; + + .image { + transform: scale(1.05); + } + } + + &_onSale { + position: relative; + + &::before { + content: ''; + + position: absolute; + z-index: 1; + top: -0.375rem; + right: 0.25rem; + + width: 2.75rem; + height: 2.9375rem; + + background: url("../../assets/sale.png") no-repeat; + background-size: contain; + } + } +} + +.imageWrapper { + position: relative; + + overflow: hidden; + display: block !important; + + aspect-ratio: 1; + width: 100%; + max-width: 100%; + margin-bottom: 0.4375rem; + + border-radius: 0.4375rem; + + @supports not (aspect-ratio: 1) { + height: auto; + max-height: 100%; + } +} + +.image { + position: absolute; + top: 0; + left: 0; + transform-origin: center; + + width: 100%; + height: 100%; + + object-fit: cover; + + transition: transform 300ms; +} + +.infoWrapper { + padding: 0 0.25rem; + + line-height: 1.0625rem; +} + +.title { + font-weight: 700; + color: var(--color-black); + word-break: break-word; +} + +.collection { + overflow: hidden; + + padding: 0.125rem 0.25rem 0; + + font-size: 0.75rem; + line-height: 1; + color: var(--color-gray-1); + text-overflow: ellipsis; +} diff --git a/src/components/main/Nfts.tsx b/src/components/main/Nfts.tsx new file mode 100644 index 00000000..8cffe8e0 --- /dev/null +++ b/src/components/main/Nfts.tsx @@ -0,0 +1,84 @@ +import React, { memo, useEffect, useMemo } from '../../lib/teact/teact'; +import { getActions, withGlobal } from '../../global'; + +import type { ApiNft } from '../../api/types'; + +import { ANIMATED_STICKERS_PATHS } from '../ui/helpers/animatedAssets'; +import { shortenAddress } from '../../util/shortenAddress'; +import buildClassName from '../../util/buildClassName'; + +import Loading from '../ui/Loading'; +import Image from '../ui/Image'; +import AnimatedIcon from '../ui/AnimatedIcon'; + +import styles from './Nft.module.scss'; + +interface OwnProps { + isActive?: boolean; +} + +interface StateProps { + orderedAddresses?: string[]; + byAddress?: Record; +} + +function Nfts({ isActive, orderedAddresses, byAddress }: OwnProps & StateProps) { + const { fetchNfts } = getActions(); + + useEffect(() => { + // TODO Infinite Scroll + fetchNfts(); + }, [fetchNfts]); + + const nfts = useMemo(() => { + if (!orderedAddresses || !byAddress) { + return undefined; + } + + return orderedAddresses.map((address) => byAddress[address]).filter(Boolean); + }, [byAddress, orderedAddresses]); + + if (nfts === undefined) { + return ( +
+ ); + } + + if (nfts.length === 0) { + return ( +
+ +

No NFTs

+
+ ); + } + + return ( + + ); +} +export default memo(withGlobal((global): StateProps => { + const { orderedAddresses, byAddress } = global.nfts || {}; + + return { orderedAddresses, byAddress }; +})(Nfts)); diff --git a/src/components/main/Notifications.tsx b/src/components/main/Notifications.tsx new file mode 100644 index 00000000..1ab2d1a0 --- /dev/null +++ b/src/components/main/Notifications.tsx @@ -0,0 +1,37 @@ +import React, { memo } from '../../lib/teact/teact'; +import { getActions, withGlobal } from '../../global'; + +import type { NotificationType } from '../../global/types'; + +import { pick } from '../../util/iteratees'; + +import Notification from '../ui/Notification'; + +type StateProps = { + notifications: NotificationType[]; +}; + +function Notifications({ notifications }: StateProps) { + const { dismissNotification } = getActions(); + + if (!notifications.length) { + return undefined; + } + + return ( +
+ {notifications.map(({ message, icon }) => ( + + ))} +
+ ); +} + +export default memo(withGlobal( + (global): StateProps => pick(global, ['notifications']), +)(Notifications)); diff --git a/src/components/main/Receive.module.scss b/src/components/main/Receive.module.scss new file mode 100644 index 00000000..40c38038 --- /dev/null +++ b/src/components/main/Receive.module.scss @@ -0,0 +1,152 @@ +.modalDialog { + height: 43.5rem; + + @supports (height: env(safe-area-inset-bottom)) { + height: calc(43.5rem + env(safe-area-inset-bottom)); + } + +} + +.content { + padding: 0 1rem 1rem; + + @supports (padding-bottom: env(safe-area-inset-bottom)) { + padding-bottom: max(env(safe-area-inset-bottom), 1rem); + } +} + +.contentInvoice { + padding: 0.5rem 1rem 1rem; + + @supports (padding-bottom: env(safe-area-inset-bottom)) { + padding-bottom: max(env(safe-area-inset-bottom), 1rem); + } +} + +.contentQr { + margin-top: -0.1875rem; +} + +.info { + font-size: 0.9375rem; + font-weight: 600; + color: var(--color-gray-1); + text-align: center; + + &_push { + margin-bottom: 1.25rem; + } + + &_small { + margin-top: 0.5625rem; + margin-bottom: 0.4375rem; + + font-size: 0.875rem; + } +} + +.qrCode { + position: relative; + + overflow: hidden; + + aspect-ratio: 1; + width: 100%; + max-width: 20.5rem; + max-height: 20.5rem; + margin: 0.5rem auto 0; + + background-color: var(--color-white); + border-radius: var(--border-radius-default); + + canvas { + position: absolute; + top: 0.5rem; + left: 0.5rem; + + display: block; + + width: calc(100% - 1rem); + height: calc(100% - 1rem); + } +} + +.description { + margin: 1.5rem 0 0.25rem 0.5rem; + + font-size: 0.8125rem; + font-weight: 700; + color: var(--color-gray-2); + + &_forInvoice { + margin-top: 0.3125rem; + } +} + +.copyButtonWrapper { + padding: 1rem 0.75rem; + + font-size: 1rem; + font-weight: 600; + line-height: 1; + color: var(--color-black); + text-align: left; + word-break: break-all; + + background: var(--color-background-first); + border-radius: var(--border-radius-default); +} + +.copyButton { + cursor: pointer; + + line-height: 1.25rem; + text-decoration: none !important; + + &:active { + .iconCopy { + color: var(--color-gray-1) !important; + } + } + + @media (hover: hover) { + &:focus, + &:hover { + .iconCopy { + color: var(--color-blue); + } + } + } +} + +.iconCopy { + font-size: 1rem; + line-height: 1rem; + color: var(--color-gray-4); + vertical-align: -0.1875rem; + + transition: color 150ms ease-in; + + &:global(.icon-copy) { + margin-inline-start: 0.0625rem; + } +} + +.buttons { + display: flex; + gap: 0.5rem; + justify-content: center; + + margin-top: 1.5rem; +} + +.qrButton { + width: auto !important; + min-width: 3rem !important; + + font-size: 1.875rem !important; +} + +.qrIcon { + margin-inline-end: -0.125rem; +} diff --git a/src/components/main/Receive.tsx b/src/components/main/Receive.tsx new file mode 100644 index 00000000..b2d3bc37 --- /dev/null +++ b/src/components/main/Receive.tsx @@ -0,0 +1,262 @@ +import QrCodeStyling from 'qr-code-styling'; +import TonWeb from 'tonweb'; +import React, { + memo, useCallback, useEffect, useRef, useState, +} from '../../lib/teact/teact'; +import { withGlobal } from '../../lib/teact/teactn'; +import { getActions } from '../../global'; + +import { humanToBigStr } from '../../global/helpers'; +import { copyTextToClipboard } from '../../util/clipboard'; +import buildClassName from '../../util/buildClassName'; +import useFlag from '../../hooks/useFlag'; +import { shortenAddress } from '../../util/shortenAddress'; + +import Modal from '../ui/Modal'; +import Button from '../ui/Button'; +import Input from '../ui/Input'; +import InputNumberRich from '../ui/InputNumberRich'; + +import styles from './Receive.module.scss'; +import modalStyles from '../ui/Modal.module.scss'; + +interface StateProps { + address?: string; +} + +type OwnProps = { + isOpen: boolean; + onClose: () => void; +}; + +const QR_SIZE = 600; +const QR_CODE = new QrCodeStyling({ + width: QR_SIZE, + height: QR_SIZE, + image: './logo.svg', + margin: 0, + type: 'canvas', + dotsOptions: { + type: 'rounded', + }, + cornersSquareOptions: { + type: 'extra-rounded', + }, + imageOptions: { + imageSize: 0.4, + margin: 8, + crossOrigin: 'anonymous', + }, + qrOptions: { + errorCorrectionLevel: 'M', + }, +}); + +function Receive({ + isOpen, + address, + onClose, +}: StateProps & OwnProps) { + const { showNotification } = getActions(); + // eslint-disable-next-line no-null/no-null + const qrCodeRef = useRef(null); + const [amount, setAmount] = useState(undefined); + const [comment, setComment] = useState(''); + const [hasAmountError, setHasAmountError] = useState(false); + const [isQrModalOpen, openQrModal, closeQrModal] = useFlag(false); + const [isInvoiceModalOpen, openInvoiceModal, closeInvoiceModal] = useFlag(false); + const tonscanAddressUrl = `https://tonscan.org/address/${address}`; + + useEffect(() => { + if (isQrModalOpen) { + QR_CODE.append(qrCodeRef.current || undefined); + } + }, [isQrModalOpen]); + + useEffect(() => { + if (!address) { + return; + } + QR_CODE.update({ data: TonWeb.utils.formatTransferUrl(address) }); + }, [address]); + + const handleAmountInput = useCallback((value?: number) => { + setHasAmountError(false); + + if (value === undefined) { + setAmount(undefined); + return; + } + + if (Number.isNaN(value) || value < 0) { + setHasAmountError(true); + return; + } + + setAmount(value); + }, []); + + const handleCopyAddress = useCallback(() => { + if (!address) return; + + showNotification({ message: 'Address was copied!', icon: 'icon-copy' }); + copyTextToClipboard(address); + }, [address, showNotification]); + + const handleCopyInvoiceLink = useCallback(() => { + if (!address) return; + + showNotification({ message: 'Invoice link was copied!', icon: 'icon-copy' }); + const invoiceAmount = amount ? humanToBigStr(amount) : undefined; + copyTextToClipboard(TonWeb.utils.formatTransferUrl(address, invoiceAmount, comment)); + }, [address, amount, comment, showNotification]); + + const handleClose = useCallback(() => { + onClose(); + closeInvoiceModal(); + closeQrModal(); + }, [closeInvoiceModal, closeQrModal, onClose]); + + function renderReceive() { + return ( + +
+
+ You can share this address, show QR-code
+ or create invoice to receive TON +
+ +

Your address

+
+ + {address} + + + + + +
+ +
+ + +
+
+
+ ); + } + + function renderQr() { + return ( + +
+
+

{address && shortenAddress(address)}

+ +
+ +
+
+ + ); + } + + function renderInvoice() { + const invoiceAmount = amount ? humanToBigStr(amount) : undefined; + const invoiceUrl = TonWeb.utils.formatTransferUrl(address!, invoiceAmount, comment); + return ( + +
+
+ You can specify the amount and purpose of
+ the payment to save the sender some time +
+ + + +

+ Share this URL to receive TON +

+
+ + {invoiceUrl} + + +
+ +
+ +
+
+
+ ); + } + + return ( + <> + {renderReceive()} + {renderQr()} + {renderInvoice()} + + ); +} + +export default memo(withGlobal((global): StateProps => { + return { + address: global.addresses?.byAccountId['0']!, + }; +})(Receive)); diff --git a/src/components/main/SignatureModal.module.scss b/src/components/main/SignatureModal.module.scss new file mode 100644 index 00000000..d531e8c6 --- /dev/null +++ b/src/components/main/SignatureModal.module.scss @@ -0,0 +1,29 @@ +.modalDialog { + height: 28rem; + + @supports (height: env(safe-area-inset-bottom)) { + height: calc(28rem + env(safe-area-inset-bottom)); + } +} + +.error { + margin-bottom: 0.75rem; + padding: 0 0.5rem; + + font-size: 0.9375rem; + color: var(--color-red); + text-align: center; +} + +.sticker { + margin: -3rem auto 1rem; +} + +.description { + margin-top: 0.25rem; + + font-size: 0.9375rem; + line-height: 1.25; + color: var(--color-gray-1); + text-align: center; +} diff --git a/src/components/main/SignatureModal.tsx b/src/components/main/SignatureModal.tsx new file mode 100644 index 00000000..08ffeef6 --- /dev/null +++ b/src/components/main/SignatureModal.tsx @@ -0,0 +1,177 @@ +import React, { + memo, useCallback, useLayoutEffect, useState, +} from '../../lib/teact/teact'; +import { getActions, withGlobal } from '../../global'; + +import { ANIMATED_STICKERS_PATHS } from '../ui/helpers/animatedAssets'; +import buildClassName from '../../util/buildClassName'; +import useFlag from '../../hooks/useFlag'; + +import Modal from '../ui/Modal'; +import Button from '../ui/Button'; +import Transition from '../ui/Transition'; +import ModalHeader from '../ui/ModalHeader'; +import PasswordForm from '../ui/PasswordForm'; +import AnimatedIcon from '../ui/AnimatedIcon'; + +import styles from './SignatureModal.module.scss'; +import transferStyles from '../transfer/Transfer.module.scss'; +import modalStyles from '../ui/Modal.module.scss'; + +type StateProps = { + dataHex?: string; + error?: string; + isSigned?: boolean; +}; + +const enum SLIDES { + confirm, + password, + complete, +} + +function SignatureModal({ + dataHex, error, isSigned, +}: StateProps) { + const { submitSignature, cleanSignatureError, cancelSignature } = getActions(); + + const [isModalOpen, openModal, closeModal] = useFlag(false); + const [currentSlide, setCurrentSlide] = useState(SLIDES.confirm); + const [nextKey, setNextKey] = useState(SLIDES.password); + + useLayoutEffect(() => { + if (dataHex) { + setCurrentSlide(SLIDES.confirm); + setNextKey(SLIDES.password); + openModal(); + } + }, [dataHex, openModal]); + + useLayoutEffect(() => { + if (isSigned) { + setCurrentSlide(SLIDES.complete); + setNextKey(undefined); + } + }, [isSigned]); + + const handleConfirm = useCallback(() => { + setCurrentSlide(SLIDES.password); + setNextKey(SLIDES.complete); + }, []); + + const handlePasswordSubmit = useCallback((password: string) => { + submitSignature({ password }); + }, [submitSignature]); + + function renderConfirm() { + return ( + <> + +
+
Data to sign
+
+ {dataHex} +
+ +
+ Signing custom data is very dangerous.
+ Use only if you know what you are doing. +
+
+ + +
+
+ + ); + } + + function renderPasswordForm(isActive: boolean) { + return ( + <> + + + + ); + } + + function renderComplete(isActive: boolean) { + return ( + <> + + +
+ +
+ Signing was confirmed! +
+ +
+ +
+
+ + ); + } + // eslint-disable-next-line consistent-return + function renderContent(isActive: boolean, isFrom: boolean, currentKey: number) { + switch (currentKey) { + case SLIDES.confirm: + return renderConfirm(); + + case SLIDES.password: + return renderPasswordForm(isActive); + + case SLIDES.complete: + return renderComplete(isActive); + } + } + + return ( + + + {renderContent} + + + ); +} + +export default memo(withGlobal( + (global): StateProps => { + const { + dataHex, error, isSigned, + } = global.currentSignature || {}; + + return { + dataHex, error, isSigned, + }; + }, +)(SignatureModal)); diff --git a/src/components/main/Token.module.scss b/src/components/main/Token.module.scss new file mode 100644 index 00000000..c8d0dfe6 --- /dev/null +++ b/src/components/main/Token.module.scss @@ -0,0 +1,106 @@ +@use "sass:color"; + +@import "../../styles/variables"; + +.container { + position: relative; + + display: flex; + align-items: center; + justify-content: center; + + width: 100%; + padding: 0.875rem 2.125rem 0.875rem 1rem; + + color: var(--color-black); + text-transform: none; + + &:not(:last-of-type) { + &::after { + content: ''; + + position: absolute; + right: 2rem; + bottom: 0; + left: 3.875rem; + + height: 0.0625rem; + /* stylelint-disable-next-line plugin/whole-pixel */ + box-shadow: inset 0 -0.025rem 0 0 var(--color-separator); + } + } + + &:focus, + &:hover { + background-color: var(--color-interactive-home-button-hover); + } + + &:active { + color: var(--color-gray-1); + + background-color: var(--color-interactive-home-button-hover); + } +} + +.iconArrow { + position: absolute; + top: 0.8125rem; + right: 1rem; + + font-size: 1rem; + color: var(--color-gray-3); +} + +.icon { + width: 2.25rem; + height: 2.25rem; + margin: 0 0.625rem 0 0; +} + +.main { + flex: 1; + + text-align: left; +} + +.values { + margin-top: -0.125rem; + + text-align: right; +} + +.amount { + position: relative; + top: 0.125rem; + + font-size: 0.75rem; + color: var(--color-gray-2) !important; +} + +.amountValue { + font-weight: 700; +} + +.name, .secondaryValue { + padding-bottom: 0.0625rem; + + font-size: 0.9375rem; + font-weight: 600; +} + + +.change { + position: relative; + top: 0.125rem; + + font-size: 0.75rem; + color: var(--color-gray-2); + + &_up { + color: var(--color-green); + } + + &_down { + color: var(--color-red); + } +} diff --git a/src/components/main/Token.tsx b/src/components/main/Token.tsx new file mode 100644 index 00000000..5271c590 --- /dev/null +++ b/src/components/main/Token.tsx @@ -0,0 +1,65 @@ +import React, { memo, useCallback } from '../../lib/teact/teact'; + +import { UserToken } from '../../global/types'; + +import { DEFAULT_PRICE_CURRENCY } from '../../config'; +import { ASSET_LOGO_PATHS } from '../ui/helpers/assetLogos'; +import buildClassName from '../../util/buildClassName'; +import { formatCurrency } from '../../util/formatNumber'; +import { round } from '../../util/round'; + +import Button from '../ui/Button'; + +import styles from './Token.module.scss'; + +interface OwnProps { + token: UserToken; + onClick: (slug: string) => void; +} + +function Token({ + token, + onClick, +}: OwnProps) { + const { + name, + symbol, + slug, + amount, + price, + change, + image, + } = token; + + const logoPath = image || ASSET_LOGO_PATHS[symbol.toLowerCase() as keyof typeof ASSET_LOGO_PATHS]; + const secondaryValue = amount * price; + const changeClassName = change > 0 ? styles.change_up : change < 0 ? styles.change_down : undefined; + const changePrefix = change > 0 ? '↑' : change < 0 ? '↓' : undefined; + const changeValue = Math.abs(secondaryValue * change); + + const handleClick = useCallback(() => { + onClick(slug); + }, [onClick, slug]); + + return ( + + ); +} + +export default memo(Token); diff --git a/src/components/main/Transaction.module.scss b/src/components/main/Transaction.module.scss new file mode 100644 index 00000000..b02cabe0 --- /dev/null +++ b/src/components/main/Transaction.module.scss @@ -0,0 +1,154 @@ +@import "../../styles/variables"; + +.item { + position: relative; + + display: grid; + grid-template-areas: "icon left right" "useless bottom bottom"; + grid-template-columns: 2.875rem auto 1fr; + grid-template-rows: 2.25rem auto; + align-items: center; + justify-content: center; + + width: 100%; + padding: 0.75rem 2rem 0.75rem 1rem; + + color: var(--color-black); + text-align: left; + + &:not(:last-of-type) { + &::after { + content: ''; + + position: absolute; + right: 2rem; + bottom: 0; + left: 3.875rem; + + height: 1px; + /* stylelint-disable-next-line plugin/whole-pixel */ + box-shadow: inset 0 -0.025rem 0 0 var(--color-separator); + } + } + + &:focus, + &:hover { + background-color: var(--color-interactive-home-button-hover); + } + + &:active { + color: var(--color-gray-1); + + background-color: var(--color-interactive-home-button-hover); + } +} + +.iconArrow { + position: absolute; + top: 0.75rem; + right: 1rem; + + font-size: 1rem; + color: var(--color-gray-3) +} + +.icon { + grid-area: icon; + + width: 2.25rem; + height: 2.25rem; + margin: 0 0.625rem 0 0; + + font-size: 1.25rem; + line-height: 1; + color: var(--color-activity-gray-text); + text-align: center; + + background-color: var(--color-activity-gray-10); + border-radius: 50%; + + &::before { + line-height: 2.25rem; + } + + &_operationPositive { + color: var(--color-activity-green-text); + + background-color: var(--color-activity-green-10); + } +} + +.leftBlock { + grid-area: left; +} + +.amount, +.operationName { + padding-bottom: 0.0625rem; + + font-size: 0.9375rem; + font-weight: 600; +} + +.address, +.date { + font-size: 0.75rem; + color: var(--color-gray-2); +} + +.addressValue { + font-weight: 600; +} + +.amountWrapper { + grid-area: right; + + margin-left: auto; + + text-align: right; +} + +.amount { + &_operationPositive { + color: var(--color-green); + } + + &_operationNegative { + color: var(--color-gray-1); + } +} + +.comment { + overflow: hidden; + grid-area: bottom; + + max-width: 100%; + margin-top: 0.375rem; + padding: 0.5rem 0.625rem; + + font-size: 0.75rem; + font-weight: 500; + line-height: 0.75rem; + text-overflow: ellipsis; + white-space: nowrap; + + border-radius: 0.875rem; + + &_incoming { + margin-inline-end: auto; + + color: var(--color-activity-green-text); + + background-color: var(--color-activity-green-10); + border-top-left-radius: 0.375rem; + } + + &_outgoing { + margin-inline-start: auto; + + color: var(--color-activity-gray-text); + + background-color: var(--color-activity-gray-10); + border-top-right-radius: 0.375rem; + } +} diff --git a/src/components/main/Transaction.tsx b/src/components/main/Transaction.tsx new file mode 100644 index 00000000..1877f5c0 --- /dev/null +++ b/src/components/main/Transaction.tsx @@ -0,0 +1,93 @@ +import type { Ref, RefObject } from 'react'; +import React, { memo, useCallback } from '../../lib/teact/teact'; + +import { ApiToken, ApiTransaction } from '../../api/types'; + +import { CARD_SECONDARY_VALUE_SYMBOL } from '../../config'; +import { formatTime } from '../../util/dateFormat'; +import { formatCurrencyExtended } from '../../util/formatNumber'; +import buildClassName from '../../util/buildClassName'; +import { bigStrToHuman } from '../../global/helpers'; +import { shortenAddress } from '../../util/shortenAddress'; + +import Button from '../ui/Button'; + +import styles from './Transaction.module.scss'; + +type OwnProps = { + ref?: Ref; + token?: ApiToken; + transaction: ApiTransaction; + onClick: (txId: string) => void; +}; + +function Transaction({ + ref, + token, + transaction, + onClick, +}: OwnProps) { + const { + txId, + amount, + fromAddress, + toAddress, + timestamp, + comment, + isIncoming, + } = transaction; + + const amountHuman = bigStrToHuman(amount); + const address = isIncoming ? fromAddress : toAddress; + + const handleClick = useCallback(() => { + onClick(txId); + }, [onClick, txId]); + + function renderComment() { + return ( +
+ {comment} +
+ ); + } + + const iconFullClass = buildClassName( + styles.icon, + isIncoming && styles.icon_operationPositive, + isIncoming ? 'icon-receive-alt' : 'icon-send-alt', + ); + + return ( + + ); +} + +export default memo(Transaction); diff --git a/src/components/main/TransactionModal.module.scss b/src/components/main/TransactionModal.module.scss new file mode 100644 index 00000000..87f656c1 --- /dev/null +++ b/src/components/main/TransactionModal.module.scss @@ -0,0 +1,66 @@ +.sticker { + margin: -0.5rem auto 1.25rem; +} + +.footer { + display: flex; + align-items: center; + justify-content: center; + + margin-top: 3rem; +} + +.copyButtonWrapper { + margin-bottom: 1rem; +} + +.button { + width: auto; + max-width: 70% !important; + padding: 0.5rem 1.5rem; + + white-space: nowrap; +} + +.amount { + &_operationPositive { + color: var(--color-green); + } + + &_operationNegative { + color: var(--color-red); + } +} + +.tonscan { + position: absolute; + top: 1rem; + left: 1rem; + + width: 1.875rem !important; + height: 1.875rem !important; + padding: 0; + + font-size: 1.5rem; + line-height: 1.875rem; + color: var(--color-gray-4); + text-align: center; + text-decoration: none; + + border-radius: 50%; + + transition: color 150ms; + + &:active { + color: var(--color-gray-1) !important; + text-decoration: none; + } + + @media (hover: hover) { + &:hover, + &:focus { + color: var(--color-blue); + text-decoration: none; + } + } +} diff --git a/src/components/main/TransactionModal.tsx b/src/components/main/TransactionModal.tsx new file mode 100644 index 00000000..c4e58dd0 --- /dev/null +++ b/src/components/main/TransactionModal.tsx @@ -0,0 +1,200 @@ +import React, { + memo, useCallback, useLayoutEffect, useState, +} from '../../lib/teact/teact'; +import { getActions, withGlobal } from '../../global'; + +import { ApiToken, ApiTransaction } from '../../api/types'; + +import { ANIMATED_STICKER_SMALL_SIZE_PX, CARD_SECONDARY_VALUE_SYMBOL } from '../../config'; +import { ANIMATED_STICKERS_PATHS } from '../ui/helpers/animatedAssets'; +import { bigStrToHuman } from '../../global/helpers'; +import { formatCurrencyExtended } from '../../util/formatNumber'; +import buildClassName from '../../util/buildClassName'; +import { copyTextToClipboard } from '../../util/clipboard'; + +import Modal from '../ui/Modal'; +import Button from '../ui/Button'; +import AnimatedIcon from '../ui/AnimatedIcon'; + +import styles from './TransactionModal.module.scss'; +import transferStyles from '../transfer/Transfer.module.scss'; +import receiveStyles from './Receive.module.scss'; +import modalStyles from '../ui/Modal.module.scss'; +import useCurrentOrPrev from '../../hooks/useCurrentOrPrev'; + +type StateProps = { + transaction?: ApiTransaction; + token?: ApiToken; +}; + +const EMPTY_HASH_VALUE = 'NOHASH'; + +function TransactionModal({ transaction, token }: StateProps) { + const { startTransfer, showNotification, closeTransactionInfo } = getActions(); + + const renderedTransaction = useCurrentOrPrev(transaction, true); + + const { + fromAddress, toAddress, amount, comment, fee, txId, isIncoming, + } = renderedTransaction || {}; + const [, transactionHash] = (txId || '').split(':'); + + const [isModalOpen, setIsModalOpen] = useState(false); + + const amountHuman = amount ? bigStrToHuman(amount) : 0; + const address = isIncoming ? fromAddress : toAddress; + const tonscanTransactionUrl = transactionHash && transactionHash !== EMPTY_HASH_VALUE + ? `https://tonscan.org/tx/${transactionHash}` + : undefined; + const tonscanAddressUrl = `https://tonscan.org/address/${address}`; + + useLayoutEffect(() => { + if (transaction?.txId) { + setIsModalOpen(true); + } + }, [transaction?.txId]); + + const handleCloseModal = useCallback(() => { + setIsModalOpen(false); + }, []); + + const handleCopyAddress = useCallback(() => { + if (!address) return; + + showNotification({ message: 'Address was copied!', icon: 'icon-copy' }); + copyTextToClipboard(address); + }, [address, showNotification]); + + const handleCopyComment = useCallback(() => { + if (!comment) return; + + showNotification({ message: 'Comment was copied!', icon: 'icon-copy' }); + copyTextToClipboard(comment); + }, [comment, showNotification]); + + const handleSendClick = useCallback(() => { + handleCloseModal(); + startTransfer({ + toAddress: address, + amount: Math.abs(amountHuman), + comment: !isIncoming ? comment : undefined, + }); + }, [handleCloseModal, startTransfer, address, amountHuman, isIncoming, comment]); + + function renderComment() { + if (!comment) { + return undefined; + } + + return ( + <> +
Comment
+
+ + {comment} + + +
+ + ); + } + + return ( + +
+ {tonscanTransactionUrl && ( + + + + )} + + +
{isIncoming ? 'Sender' : 'Recipient'}
+
+ + {address} + + + + + +
+ +
Amount
+
+ + {formatCurrencyExtended(amountHuman, '')} + {' '} + {token?.symbol || CARD_SECONDARY_VALUE_SYMBOL} + + {!isIncoming && fee && ( + <> +
Fee
+ + {formatCurrencyExtended(bigStrToHuman(fee), token?.symbol || CARD_SECONDARY_VALUE_SYMBOL, true)} + + + )} +
+ + {renderComment()} + +
+ +
+
+
+ ); +} + +export default memo(withGlobal( + (global): StateProps => { + const txId = global.currentTransactionId; + const transaction = txId ? global.transactions?.byTxId[txId] : undefined; + const token = transaction?.slug ? global.tokenInfo?.bySlug[transaction.slug] : undefined; + + return { + transaction, + token, + }; + }, +)(TransactionModal)); diff --git a/src/components/transfer/Transfer.module.scss b/src/components/transfer/Transfer.module.scss new file mode 100644 index 00000000..f8a34361 --- /dev/null +++ b/src/components/transfer/Transfer.module.scss @@ -0,0 +1,197 @@ +.modalDialog { + height: 35rem; + + @supports (height: env(safe-area-inset-bottom)) { + height: calc(35rem + env(safe-area-inset-bottom)); + } +} + +.fee { + display: flex; + flex-direction: column; + align-items: flex-end; + justify-content: center; + + margin-right: 0.625rem; + + font-size: 1rem; + font-weight: 700; + color: var(--color-gray-4); +} + +.feeValue { + margin-top: 0.0625rem; + + font-weight: 600; + white-space: nowrap; +} + +.pasteButton { + position: absolute; + right: 0.5rem; + bottom: 0.5rem; + + display: flex; + align-items: center; + justify-content: center; + + width: 2rem; + height: 2rem; + + color: var(--color-gray-3); + + border-radius: var(--border-radius-small) !important; + + &:hover, + &:focus, + &:active { + color: var(--color-input-button-text); + + background-color: var(--color-input-button-background); + } +} + +.help, +.label, +.feeLabel { + padding: 0 0.5rem; + + font-size: 0.8125rem; + line-height: 0.875rem; +} + +.note { + margin-top: -0.5rem; + margin-bottom: 0.9375rem; + padding: 0 0.5rem; + + font-size: 0.8125rem; + line-height: 1rem; + color: var(--color-gray-1); +} + +.balanceLink { + text-decoration: underline; + text-decoration-style: dotted; + + &:hover, &:focus { + text-decoration: none; + } +} + +.help { + margin-top: -0.5rem; + margin-bottom: 1rem; + + color: var(--color-gray-1); +} + +.feeLabel, +.label { + margin-bottom: 0.3125rem; + + font-weight: 700; + color: var(--color-gray-2); +} + +.description { + margin-top: 0.25rem; + + font-size: 0.9375rem; + line-height: 1.25; + color: var(--color-gray-1); + text-align: center; +} + +.error { + margin-top: -0.75rem; + margin-bottom: 1.25rem; + padding-left: 0.5rem; + + font-size: 0.9375rem; + color: var(--color-red); +} + +.inputReadOnly { + position: relative; + + display: flex; + + box-sizing: border-box; + margin-bottom: 1rem; + padding: 0.875rem 0.75rem; + + font-size: 1rem; + font-weight: 600; + line-height: 1.25rem; + color: var(--color-black); + text-align: left; + word-break: break-all; + + background: var(--color-background-first); + border: none; + border-radius: var(--border-radius-default); + outline: none; +} + +.suffix { + margin-left: 0.25rem; + + color: var(--color-gray-4); +} + +.feeConfirm { + margin-left: auto; + + color: var(--color-gray-4); +} + +.feeLabel { + position: absolute; + top: -1.1875rem; + right: 0.3125rem; +} + +.sticker { + margin: 0 auto 1rem; + + &_sizeSmall { + margin: -0.375rem auto 0.875rem; + } +} + +.buttonLoading .buttonText { + visibility: hidden; + opacity: 0; +} + +.buttonLoading::after { + content: ""; + + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + + width: 16px; + height: 16px; + margin: auto; + + border: 0.25rem solid transparent; + border-top-color: var(--color-white); + border-radius: 50%; + + animation: button-loading-spinner 1s ease infinite; +} + +@keyframes button-loading-spinner { + from { + transform: rotate(0turn); + } + + to { + transform: rotate(1turn); + } +} + diff --git a/src/components/transfer/TransferInitial.tsx b/src/components/transfer/TransferInitial.tsx new file mode 100644 index 00000000..1db410cd --- /dev/null +++ b/src/components/transfer/TransferInitial.tsx @@ -0,0 +1,272 @@ +import React, { + memo, useCallback, useEffect, useMemo, useState, +} from '../../lib/teact/teact'; +import { withGlobal, getActions } from '../../global'; + +import { UserToken } from '../../global/types'; + +import { CARD_SECONDARY_VALUE_SYMBOL } from '../../config'; +import { selectAllTokens } from '../../global/selectors'; +import { formatCurrencyExtended } from '../../util/formatNumber'; +import { throttle } from '../../util/schedulers'; +import { bigStrToHuman } from '../../global/helpers'; + +import Button from '../ui/Button'; +import Input from '../ui/Input'; +import InputNumberRich from '../ui/InputNumberRich'; + +import styles from './Transfer.module.scss'; +import modalStyles from '../ui/Modal.module.scss'; + +interface StateProps { + initialAddress?: string; + initialAmount?: number; + initialComment?: string; + fee?: string; + tokens?: UserToken[]; + isLoading?: boolean; +} + +const TON_ADDRESS_REGEX = /^[-\d\w_]{48}$/i; +const TON_RAW_ADDRESS_REGEX = /^0:[\da-h]{64}$/i; +const TON_DNS_REGEX = /^[-\da-z]{4,126}\.ton$/; +const COMMENT_MAX_SIZE_BYTES = 121; // Value derived empirically +const runThrottled = throttle((cb) => cb(), 1500, true); + +function TransferInitial({ + initialAddress = '', + initialAmount, + initialComment = '', + tokens, + fee, + isLoading, +}: StateProps) { + const { + submitTransferInitial, + showNotification, + fetchFee, + } = getActions(); + + const [shouldUseAllBalance, setShouldUseAllBalance] = useState(false); + const [shouldRenderPasteButton, setShouldRenderPasteButton] = useState(true); + const [toAddress, setToAddress] = useState(initialAddress); + const [amount, setAmount] = useState(initialAmount); + const [comment, setComment] = useState(initialComment); + const [hasToAddressError, setHasToAddressError] = useState(false); + const [hasAmountError, setHasAmountError] = useState(false); + const [isInsufficientBalance, setIsInsufficientBalance] = useState(false); + const balance = useMemo(() => (tokens ? getBalanceFromTokens(tokens) : undefined), [tokens]); + const shouldRenderFee = fee && amount && amount > 0; + const isAddressValid = toAddress && ( + TON_ADDRESS_REGEX.test(toAddress) + || TON_DNS_REGEX.test(toAddress) + || TON_RAW_ADDRESS_REGEX.test(toAddress) + ); + + useEffect(() => { + if (shouldUseAllBalance && balance) { + const calculatedFee = fee ? bigStrToHuman(fee) : 0; + setAmount(balance - calculatedFee); + } + }, [balance, fee, shouldUseAllBalance]); + + useEffect(() => { + if (!toAddress || hasToAddressError || !amount || !isAddressValid) { + return; + } + + runThrottled(() => { + fetchFee({ + toAddress, + amount, + comment, + }); + }); + }, [amount, comment, fetchFee, hasToAddressError, isAddressValid, toAddress]); + + const validateToAddress = useCallback(() => { + setHasToAddressError(Boolean(toAddress) && !isAddressValid); + }, [toAddress, isAddressValid]); + + const handlePasteClick = useCallback(() => { + navigator.clipboard + .readText() + .then((clipboardText) => { + if (clipboardText && ( + TON_ADDRESS_REGEX.test(clipboardText) + || TON_DNS_REGEX.test(clipboardText) + || TON_RAW_ADDRESS_REGEX.test(clipboardText) + )) { + setToAddress(clipboardText); + validateToAddress(); + } + }) + .catch(() => { + showNotification({ + message: 'Error reading clipboard', + }); + setShouldRenderPasteButton(false); + }); + }, [showNotification, validateToAddress]); + + const handleAmountInput = useCallback((value?: number) => { + setHasAmountError(false); + setIsInsufficientBalance(false); + + if (value === undefined) { + setAmount(undefined); + return; + } + + if (Number.isNaN(value) || value < 0) { + setHasAmountError(true); + return; + } + + if (!balance || value > balance) { + setHasAmountError(true); + setIsInsufficientBalance(true); + return; + } + + setAmount(value); + }, [balance]); + + const handleMaxAmountClick = useCallback((e: React.MouseEvent) => { + e.preventDefault(); + + if (!balance) { + return; + } + + setShouldUseAllBalance(true); + }, [balance]); + + const handleAmountChange = useCallback(() => { + setShouldUseAllBalance(false); + }, []); + + const handleCommentChange = useCallback((value) => { + setComment(trimStringByMaxBytes(value, COMMENT_MAX_SIZE_BYTES)); + }, []); + + const canSubmit = toAddress.length && amount && amount > 0 && !hasToAddressError && !hasAmountError; + + const handleSubmit = useCallback((e) => { + e.preventDefault(); + + if (!canSubmit) { + return; + } + + submitTransferInitial({ + amount: amount!, + toAddress, + comment, + }); + }, [canSubmit, submitTransferInitial, amount, toAddress, comment]); + + function renderFee() { + return ( +
+
Fee
+
+ {formatCurrencyExtended(bigStrToHuman(fee!), CARD_SECONDARY_VALUE_SYMBOL)} +
+
+ ); + } + + return ( +
+ + {shouldRenderPasteButton && toAddress === '' && ( + + )} + + + + {shouldRenderFee && renderFee()} + + + + + +
+ +
+ + ); +} + +export default memo(withGlobal((global): StateProps => { + const { + toAddress: initialAddress, + amount: initialAmount, + comment: initialComment, + fee, + } = global.currentTransfer; + + return { + initialAddress, + initialAmount, + initialComment, + fee, + tokens: selectAllTokens(global), + isLoading: global.currentTransfer.isLoading, + }; +})(TransferInitial)); + +function getBalanceFromTokens(tokens: UserToken[]) { + const primaryValue = tokens.reduce((acc, token) => acc + token.amount * token.price, 0); + const secondaryFactor = tokens.find((token) => token.symbol === CARD_SECONDARY_VALUE_SYMBOL)!.price; + + return primaryValue / secondaryFactor; +} + +function trimStringByMaxBytes(str: string, maxBytes: number) { + const decoder = new TextDecoder('utf-8'); + const encoded = new TextEncoder().encode(str); + + return decoder.decode(encoded.slice(0, maxBytes)); +} diff --git a/src/components/transfer/TransferModal.tsx b/src/components/transfer/TransferModal.tsx new file mode 100644 index 00000000..0c0e5975 --- /dev/null +++ b/src/components/transfer/TransferModal.tsx @@ -0,0 +1,277 @@ +import React, { + memo, useCallback, useEffect, useState, +} from '../../lib/teact/teact'; +import { getActions, withGlobal } from '../../global'; + +import { TransferState } from '../../global/types'; + +import { ANIMATED_STICKER_SMALL_SIZE_PX, CARD_SECONDARY_VALUE_SYMBOL } from '../../config'; +import { ANIMATED_STICKERS_PATHS } from '../ui/helpers/animatedAssets'; +import { bigStrToHuman } from '../../global/helpers'; +import buildClassName from '../../util/buildClassName'; +import useCurrentOrPrev from '../../hooks/useCurrentOrPrev'; +import { formatCurrencyExtended } from '../../util/formatNumber'; +import captureKeyboardListeners from '../../util/captureKeyboardListeners'; + +import Modal from '../ui/Modal'; +import ModalHeader from '../ui/ModalHeader'; +import Transition from '../ui/Transition'; +import TransferInitial from './TransferInitial'; +import PasswordForm from '../ui/PasswordForm'; +import Button from '../ui/Button'; +import AnimatedIcon from '../ui/AnimatedIcon'; + +import styles from './Transfer.module.scss'; +import modalStyles from '../ui/Modal.module.scss'; + +interface StateProps { + state: TransferState; + toAddress?: string; + amount?: number; + fee?: string; + comment?: string; + promiseId?: string; + error?: string; + isLoading?: boolean; + txId?: string; +} + +function TransferModal({ + state, amount, toAddress, fee, comment, promiseId, error, isLoading, txId, +}: StateProps) { + const { + submitTransferConfirm, submitTransferPassword, setTransferScreen, cleanTransferError, cancelTransfer, + showTransactionInfo, + } = getActions(); + + const isOpen = state !== TransferState.None; + const renderingState = useCurrentOrPrev(isOpen ? state : undefined, true) ?? -1; + const [nextKey, setNextKey] = useState(renderingState + 1); + const updateNextKey = useCallback(() => { + setNextKey(renderingState + 1); + }, [renderingState]); + + useEffect(() => { + if (isOpen) { + updateNextKey(); + } + }, [isOpen, updateNextKey]); + + useEffect(() => ( + state === TransferState.Confirm + ? captureKeyboardListeners({ + onEnter: () => { + submitTransferConfirm(); + }, + }) + : undefined + ), [state, submitTransferConfirm]); + + const handleTransferSubmit = useCallback((password: string) => { + submitTransferPassword({ password }); + }, [submitTransferPassword]); + + const handleModalClose = useCallback(() => { + setNextKey(TransferState.None); + }, []); + + const handleBackClick = useCallback(() => { + if (state === TransferState.Confirm) { + setTransferScreen({ state: TransferState.Initial }); + } + if (state === TransferState.Password) { + setTransferScreen({ state: TransferState.Confirm }); + } + setNextKey(nextKey - 1); + }, [nextKey, setTransferScreen, state]); + + const handleTransactionInfoClick = useCallback(() => { + cancelTransfer(); + if (txId) { + showTransactionInfo({ txId }); + } + }, [cancelTransfer, showTransactionInfo, txId]); + + function renderComment() { + if (!comment) { + return undefined; + } + + return ( + <> +
Comment
+
{comment}
+ + ); + } + + function renderConfirm(isActive: boolean) { + return ( + <> + +
+ +
Receiving address
+
+ {toAddress} +
+ +
Amount
+
+ {formatCurrencyExtended(amount || 0, '', true)} + {CARD_SECONDARY_VALUE_SYMBOL} + {fee && ( + <> +
Fee
+ + {formatCurrencyExtended(bigStrToHuman(fee), CARD_SECONDARY_VALUE_SYMBOL)} + + + )} +
+ + {renderComment()} + +
+ {promiseId ? ( + + ) : ( + + )} + +
+
+ + ); + } + + function renderPassword(isActive: boolean) { + return ( + <> + + + + ); + } + + function renderInProgress(isActive: boolean) { + return ( + <> + +
+ +
+ Please wait a few seconds for your
transaction to be processed... +
+
+ + ); + } + + function renderComplete(isActive: boolean) { + return ( + <> + + +
+ +
+ {formatCurrencyExtended(amount || 0, CARD_SECONDARY_VALUE_SYMBOL, true)} have been sent. +
+ +
+ +
+
+ + ); + } + + // eslint-disable-next-line consistent-return + function renderContent(isActive: boolean, isFrom: boolean, currentKey: number) { + switch (currentKey) { + case TransferState.Initial: + return ( + <> + + + + ); + + case TransferState.Confirm: + return renderConfirm(isActive); + + case TransferState.Password: + return renderPassword(isActive); + + case TransferState.InProgress: + return renderInProgress(isActive); + + case TransferState.Complete: + return renderComplete(isActive); + } + } + + return ( + + + {renderContent} + + + ); +} + +export default memo(withGlobal((global): StateProps => { + return global.currentTransfer; +})(TransferModal)); diff --git a/src/components/ui/AnimatedIcon.tsx b/src/components/ui/AnimatedIcon.tsx new file mode 100644 index 00000000..d9917834 --- /dev/null +++ b/src/components/ui/AnimatedIcon.tsx @@ -0,0 +1,70 @@ +import React, { + memo, useCallback, useState, +} from '../../lib/teact/teact'; + +import type { OwnProps as AnimatedStickerProps } from './AnimatedSticker'; + +import buildClassName from '../../util/buildClassName'; +import useMediaTransition from '../../hooks/useMediaTransition'; +import useFlag from '../../hooks/useFlag'; + +import AnimatedSticker from './AnimatedSticker'; + +const DEFAULT_SIZE = 150; + +export type OwnProps = + Partial + & { noTransition?: boolean; nonInteractive?: boolean }; + +const loadedAnimationUrls = new Set(); + +function AnimatedIcon(props: OwnProps) { + const { + size = DEFAULT_SIZE, + play = true, + noLoop = true, + className, + noTransition, + nonInteractive, + onLoad, + onClick, + ...otherProps + } = props; + const { tgsUrl } = props; + + const key = `${tgsUrl}_${size}`; + const [isAnimationLoaded, markAnimationLoaded] = useFlag(loadedAnimationUrls.has(key)); + const transitionClassNames = useMediaTransition(noTransition || isAnimationLoaded); + + const handleLoad = useCallback(() => { + markAnimationLoaded(); + loadedAnimationUrls.add(key); + + onLoad?.(); + }, [key, markAnimationLoaded, onLoad]); + + const [playKey, setPlayKey] = useState(String(Math.random())); + + const handleClick = useCallback(() => { + if (play === true) { + setPlayKey(String(Math.random())); + } + + onClick?.(); + }, [onClick, play]); + + return ( + + ); +} + +export default memo(AnimatedIcon); diff --git a/src/components/ui/AnimatedSticker.tsx b/src/components/ui/AnimatedSticker.tsx new file mode 100644 index 00000000..5f3f5575 --- /dev/null +++ b/src/components/ui/AnimatedSticker.tsx @@ -0,0 +1,239 @@ +import type { RefObject } from 'react'; + +import React, { + useEffect, useRef, memo, useCallback, useState, +} from '../../lib/teact/teact'; + +import { fastRaf } from '../../util/schedulers'; +import buildClassName from '../../util/buildClassName'; +import buildStyle from '../../util/buildStyle'; +import useHeavyAnimationCheck from '../../hooks/useHeavyAnimationCheck'; +import useBackgroundMode from '../../hooks/useBackgroundMode'; + +export type OwnProps = { + ref?: RefObject; + className?: string; + style?: string; + tgsUrl?: string; + play?: boolean | string; + playSegment?: [number, number]; + speed?: number; + noLoop?: boolean; + size: number; + quality?: number; + isLowPriority?: boolean; + forceOnHeavyAnimation?: boolean; + color?: [number, number, number]; + onClick?: NoneToVoidFunction; + onLoad?: NoneToVoidFunction; + onEnded?: NoneToVoidFunction; +}; + +type RLottieClass = typeof import('../../lib/rlottie/RLottie').default; +type RLottieInstance = import('../../lib/rlottie/RLottie').default; +let lottiePromise: Promise; +let RLottie: RLottieClass; + +// Time for the main interface to completely load +const LOTTIE_LOAD_DELAY = 3000; + +async function ensureLottie() { + if (!lottiePromise) { + lottiePromise = import('../../lib/rlottie/RLottie') as unknown as Promise; + RLottie = (await lottiePromise as any).default; + } + + return lottiePromise; +} + +setTimeout(ensureLottie, LOTTIE_LOAD_DELAY); + +function AnimatedSticker({ + ref, + className, + style, + tgsUrl, + play, + playSegment, + speed, + noLoop, + size, + quality, + isLowPriority, + color, + forceOnHeavyAnimation, + onClick, + onLoad, + onEnded, +}: OwnProps) { + // eslint-disable-next-line no-null/no-null + let containerRef = useRef(null); + if (ref) { + containerRef = ref; + } + + const [animation, setAnimation] = useState(); + const wasPlaying = useRef(false); + const isFrozen = useRef(false); + const isFirstRender = useRef(true); + + const playRef = useRef(); + playRef.current = play; + const playSegmentRef = useRef<[number, number]>(); + playSegmentRef.current = playSegment; + + useEffect(() => { + if (animation || !tgsUrl) { + return; + } + + const exec = () => { + if (!containerRef.current) { + return; + } + + const newAnimation = new RLottie( + containerRef.current, + tgsUrl, + { + noLoop, + size, + quality, + isLowPriority, + }, + onLoad, + color, + onEnded, + ); + + if (speed) { + newAnimation.setSpeed(speed); + } + + setAnimation(newAnimation); + }; + + if (RLottie) { + exec(); + } else { + ensureLottie().then(() => { + fastRaf(() => { + if (containerRef.current) { + exec(); + } + }); + }); + } + }, [color, animation, tgsUrl, isLowPriority, noLoop, onLoad, quality, size, speed, onEnded]); + + useEffect(() => { + if (!animation) return; + + animation.setColor(color); + }, [color, animation]); + + useEffect(() => { + return () => { + if (animation) { + animation.destroy(); + } + }; + }, [animation]); + + const playAnimation = useCallback((shouldRestart = false) => { + if (animation && (playRef.current || playSegmentRef.current)) { + if (playSegmentRef.current) { + animation.playSegment(playSegmentRef.current); + } else { + animation.play(shouldRestart); + } + } + }, [animation]); + + const pauseAnimation = useCallback(() => { + if (!animation) { + return; + } + + animation.pause(); + }, [animation]); + + const freezeAnimation = useCallback(() => { + isFrozen.current = true; + + if (!animation) { + return; + } + + if (!wasPlaying.current) { + wasPlaying.current = animation.isPlaying(); + } + + pauseAnimation(); + }, [animation, pauseAnimation]); + + const unfreezeAnimation = useCallback(() => { + if (wasPlaying.current) { + playAnimation(noLoop); + } + + wasPlaying.current = false; + isFrozen.current = false; + }, [noLoop, playAnimation]); + + const unfreezeAnimationOnRaf = useCallback(() => { + fastRaf(unfreezeAnimation); + }, [unfreezeAnimation]); + + useEffect(() => { + if (!animation) { + return; + } + if (play || playSegment) { + if (isFrozen.current) { + wasPlaying.current = true; + } else { + playAnimation(noLoop); + } + } else { + // eslint-disable-next-line no-lonely-if + if (isFrozen.current) { + wasPlaying.current = false; + } else { + pauseAnimation(); + } + } + }, [animation, play, playSegment, noLoop, playAnimation, pauseAnimation]); + + useEffect(() => { + if (animation) { + if (isFirstRender.current) { + isFirstRender.current = false; + } else if (tgsUrl) { + animation.changeData(tgsUrl); + playAnimation(); + } + } + }, [playAnimation, animation, tgsUrl]); + + useHeavyAnimationCheck(freezeAnimation, unfreezeAnimation, forceOnHeavyAnimation); + // Pausing frame may not happen in background + // so we need to make sure it happens right after focusing, + // then we can play again. + useBackgroundMode(freezeAnimation, unfreezeAnimationOnRaf); + + return ( +
+ ); +} + +export default memo(AnimatedSticker); diff --git a/src/components/ui/Button.module.scss b/src/components/ui/Button.module.scss new file mode 100644 index 00000000..08ca628f --- /dev/null +++ b/src/components/ui/Button.module.scss @@ -0,0 +1,199 @@ +@use "sass:color"; + +@import '../../styles/variables'; + +.button { + --border-radius-default: 0.75rem; + + cursor: pointer; + user-select: none; + + color: var(--color-gray-button-text); + text-decoration: none; + + background: none; + border: 0; + border-radius: 0; + outline: none !important; + + transition: background-color 150ms ease-in, color 150ms ease-in, opacity 150ms ease-in; + + // @optimization + &.clicked, + &:active { + transition: none !important; + } +} + +.button:not(.isSimple) { + display: flex; + align-items: center; + justify-content: center; + + width: 100%; + + font-size: 1.0625rem; + line-height: 1.25; + + &:not(.isText) { + max-width: 66%; + height: 3rem; + padding: 0.5rem 0.625rem; + + font-weight: 700; + color: var(--color-gray-button-text); + text-transform: uppercase; + + background-color: var(--color-gray-button-background); + border-radius: var(--border-radius-default); + + &:hover, + &:focus { + color: var(--color-gray-button-text-hover); + + background-color: var(--color-gray-button-background-hover); + } + + &:active { + color: var(--color-gray-button-text-active); + + background-color: var(--color-gray-button-background-active); + } + + &[disabled] { + pointer-events: none; + + opacity: 0.4; + } + } +} + +.isText { + color: var(--color-blue); + + background-color: transparent; + + transition: color 150ms ease-in; + + &:hover, + &:focus, + &:active { + color: var(--color-blue); + } + + &[disabled] { + opacity: 0.4; + } +} + +.button.primary:not(.isSimple) { + color: var(--color-blue-button-text); + + background-color: var(--color-blue-button-background); + + &:hover, + &:focus { + color: var(--color-blue-button-text-hover); + + background-color: var(--color-blue-button-background-hover); + } + + &:active { + color: var(--color-blue-button-text-active); + + background-color: var(--color-blue-button-background-active); + } +} + +.button.transparent:not(.isSimple) { + &, + &:hover, + &:active { + background: transparent; + } +} + +.button.disabled { + pointer-events: none; + cursor: default; + + opacity: 0.4; +} + +.button.destructive:not(.isSimple) { + color: var(--color-red-button-text); + + background-color: var(--color-red-button-background); + + &:hover, + &:focus { + color: var(--color-red-button-text-hover); + + background-color: var(--color-red-button-background-hover); + } + + &:active { + color: var(--color-red-button-text-active); + + background-color: var(--color-red-button-background-active); + } + + &[disabled] { + opacity: 0.4; + } +} + +.sizeSmall { + height: 2.5rem; +} + +.round { + width: 3.5rem; + height: 3.5rem; + + border-radius: 50%; + + &.sizeSmall { + width: 2.5rem; + height: 2.5rem; + } +} + +.loading { + position: relative; + + &::after { + content: ""; + + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + + width: 1rem; + height: 1rem; + margin: auto; + + border: 0.25rem solid transparent; + border-top-color: var(--color-white); + border-radius: 50%; + + animation: button-loading-spinner 1s ease infinite; + } +} + +.buttonText { + visibility: hidden; + opacity: 0; +} + +@keyframes button-loading-spinner { + from { + transform: rotate(0turn); + } + + to { + transform: rotate(1turn); + } +} diff --git a/src/components/ui/Button.tsx b/src/components/ui/Button.tsx new file mode 100644 index 00000000..36655224 --- /dev/null +++ b/src/components/ui/Button.tsx @@ -0,0 +1,90 @@ +import type { RefObject } from 'react'; +import React, { memo, useCallback, useState } from '../../lib/teact/teact'; + +import buildClassName from '../../util/buildClassName'; + +import styles from './Button.module.scss'; + +type OwnProps = { + ref?: RefObject; + children: React.ReactNode; + className?: string; + ariaLabel?: string; + forFormId?: string; + kind?: 'transparent'; + isSubmit?: boolean; + isPrimary?: boolean; + isSimple?: boolean; + isText?: boolean; + isLoading?: boolean; + isDisabled?: boolean; + isRound?: boolean; + isSmall?: boolean; + isDestructive?: boolean; + onClick?: () => void; +}; + +// Longest animation duration +const CLICKED_TIMEOUT = 400; + +function Button({ + ref, + children, + className, + ariaLabel, + forFormId, + kind, + isSubmit, + isLoading, + isPrimary, + isSimple, + isText, + isDisabled, + isRound, + isSmall, + isDestructive, + onClick, +}: OwnProps) { + const [isClicked, setIsClicked] = useState(false); + + const handleClick = useCallback(() => { + if (!isDisabled && onClick) { + onClick(); + } + + setIsClicked(true); + setTimeout(() => { + setIsClicked(false); + }, CLICKED_TIMEOUT); + }, [isDisabled, onClick]); + + return ( + + ); +} + +export default memo(Button); diff --git a/src/components/ui/Checkbox.module.scss b/src/components/ui/Checkbox.module.scss new file mode 100644 index 00000000..627175e7 --- /dev/null +++ b/src/components/ui/Checkbox.module.scss @@ -0,0 +1,63 @@ +.wrapper { + cursor: pointer; + + position: relative; + + margin-bottom: 1.75rem; + padding-left: 2.25rem; + + font-size: 0.9375rem; + color: var(--color-black); +} + +.input { + position: absolute; + z-index: -1; + + opacity: 0; +} + +.content { + &::before, + &::after { + content: ""; + + position: absolute; + top: 0.1875rem; + left: 0.25rem; + + display: block; + + width: 1.25rem; + height: 1.25rem; + } + + &::before { + background-color: transparent; + border: 0.125rem solid var(--color-gray-1); + border-radius: 0.375rem; + + transition: border-color 0.1s ease, background-color 0.1s ease; + } + + // noinspection CssUnknownTarget + &::after { + opacity: 0; + background: center no-repeat url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTguODI0IDE0Ljc4NmMuMzk2IDAgLjczNy0uMTk3Ljk2Ny0uNTQ5bDQuOTExLTcuNjhjLjE0My0uMjMuMjc1LS40OTQuMjc1LS43NDYgMC0uNTM5LS40ODQtLjkwMS0xLS45MDEtLjMzIDAtLjYyNi4xNzUtLjg1Ny41NDlsLTQuMzQgNi45NjUtMi4wNDMtMi42MDNjLS4yNjQtLjM0MS0uNTI3LS40NjItLjg1Ny0uNDYyLS41MzggMC0uOTU2LjQyOS0uOTU2Ljk3OCAwIC4yNjQuMS41MDUuMjg2LjczNmwyLjU5MyAzLjE2NGMuMjk2LjM4NS42MTUuNTUgMS4wMjEuNTVaIiBmaWxsPSIjZmZmIi8+PC9zdmc+); + background-size: contain; + + transition: opacity 0.1s ease; + } +} + +.input:checked ~ .content { + &::before { + background-color: var(--color-blue); + border-color: var(--color-blue); + } + + &::after { + opacity: 1; + } +} + diff --git a/src/components/ui/Checkbox.tsx b/src/components/ui/Checkbox.tsx new file mode 100644 index 00000000..f3780568 --- /dev/null +++ b/src/components/ui/Checkbox.tsx @@ -0,0 +1,41 @@ +import type { ChangeEvent } from 'react'; +import React, { memo, useCallback } from '../../lib/teact/teact'; + +import styles from './Checkbox.module.scss'; + +type OwnProps = { + id?: string; + children?: React.ReactNode; + checked: boolean; + onChange: (isChecked: boolean) => void; +}; + +function Checkbox({ + id, + children, + checked, + onChange, +}: OwnProps) { + const handleChange = useCallback((e: ChangeEvent) => { + e.preventDefault(); + onChange(e.currentTarget.checked); + }, [onChange]); + + return ( + + ); +} + +export default memo(Checkbox); diff --git a/src/components/ui/Image.tsx b/src/components/ui/Image.tsx new file mode 100644 index 00000000..4d439fbd --- /dev/null +++ b/src/components/ui/Image.tsx @@ -0,0 +1,43 @@ +import React, { memo } from '../../lib/teact/teact'; + +import buildClassName from '../../util/buildClassName'; +import useMediaTransition from '../../hooks/useMediaTransition'; +import useFlag from '../../hooks/useFlag'; + +interface OwnProps { + url: string; + alt?: string; + className?: string; + imageClassName?: string; +} + +const loadedUrls = new Set(); + +function Image({ + url, + alt, + className, + imageClassName, +}: OwnProps) { + const [isLoaded, markIsLoaded] = useFlag(loadedUrls.has(url)); + + const handleLoad = () => { + markIsLoaded(); + loadedUrls.add(url); + }; + const transitionClassNames = useMediaTransition(isLoaded); + + return ( +
+ {alt} +
+ ); +} + +export default memo(Image); diff --git a/src/components/ui/Input.module.scss b/src/components/ui/Input.module.scss new file mode 100644 index 00000000..70647ba8 --- /dev/null +++ b/src/components/ui/Input.module.scss @@ -0,0 +1,279 @@ +.wrapper { + position: relative; + + margin-bottom: 1rem; +} + +.input { + display: block; + + width: 100%; + height: 3rem; + padding: 0.5rem 0.75rem; + + font-size: 1rem; + font-weight: 600; + line-height: 1.25; + color: var(--color-black); + word-break: break-word; + + background-color: var(--color-background-first); + border: none; + border-radius: var(--border-radius-default); + outline: none; + + transition: border-color 0.15s ease, box-shadow 0.15s ease; + + -webkit-appearance: none; + + &::placeholder { + color: var(--color-gray-3); + + transition: color 150ms ease-in; + } + + // Hide hint for Safari password strength meter + // noinspection CssInvalidPseudoSelector + &::-webkit-strong-password-auto-fill-button { + position: absolute; + + overflow: hidden !important; + + width: 0 !important; + min-width: 0 !important; + max-width: 0 !important; + + opacity: 0; + clip: rect(0, 0, 0, 0); + } + + :global(html:not(.is-ios)) &:not(&_rich) { + font-size: 0.9375rem; + } + + &.error, + &.error:focus { + box-shadow: inset 0 0 0 0.125rem var(--color-red); + + // noinspection CssInvalidPseudoSelector + &:autofill, + &:-webkit-autofill-strong-password, + &:-webkit-autofill-strong-password-viewable, + &:-webkit-autofill-and-obscured { + box-shadow: inset 0 0 0 0.125rem var(--color-red), + inset 0 0 0 10rem var(--color-background-first); + } + } + + &:focus { + box-shadow: inset 0 0 0 0.125rem var(--color-blue); + + // noinspection CssInvalidPseudoSelector + &:autofill, + &:-webkit-autofill-strong-password, + &:-webkit-autofill-strong-password-viewable, + &:-webkit-autofill-and-obscured { + box-shadow: inset 0 0 0 0.125rem var(--color-blue), + inset 0 0 0 10rem var(--color-background-first); + } + } + + &:hover, + &:focus { + &::placeholder { + color: var(--color-interactive-input-text-hover-active); + } + } + + &:focus + .shadow { + display: none; + } + + // Disable yellow highlight on autofill + // noinspection CssInvalidPseudoSelector + &:autofill, + &:-webkit-autofill-strong-password, + &:-webkit-autofill-strong-password-viewable, + &:-webkit-autofill-and-obscured { + box-shadow: inset 0 0 0 10rem var(--color-background-first); + + transition: none !important; + + -webkit-text-fill-color: var(--color-black); + } + + &_password { + padding-right: 2.5rem; + } + + &_rich { + overflow: hidden; + flex: 1 1 auto; + + height: 3.75rem; + margin-right: 0.5rem; + padding: 0.375rem 0 0.375rem 0.625rem; + + font-size: 3rem; + font-weight: 600; + line-height: 1; + white-space: nowrap; + + &::after { + content: attr(data-suffix); + + margin-left: 0.25rem; + + font-size: 1rem; + font-weight: 700; + color: var(--color-gray-4); + } + + /* Fix for ContentEditable multiline "issues" */ + br { + display:none; + } + + * { + display:inline; + + white-space:nowrap; + } + + &.isEmpty::before { + content: '0'; + + font-size: 3rem; + color: var(--color-gray-4); + + transition: color 150ms ease-in; + } + + &:focus { + box-shadow: none; + } + + &:hover, + &:focus { + &.isEmpty::before { + color: var(--color-interactive-input-text-hover-active); + } + } + } +} + +.input__wrapper { + display: flex; + + max-width: 100%; + padding: 0.125rem; + + background-color: var(--color-background-first); + border-radius: var(--border-radius-default); + outline: none; + + transition: box-shadow 0.15s ease; + + &.error, + &_hasFocus.error, { + box-shadow: inset 0 0 0 0.125rem var(--color-red); + } + + &_hasFocus { + box-shadow: inset 0 0 0 0.125rem var(--color-blue); + } +} + +.visibilityToggler { + cursor: pointer; + + position: absolute; + top: 0.75rem; + right: 0.75rem; + + padding: 0; + + font-size: 1.5rem; + line-height: 1; + color: var(--color-black); + + opacity: 0.5; + background: none; + border: none; + outline: none; + + transition: opacity 150ms ease-in; + + &:focus { + opacity: 1; + } + + &_push { + top: auto; + bottom: 0.5rem; + } +} + +.fractional { + font-size: 1rem; + font-weight: 700; +} + +.label { + cursor: text; + + display: block; + + margin-bottom: 0.25rem; + padding: 0 0.5rem; + + font-size: 0.8125rem; + font-weight: 700; + color: var(--color-blue); + white-space: nowrap; + + &.error { + color: var(--color-red); + } + + &_error { + float: right; + } + + &_forPassword { + position: absolute; + right: 0; + bottom: 100%; + } + + &_errorBottom { + margin-top: 1.5rem; + + font-size: 0.9375rem; + font-weight: 600; + text-align: center; + } +} + +.shadow { + position: absolute; + right: 0; + bottom: 0; + + width: 3rem; + height: 3rem; + + background: var(--color-linear-effect-1); + border-radius: 0 var(--border-radius-default) var(--border-radius-default) 0; + + .error + & { + right: 0.125rem; + bottom: 0.125rem; + + height: 2.75rem; + } + + @media (prefers-color-scheme: dark) { + display: none; + } +} diff --git a/src/components/ui/Input.tsx b/src/components/ui/Input.tsx new file mode 100644 index 00000000..6fdf2a3e --- /dev/null +++ b/src/components/ui/Input.tsx @@ -0,0 +1,114 @@ +import { RefObject } from 'react'; +import React, { memo, useState, VirtualElement } from '../../lib/teact/teact'; + +import buildClassName from '../../util/buildClassName'; + +import styles from './Input.module.scss'; + +type OwnProps = { + ref?: RefObject; + id?: string; + type?: 'text' | 'password'; + labelText?: string; + placeholder?: string; + value?: string | number; + isRequired?: boolean; + isControlled?: boolean; + hasError?: boolean; + error?: string; + inputArg?: any; + children?: VirtualElement; + onInput: (value: string, inputArg?: any) => void; + onKeyDown?: (e: React.KeyboardEvent) => void; + onFocus?: NoneToVoidFunction; + onBlur?: NoneToVoidFunction; +}; + +function Input({ + ref, + id, + labelText, + placeholder, + isRequired, + isControlled, + hasError, + type = 'text', + error, + value = '', + inputArg, + children, + onInput, + onKeyDown, + onFocus, + onBlur, +}: OwnProps) { + const [isPasswordVisible, setIsPasswordVisible] = useState(false); + + const handleInput = (e: React.FormEvent) => { + onInput(e.currentTarget.value, inputArg); + }; + + const handleTogglePasswordVisibility = () => { + setIsPasswordVisible(!isPasswordVisible); + }; + + const finalType = type === 'text' || isPasswordVisible ? 'text' : 'password'; + const inputFullClass = buildClassName( + styles.input, + type === 'password' && styles.input_password, + (hasError || error) && styles.error, + ); + const labelFullClass = buildClassName( + styles.label, + (hasError || error) && styles.error, + (hasError || error) && type === 'password' && styles.label_forPassword, + ); + + return ( +
+ {error && labelText && ( + + )} + {labelText && ( + + )} + + {type !== 'password' && } + {type === 'password' && ( + + )} + {error && !labelText && ( + + )} + {children} +
+ ); +} + +export default memo(Input); diff --git a/src/components/ui/InputMnemonic.module.scss b/src/components/ui/InputMnemonic.module.scss new file mode 100644 index 00000000..78ad1619 --- /dev/null +++ b/src/components/ui/InputMnemonic.module.scss @@ -0,0 +1,71 @@ +.wrapper { + position: relative; + + display: flex; + align-items: center; + + background-color: var(--color-background-first); + border-radius: var(--border-radius-default); + + transition: box-shadow 0.15s ease; + + &_focus { + box-shadow: inset 0 0 0 2px var(--color-blue); + } + + &_error { + box-shadow: inset 0 0 0 2px var(--color-red); + + .input { + color: var(--color-red); + } + } +} + +.input { + display: block; + + width: 100%; + height: 3rem; + padding: 0.5rem 0.75rem; + + font-size: 1rem; + line-height: 1.25; + color: var(--color-black); + + background: transparent !important; + border: none; + outline: none; + + appearance: none; + + &::placeholder { + color: var(--color-gray-3); + } + + :global(html:not(.is-ios)) & { + font-size: 0.9375rem; + } + + &:hover, + &:focus { + &::placeholder { + color: var(--color-interactive-input-text-hover-active); + } + } +} + +.label { + cursor: text; + + display: block; + + min-width: 2em; + margin: 0; + padding: 0 0 0 0.75rem; + + font-size: 1rem; + font-weight: 600; + color: var(--color-gray-4); + text-align: right; +} diff --git a/src/components/ui/InputMnemonic.tsx b/src/components/ui/InputMnemonic.tsx new file mode 100644 index 00000000..6baaff22 --- /dev/null +++ b/src/components/ui/InputMnemonic.tsx @@ -0,0 +1,163 @@ +import { wordlists } from 'tonweb-mnemonic'; + +import React, { + memo, useCallback, useEffect, useState, +} from '../../lib/teact/teact'; +import buildClassName from '../../util/buildClassName'; +import useFlag from '../../hooks/useFlag'; + +import SuggestionsList from './SuggestionsList'; + +import styles from './InputMnemonic.module.scss'; + +type OwnProps = { + id?: string; + nextId?: string; + labelText?: string; + className?: string; + value?: string; + isInModal?: boolean; + suggestionsPosition?: 'top' | 'bottom'; + inputArg?: any; + onInput: (value: string, inputArg?: any) => void; +}; + +const { default: mnemonicSuggestions } = wordlists; +const SUGGESTION_WORDS_COUNT = 7; + +function InputMnemonic({ + id, nextId, labelText, className, value = '', isInModal, suggestionsPosition, inputArg, onInput, +}: OwnProps) { + const [hasFocus, markFocus, unmarkFocus] = useFlag(); + const [hasError, setHasError] = useState(false); + const [filteredSuggestions, setFilteredSuggestions] = useState([]); + const [activeSuggestionIndex, setActiveSuggestionIndex] = useState(0); + const [showSuggestions, setShowSuggestions] = useState(false); + const shouldRenderSuggestions = showSuggestions && value && filteredSuggestions.length > 0; + + useEffect(() => { + if (showSuggestions && value && filteredSuggestions.length === 0) { + setHasError(true); + } else if (!hasFocus && value && !isCorrectMnemonic(value)) { + setHasError(true); + } else { + setHasError(false); + } + }, [filteredSuggestions.length, hasFocus, showSuggestions, value]); + + const processSuggestions = (userInput: string) => { + // Filter our suggestions that don't contain the user's input + const unLinked = mnemonicSuggestions.filter( + (suggestion) => suggestion.toLowerCase().startsWith(userInput.toLowerCase()), + ).slice(0, SUGGESTION_WORDS_COUNT); + + onInput(userInput, inputArg); + setFilteredSuggestions(unLinked); + setActiveSuggestionIndex(0); + setShowSuggestions(true); + }; + + const handleChange = (e: React.ChangeEvent) => { + const userInput = e.target.value; + + processSuggestions(userInput); + }; + + const handleKeyDown = (e: React.KeyboardEvent) => { + if (!value) { + return; + } + + if (e.code === 'Enter' || (e.code === 'Tab' && !(e.shiftKey || e.ctrlKey || e.altKey || e.metaKey))) { + onInput(filteredSuggestions[activeSuggestionIndex], inputArg); + setFilteredSuggestions([filteredSuggestions[activeSuggestionIndex]]); + setActiveSuggestionIndex(0); + setShowSuggestions(false); + + if (showSuggestions) { + e.preventDefault(); + } + + if (nextId) { + requestAnimationFrame(() => { + const nextInput = document.getElementById(nextId); + nextInput?.focus(); + (nextInput as HTMLInputElement)?.select(); + }); + } + } + + if (e.code === 'ArrowUp') { + if (activeSuggestionIndex === 0) { + return; + } + setActiveSuggestionIndex(activeSuggestionIndex - 1); + } + + if (e.code === 'ArrowDown') { + if (activeSuggestionIndex === filteredSuggestions.length - 1) { + return; + } + setActiveSuggestionIndex(activeSuggestionIndex + 1); + } + }; + + const handleClick = useCallback((suggestion: string) => { + onInput(suggestion, inputArg); + setShowSuggestions(false); + setActiveSuggestionIndex(0); + setFilteredSuggestions([]); + }, [inputArg, onInput]); + + const handleFocus = (e: React.FocusEvent) => { + processSuggestions(e.target.value); + markFocus(); + }; + + const handleBlur = () => { + unmarkFocus(); + requestAnimationFrame(() => { + setShowSuggestions(false); + setFilteredSuggestions([]); + }); + }; + + return ( +
+ {shouldRenderSuggestions && ( + + )} + + +
+ ); +} + +function isCorrectMnemonic(mnemonic: string) { + return mnemonicSuggestions.includes(mnemonic); +} + +export default memo(InputMnemonic); diff --git a/src/components/ui/InputNumber.tsx b/src/components/ui/InputNumber.tsx new file mode 100644 index 00000000..7aeba1ec --- /dev/null +++ b/src/components/ui/InputNumber.tsx @@ -0,0 +1,56 @@ +import React, { memo } from '../../lib/teact/teact'; + +import buildClassName from '../../util/buildClassName'; + +import styles from './Input.module.scss'; + +type OwnProps = { + id?: string; + labelText?: string; + value?: string | number; + minValue?: number; + isRequired?: boolean; + hasError?: boolean; + onInput: (value: number) => void; + onKeyDown?: (e: React.KeyboardEvent) => void; +}; + +const STEP = 1e-6; + +function InputNumber({ + id, + labelText, + isRequired, + hasError, + value = '', + minValue, + onInput, + onKeyDown, +}: OwnProps) { + const handleInput = (e: React.FormEvent) => { + const { currentTarget: target } = e; + onInput(Number(target.value.replace(/,/g, '.').replace(/[^.\d]+/, ''))); + }; + + return ( +
+ + {labelText && ( + + )} +
+ ); +} + +export default memo(InputNumber); diff --git a/src/components/ui/InputNumberRich.tsx b/src/components/ui/InputNumberRich.tsx new file mode 100644 index 00000000..d9bdea68 --- /dev/null +++ b/src/components/ui/InputNumberRich.tsx @@ -0,0 +1,156 @@ +import React, { + memo, useCallback, useLayoutEffect, useRef, useState, VirtualElement, +} from '../../lib/teact/teact'; + +import { CARD_SECONDARY_VALUE_SYMBOL, FRACTION_DIGITS } from '../../config'; +import { saveCaretPosition } from '../../util/saveCaretPosition'; +import buildClassName from '../../util/buildClassName'; +import useFlag from '../../hooks/useFlag'; + +import styles from './Input.module.scss'; + +type OwnProps = { + id?: string; + labelText?: string; + value?: number; + hasError?: boolean; + error?: string; + children?: VirtualElement; + onInput: (value?: number) => void; + onChange?: (e: React.FormEvent) => void; + onPressEnter?: (e: React.KeyboardEvent) => void; +}; + +const VALUE_REGEX = /^([0-9]+)([.,])?([0-9]+)?$/; + +function InputNumberRich({ + id, + labelText, + hasError, + error, + value, + children, + onChange, + onInput, + onPressEnter, +}: OwnProps) { + // eslint-disable-next-line no-null/no-null + const inputRef = useRef(null); + const prevValueRef = useRef(''); + const [isEmpty, setIsEmpty] = useState(true); + const [hasFocus, markHasFocus, unmarkHasFocus] = useFlag(false); + + const handleBlur = useCallback(() => { + unmarkHasFocus(); + const newValue = Number(prevValueRef.current); + if (!Number.isNaN(newValue)) { + onInput(newValue === 0 ? undefined : parseFloat(newValue.toFixed(FRACTION_DIGITS))); + } + }, [onInput, unmarkHasFocus]); + + const renderValue = useCallback((inputValue = '', shouldReset = false) => { + if (!inputRef.current) { + return; + } + + const values = inputValue.toString().match(VALUE_REGEX); + + // eslint-disable-next-line no-null/no-null + if (values === null || values.length < 4 || values[0] === '') { + if (shouldReset || inputValue === '') { + prevValueRef.current = ''; + inputRef.current.innerText = ''; + } else { + renderValue(prevValueRef.current, true); + } + + setIsEmpty(shouldReset || prevValueRef.current === ''); + return; + } + + prevValueRef.current = inputValue; + setIsEmpty(false); + + const [, wholePart, dotPart, fractionPart] = values; + + const newHtml = `${parseInt(wholePart, 10)}${fractionPart || dotPart + ? `.${(fractionPart || '').substring(0, FRACTION_DIGITS)}` + : '' + }`; + + const restoreCaretPosition = document.activeElement === inputRef.current + ? saveCaretPosition(inputRef.current) + : undefined; + + // Trick for remove pseudo-element with placeholder in this tick + inputRef.current.classList.toggle(styles.isEmpty, !newHtml.length); + inputRef.current.innerHTML = newHtml; + if (restoreCaretPosition) { + restoreCaretPosition(); + } + handleBlur(); + }, [handleBlur]); + + useLayoutEffect(() => { + if (value) { + renderValue(value.toString()); + } + }, [renderValue, value]); + + const handleKeyDown = (e: React.KeyboardEvent) => { + if (e.key === 'Enter' && onPressEnter) { + onPressEnter(e); + } + }; + + const handleChange = (e: React.FormEvent) => { + onChange?.(e); + const newValue = e.currentTarget.innerText.trim(); + renderValue(newValue); + }; + + const inputFullClass = buildClassName( + styles.input__wrapper, + (hasError || error) && styles.error, + hasFocus && styles.input__wrapper_hasFocus, + ); + + return ( +
+ {error && ( + + )} + {labelText && ( + + )} +
+ {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */} +
+ {children} +
+
+ ); +} + +export default memo(InputNumberRich); diff --git a/src/components/ui/Loading.module.scss b/src/components/ui/Loading.module.scss new file mode 100644 index 00000000..e787b2b1 --- /dev/null +++ b/src/components/ui/Loading.module.scss @@ -0,0 +1,80 @@ +.spinner { + --spinner-size: 2rem; + + position: relative; + + display: flex; + align-items: center; + justify-content: center; + + width: var(--spinner-size); + height: var(--spinner-size); +} + +.inner { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + + background-repeat: no-repeat; + background-size: 100%; + + animation-name: spin; + animation-duration: 1s; + animation-timing-function: linear; + animation-iteration-count: infinite; +} + +.withBackground { + &::before { + content: ''; + + position: absolute; + top: -0.125rem; + right: -0.125rem; + bottom: -0.125rem; + left: -0.125rem; + + border-radius: 50%; + } + + &.dark::before { + background: rgba(0, 0, 0, 0.25); + } + + &.light::before { + background: rgba(255, 255, 255, 0.4); + } +} + +.white { + .inner { + background-image: var(--spinner-white-data); + } + + &.withBackground { + .inner { + background-image: var(--spinner-white-thin-data); + } + } +} + +.blue { + .inner { + background-image: var(--spinner-blue-data); + } +} + + +@keyframes spin { + from { + transform: rotate(0deg); + } + + to { + transform: rotate(360deg); + } +} + diff --git a/src/components/ui/Loading.tsx b/src/components/ui/Loading.tsx new file mode 100644 index 00000000..1ea18577 --- /dev/null +++ b/src/components/ui/Loading.tsx @@ -0,0 +1,27 @@ +import React, { memo } from '../../lib/teact/teact'; + +import buildClassName from '../../util/buildClassName'; + +import styles from './Loading.module.scss'; + +type OwnProps = { + color?: 'blue' | 'white'; + backgroundColor?: 'light' | 'dark'; +}; + +function Loading({ color = 'blue', backgroundColor }: OwnProps) { + const fullClassName = buildClassName( + styles.spinner, + styles[color], + backgroundColor && styles.withBackground, + backgroundColor && styles[backgroundColor], + ); + + return ( +
+
+
+ ); +} + +export default memo(Loading); diff --git a/src/components/ui/Menu.module.scss b/src/components/ui/Menu.module.scss new file mode 100644 index 00000000..c9504a03 --- /dev/null +++ b/src/components/ui/Menu.module.scss @@ -0,0 +1,64 @@ +.wrapper { + user-select: none; + + position: relative; +} + +.bubble { + + --offset-y: calc(100% + 0.5rem); + --offset-x: 0; + + position: absolute; + z-index: var(--z-menu-bubble); + transform: scale(0.5); + + overflow: hidden; + overscroll-behavior: contain; + display: block; + + min-width: 13.5rem; + margin: 0; + padding: 0.5rem; + + list-style: none; + + background-color: var(--color-background-window); + border-radius: var(--border-radius-default); + box-shadow: var(--default-shadow); + + transition: opacity 0.2s cubic-bezier(0.2, 0, 0.2, 1), transform 0.2s cubic-bezier(0.2, 0, 0.2, 1) !important; + + &:global(.open) { + transform: scale(1); + } + + &:global(.closing) { + transition: opacity 0.2s ease-in, transform 0.2s ease-in !important; + } + + &.top { + top: var(--offset-y); + } + + &.bottom { + bottom: var(--offset-y); + } + + &.left { + left: var(--offset-x); + } + + &.right { + right: var(--offset-x); + } +} + +.backdrop { + position: fixed; + z-index: var(--z-menu-backdrop); + top: -100vh; + right: -100vw; + bottom: -100vh; + left: -100vw; +} diff --git a/src/components/ui/Menu.tsx b/src/components/ui/Menu.tsx new file mode 100644 index 00000000..c8a02547 --- /dev/null +++ b/src/components/ui/Menu.tsx @@ -0,0 +1,105 @@ +import React, { FC, useEffect, useRef } from '../../lib/teact/teact'; + +import useShowTransition from '../../hooks/useShowTransition'; +import useVirtualBackdrop from '../../hooks/useVirtualBackdrop'; +import useEffectWithPrevDeps from '../../hooks/useEffectWithPrevDeps'; +import captureEscKeyListener from '../../util/captureEscKeyListener'; +import buildClassName from '../../util/buildClassName'; +import { dispatchHeavyAnimationEvent } from '../../hooks/useHeavyAnimationCheck'; + +import styles from './Menu.module.scss'; + +type OwnProps = { + children: React.ReactNode; + isOpen: boolean; + id?: string; + className?: string; + bubbleClassName?: string; + positionX?: 'left' | 'right'; + positionY?: 'top' | 'bottom'; + autoClose?: boolean; + shouldSkipTransition?: boolean; + noCloseOnBackdrop?: boolean; + onCloseAnimationEnd?: () => void; + onClose?: () => void; + onMouseEnter?: (e: React.MouseEvent) => void; + onMouseLeave?: (e: React.MouseEvent) => void; +}; + +const ANIMATION_DURATION = 200; + +const Menu: FC = ({ + children, + isOpen, + id, + className, + bubbleClassName, + positionX = 'left', + positionY = 'top', + autoClose = false, + shouldSkipTransition, + noCloseOnBackdrop = false, + onCloseAnimationEnd, + onClose, + onMouseEnter, + onMouseLeave, +}) => { + // eslint-disable-next-line no-null/no-null + const menuRef = useRef(null); + + const { + transitionClassNames, + } = useShowTransition( + isOpen, + onCloseAnimationEnd, + shouldSkipTransition, + undefined, + shouldSkipTransition, + ); + + useEffect( + () => (isOpen && onClose ? captureEscKeyListener(onClose) : undefined), + [isOpen, onClose], + ); + + useEffectWithPrevDeps(([prevIsOpen]) => { + if (isOpen || (!isOpen && prevIsOpen === true)) { + dispatchHeavyAnimationEvent(ANIMATION_DURATION); + } + }, [isOpen]); + + useVirtualBackdrop(isOpen, menuRef, noCloseOnBackdrop ? undefined : onClose); + + const fullBubbleClassName = buildClassName( + styles.bubble, + bubbleClassName, + 'custom-scroll', + styles[positionY], + styles[positionX], + transitionClassNames, + ); + + return ( +
+ {isOpen && ( + // This only prevents click events triggering on underlying elements +
+ )} +
+ {children} +
+
+ ); +}; + +export default Menu; diff --git a/src/components/ui/MenuItem.module.scss b/src/components/ui/MenuItem.module.scss new file mode 100644 index 00000000..31f817c3 --- /dev/null +++ b/src/components/ui/MenuItem.module.scss @@ -0,0 +1,60 @@ +.menuItem { + --border-radius-default: 0.75rem; + + cursor: pointer; + + position: relative; + + overflow: hidden; + display: flex; + + width: 100%; + padding: 0.75rem 0.5rem; + + font-size: 0.9375rem; + font-weight: 600; + line-height: 1; + color: var(--color-blue); + text-decoration: none; + white-space: nowrap; + + background: none; + border: none !important; + border-radius: var(--border-radius-default); + outline: none !important; + box-shadow: none !important; + + transition: color 150ms ease-in, background-color 150ms ease-in; + + @media (hover: hover) { + &:hover, + &:focus { + text-decoration: none; + + background-color: var(--color-interactive-popup-menu-hover); + } + + &:active { + color: var(--color-gray-1) !important; + + background-color: var(--color-interactive-popup-menu-active); + } + } + + @media (max-width: 600px) { + &:focus, + &:hover { + color: var(--color-blue); + } + + &:active { + color: var(--color-gray-1) !important; + + background-color: var(--color-interactive-popup-menu-active); + } + } +} + +.destructive { + color: var(--color-red) !important; +} diff --git a/src/components/ui/MenuItem.tsx b/src/components/ui/MenuItem.tsx new file mode 100644 index 00000000..9bee8acb --- /dev/null +++ b/src/components/ui/MenuItem.tsx @@ -0,0 +1,79 @@ +import React, { FC, useCallback } from '../../lib/teact/teact'; + +import buildClassName from '../../util/buildClassName'; + +import styles from './MenuItem.module.scss'; + +type OnClickHandler = (e: React.SyntheticEvent) => void; + +type OwnProps = { + className?: string; + href?: string; + children: React.ReactNode; + onClick?: OnClickHandler; + isDestructive?: boolean; +}; + +const MenuItem: FC = (props) => { + const { + className, + href, + children, + onClick, + isDestructive, + } = props; + + const handleClick = useCallback((e: React.MouseEvent) => { + if (!onClick) { + e.stopPropagation(); + e.preventDefault(); + + return; + } + + onClick(e); + }, [onClick]); + + const handleKeyDown = useCallback((e: React.KeyboardEvent) => { + if (e.code !== 'Enter' && e.code !== 'Space') { + return; + } + + if (!onClick) { + e.stopPropagation(); + e.preventDefault(); + + return; + } + + onClick(e); + }, [onClick]); + + const fullClassName = buildClassName( + styles.menuItem, + className, + isDestructive && styles.destructive, + ); + + if (href) { + return ( + + {children} + + ); + } + + return ( +
+ {children} +
+ ); +}; + +export default MenuItem; diff --git a/src/components/ui/Modal.module.scss b/src/components/ui/Modal.module.scss new file mode 100644 index 00000000..f5b72c6c --- /dev/null +++ b/src/components/ui/Modal.module.scss @@ -0,0 +1,249 @@ +.modal { + --transition: 350ms cubic-bezier(0.2, 0.9, 0.42, 1); + + position: relative; + z-index: var(--z-modal); + + &.error { + .dialog { + max-width: 23rem; + } + } + + &:global(.open) .backdrop, + &:global(.open) .dialog { + opacity: 1; + } + + &:not(.slideUp):global(.open) .dialog { + transform: translate3d(0, 0, 0); + } + + &:not(.slideUp):global(.closing) .dialog { + transform: translate3d(0, 1rem, 0); + } + + &.slideUp:global(.shown) { + .container { + overflow: hidden; + } + + .dialog { + transform: translateY(100%); + } + + &:global(.shown.open) { + .dialog { + transform: translateY(0); + } + } + } +} + +.container { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + + display: flex; + align-items: center; + justify-content: center; + + padding: 0 1rem; + + .slideUp & { + align-items: flex-end; + + padding: 0; + } +} + +.backdrop { + position: fixed; + z-index: -1; + top: 0; + right: 0; + bottom: 0; + left: 0; + + opacity: 0; + background-color: var(--color-tint); + + transition: opacity var(--transition); +} + +.noBackdrop { + background-color: transparent !important; +} + +.dialog { + position: relative; + transform: translate3d(0, -1rem, 0); + + display: inline-flex; + flex-direction: column; + + width: 100%; + min-width: 17.5rem; + max-width: 28rem; + max-height: calc(var(--vh, 1vh) * 100); + margin: 2rem auto; + + opacity: 0; + background-color: var(--color-background-window); + border-radius: var(--border-radius-small); + box-shadow: var(--default-shadow); + + transition: transform var(--transition), opacity var(--transition); + + .slideUp & { + transform: none; + + max-height: calc(95 * var(--vh, 1vh)); + margin: 0; + + opacity: 1; + background: var(--color-background-second); + border-radius: var(--border-radius-default) var(--border-radius-default) 0 0; + + transition: transform var(--transition); + } +} + +.header { + display: flex; + flex-shrink: 0; + align-items: center; + + padding: 1rem 1rem 0.75rem; + + color: var(--color-black); + + &_transition { + margin: -1rem 0 0.8125rem 0; + padding: 1rem 1rem 0; + } + + .slideUp & { + padding-bottom: 0; + } +} + +.closeButton { + width: 1.875rem !important; + height: 1.875rem !important; + padding: 0 !important; + + color: var(--color-close-button-text) !important; + + background-color: var(--color-close-button-background) !important; + border-radius: 50% !important; + + transition: background-color 150ms ease-in; + + &:hover, + &:focus { + color: var(--color-close-button-text-hover) !important; + + background-color: var(--color-close-button-background-hover) !important; + } + + &:active { + color: var(--color-close-button-text-active) !important; + + background-color: var(--color-close-button-background-active) !important; + } +} + +.closeIcon { + font-size: 1.875rem; + line-height: 1; + + transition: color 150ms ease-in; +} + +.title { + overflow: hidden; + flex: 1 1 auto; + + font-size: 1.0625rem; + font-weight: 700; + text-align: center; + text-overflow: ellipsis; + + &:not(:only-child) { + margin: 0 0.5rem 0 2.5rem; + } +} + +.content { + overflow-y: auto; + display: flex; + flex-direction: column; + flex-grow: 1; + + width: 100%; + padding-top: 0.5rem; + + b, strong { + word-break: break-word; + } +} + +.content:not(.contentSlideUp) { + padding: 0.5rem 1rem 1rem; + + @supports (padding-bottom: env(safe-area-inset-bottom)) { + padding-bottom: max(env(safe-area-inset-bottom), 1rem); + } +} + +.buttons { + display: flex; + gap: 1rem; + justify-content: center; + + margin-top: auto; +} + +.transition { + overflow-x: hidden; + flex: 1 1 auto; +} + +.transitionSlide { + display: flex; + flex-direction: column; + + min-width: 0; + max-width: 100%; + padding-top: 0.5rem; + + background: transparent !important; +} + +.transitionContentWrapper { + display: flex; + flex-direction: column; + + height: 100%; +} + +.transitionContent { + display: flex; + flex-direction: column; + flex-grow: 1; + + min-width: 0; + padding: 0 1rem 1rem; + + &_simple { + padding-top: 5.5rem; + } + + @supports (padding-bottom: env(safe-area-inset-bottom)) { + padding-bottom: max(env(safe-area-inset-bottom), 1rem); + } +} diff --git a/src/components/ui/Modal.tsx b/src/components/ui/Modal.tsx new file mode 100644 index 00000000..89824f86 --- /dev/null +++ b/src/components/ui/Modal.tsx @@ -0,0 +1,147 @@ +import { RefObject } from 'react'; +import React, { useCallback, useEffect, useRef } from '../../lib/teact/teact'; + +import { IS_EXTENSION } from '../../util/environment'; +import captureKeyboardListeners from '../../util/captureKeyboardListeners'; +import trapFocus from '../../util/trapFocus'; +import buildClassName from '../../util/buildClassName'; +import useShowTransition from '../../hooks/useShowTransition'; +import useEffectWithPrevDeps from '../../hooks/useEffectWithPrevDeps'; +import { dispatchHeavyAnimationEvent } from '../../hooks/useHeavyAnimationCheck'; + +import Button from './Button'; +import Portal from './Portal'; + +import styles from './Modal.module.scss'; + +type OwnProps = { + title?: string; + className?: string; + dialogClassName?: string; + isOpen?: boolean; + isSlideUp?: boolean; + noBackdrop?: boolean; + header?: any; + hasCloseButton?: boolean; + children: React.ReactNode; + onClose: () => void; + onCloseAnimationEnd?: () => void; + onEnter?: () => void; + dialogRef?: RefObject; +}; + +type StateProps = { + shouldSkipHistoryAnimations?: boolean; +}; + +const ANIMATION_DURATION = 350; + +function Modal({ + dialogRef, + title, + className, + dialogClassName, + isOpen, + isSlideUp, + noBackdrop, + header, + hasCloseButton, + children, + onClose, + onCloseAnimationEnd, + onEnter, + shouldSkipHistoryAnimations, +}: OwnProps & StateProps) { + const { + shouldRender, + transitionClassNames, + } = useShowTransition( + isOpen, onCloseAnimationEnd, shouldSkipHistoryAnimations, false, shouldSkipHistoryAnimations, + ); + // eslint-disable-next-line no-null/no-null + const modalRef = useRef(null); + + const handleClose = useCallback((e: KeyboardEvent) => { + if (IS_EXTENSION) { + e.preventDefault(); + } + + onClose(); + }, [onClose]); + + useEffect(() => ( + isOpen ? captureKeyboardListeners({ onEsc: handleClose, onEnter }) : undefined + ), [handleClose, isOpen, onEnter]); + useEffect(() => (isOpen && modalRef.current ? trapFocus(modalRef.current) : undefined), [isOpen]); + + useEffectWithPrevDeps(([prevIsOpen]) => { + if (isOpen || (!isOpen && prevIsOpen !== undefined)) { + dispatchHeavyAnimationEvent(ANIMATION_DURATION); + } + }, [isOpen]); + + if (!shouldRender) { + return undefined; + } + + function renderHeader() { + if (header) { + return header; + } + + if (!title) { + return undefined; + } + + return ( +
+
{title}
+ {hasCloseButton && ( + + )} +
+ ); + } + + const fullClassName = buildClassName( + styles.modal, + className, + transitionClassNames, + isSlideUp && styles.slideUp, + ); + + const backdropFullClass = buildClassName( + styles.backdrop, + noBackdrop && styles.noBackdrop, + ); + + return ( + +
+
+
+
+ {renderHeader()} +
+ {children} +
+
+
+
+ + ); +} + +export default Modal; diff --git a/src/components/ui/ModalHeader.tsx b/src/components/ui/ModalHeader.tsx new file mode 100644 index 00000000..c941702e --- /dev/null +++ b/src/components/ui/ModalHeader.tsx @@ -0,0 +1,30 @@ +import React, { memo } from '../../lib/teact/teact'; + +import buildClassName from '../../util/buildClassName'; + +import Button from './Button'; + +import modalStyles from './Modal.module.scss'; + +type OwnProps = { + title: string; + onClose: NoneToVoidFunction; +}; + +function ModalHeader({ title, onClose }: OwnProps) { + return ( +
+
{title}
+ +
+ ); +} + +export default memo(ModalHeader); diff --git a/src/components/ui/Notification.module.scss b/src/components/ui/Notification.module.scss new file mode 100644 index 00000000..b6471c2a --- /dev/null +++ b/src/components/ui/Notification.module.scss @@ -0,0 +1,43 @@ +.container { + position: fixed; + z-index: var(--z-notification); + top: 1rem; + left: calc(50% - 11.5rem); + + width: 23rem; + max-width: 100vw; + margin: 0.25rem auto; + + @media (min-width: 1276px) { + transition: transform var(--layer-transition); + } +} + +.notification { + max-width: 23rem; + margin: 0 1.5rem; + padding: 1rem ; + + color: var(--color-black); + + background: var(--color-background-window); + backdrop-filter: blur(30px); + border-radius: var(--border-radius-big); + box-shadow: 0 0 1.25rem 0.625rem rgba(0, 0, 0, 0.15); +} + +.content { + font-size: 0.9375rem; + font-weight: 600; + line-height: 1rem; + text-align: center; + word-break: break-word; +} + +.icon { + margin-right: 0.25rem; + + font-size: 1.25rem; + line-height: 1rem; + vertical-align: -0.3125rem; +} diff --git a/src/components/ui/Notification.tsx b/src/components/ui/Notification.tsx new file mode 100644 index 00000000..800dd24f --- /dev/null +++ b/src/components/ui/Notification.tsx @@ -0,0 +1,78 @@ +import React, { + FC, useCallback, useEffect, useRef, useState, +} from '../../lib/teact/teact'; + +import useShowTransition from '../../hooks/useShowTransition'; +import buildClassName from '../../util/buildClassName'; +import captureEscKeyListener from '../../util/captureEscKeyListener'; + +import Portal from './Portal'; + +import styles from './Notification.module.scss'; + +type OwnProps = { + containerId?: string; + message: string; + icon?: string; + onDismiss: () => void; +}; + +const DURATION_MS = 5000; +const ANIMATION_DURATION = 250; + +const Notification: FC = ({ + icon, message, containerId, onDismiss, +}) => { + const [isOpen, setIsOpen] = useState(true); + // eslint-disable-next-line no-null/no-null + const timerRef = useRef(null); + + const { transitionClassNames } = useShowTransition(isOpen); + + const closeAndDismiss = useCallback(() => { + setIsOpen(false); + setTimeout(onDismiss, ANIMATION_DURATION); + }, [onDismiss]); + + useEffect(() => (isOpen ? captureEscKeyListener(closeAndDismiss) : undefined), [isOpen, closeAndDismiss]); + + useEffect(() => { + timerRef.current = window.setTimeout(closeAndDismiss, DURATION_MS); + + return () => { + if (timerRef.current) { + clearTimeout(timerRef.current); + timerRef.current = undefined; + } + }; + }, [closeAndDismiss]); + + const handleMouseEnter = useCallback(() => { + if (timerRef.current) { + clearTimeout(timerRef.current); + timerRef.current = undefined; + } + }, []); + + const handleMouseLeave = useCallback(() => { + timerRef.current = window.setTimeout(closeAndDismiss, DURATION_MS); + }, [closeAndDismiss]); + + return ( + +
+
+ {icon && } + {message} +
+
+
+ ); +}; + +export default Notification; diff --git a/src/components/ui/PasswordForm.module.scss b/src/components/ui/PasswordForm.module.scss new file mode 100644 index 00000000..151a0bca --- /dev/null +++ b/src/components/ui/PasswordForm.module.scss @@ -0,0 +1,52 @@ +.sticker { + margin: 0 auto 2rem; +} + +.buttons { + display: flex; + gap: 1rem; + justify-content: space-between; + + margin-top: auto; +} + +.button { + position: relative; + + flex: 1; +} + +.buttonLoading .buttonText { + visibility: hidden; + opacity: 0; +} + +.buttonLoading::after { + content: ""; + + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + + width: 16px; + height: 16px; + margin: auto; + + border: 0.25rem solid transparent; + border-top-color: var(--color-white); + border-radius: 50%; + + animation: button-loading-spinner 1s ease infinite; +} + +@keyframes button-loading-spinner { + from { + transform: rotate(0turn); + } + + to { + transform: rotate(1turn); + } +} diff --git a/src/components/ui/PasswordForm.tsx b/src/components/ui/PasswordForm.tsx new file mode 100644 index 00000000..de45f076 --- /dev/null +++ b/src/components/ui/PasswordForm.tsx @@ -0,0 +1,113 @@ +import React, { + memo, useCallback, useEffect, useRef, useState, +} from '../../lib/teact/teact'; + +import { ANIMATED_STICKERS_PATHS } from './helpers/animatedAssets'; +import useFocusAfterAnimation from '../../hooks/useFocusAfterAnimation'; + +import AnimatedIcon from './AnimatedIcon'; +import Button from './Button'; +import Input from './Input'; + +import styles from './PasswordForm.module.scss'; +import modalStyles from './Modal.module.scss'; + +interface OwnProps { + isActive: boolean; + isLoading?: boolean; + cancelLabel?: string; + onCancel: NoneToVoidFunction; + submitLabel: string; + onCleanError: NoneToVoidFunction; + onSubmit: (password: string) => void; + placeholder?: string; + error?: string; +} + +const STICKER_SIZE = 180; + +function PasswordForm({ + isActive, + isLoading, + cancelLabel, + submitLabel, + placeholder, + error, + onCleanError, + onCancel, + onSubmit, +}: OwnProps) { + // eslint-disable-next-line no-null/no-null + const passwordRef = useRef(null); + const [password, setPassword] = useState(''); + + useEffect(() => { + if (isActive) { + setPassword(''); + } + }, [isActive]); + + useFocusAfterAnimation({ + isActive, + ref: passwordRef, + }); + + const handleInput = useCallback((value: string) => { + setPassword(value); + if (error) { + onCleanError(); + } + }, [error, onCleanError]); + + const handleSubmit = useCallback(() => { + onSubmit(password); + }, [onSubmit, password]); + + const handleKeyDown = useCallback((e: React.KeyboardEvent) => { + if (e.code === 'Enter') { + handleSubmit(); + } + }, [handleSubmit]); + + return ( +
+ + + +
+ {onCancel && ( + + )} + +
+
+ ); +} + +export default memo(PasswordForm); diff --git a/src/components/ui/Portal.ts b/src/components/ui/Portal.ts new file mode 100644 index 00000000..746716b3 --- /dev/null +++ b/src/components/ui/Portal.ts @@ -0,0 +1,38 @@ +import { useRef, useLayoutEffect, VirtualElement } from '../../lib/teact/teact'; +import TeactDOM from '../../lib/teact/teact-dom'; + +type OwnProps = { + containerId?: string; + className?: string; + children: VirtualElement; +}; + +function Portal({ containerId, className, children }: OwnProps) { + const elementRef = useRef(); + if (!elementRef.current) { + elementRef.current = document.createElement('div'); + } + + useLayoutEffect(() => { + const container = document.querySelector(containerId || '#portals'); + if (!container) { + return undefined; + } + + const element = elementRef.current!; + if (className) { + element.classList.add(className); + } + + container.appendChild(element); + + return () => { + TeactDOM.render(undefined, element); + container.removeChild(element); + }; + }, [className, containerId]); + + return TeactDOM.render(children, elementRef.current); +} + +export default Portal; diff --git a/src/components/ui/SearchBar.module.scss b/src/components/ui/SearchBar.module.scss new file mode 100644 index 00000000..6c9fc101 --- /dev/null +++ b/src/components/ui/SearchBar.module.scss @@ -0,0 +1,33 @@ +@import "../../styles/variables"; + +.wrapper { + position: relative; + + display: flex; +} + +.input { + width: 100%; + padding: 0 0.5rem 0 0; + + font-size: max(16px, 1rem); + color: var(--color-black); + + background: transparent; + border: none; + outline: none; + + appearance: none; + + &::placeholder { + font-weight: 600; + color: var(--color-gray-3); + } + + &:hover, + &:focus { + &::placeholder { + color: var(--color-interactive-input-text-hover-active); + } + } +} diff --git a/src/components/ui/SearchBar.tsx b/src/components/ui/SearchBar.tsx new file mode 100644 index 00000000..c02b6e31 --- /dev/null +++ b/src/components/ui/SearchBar.tsx @@ -0,0 +1,22 @@ +import type { FocusEvent } from 'react'; +import React, { memo } from '../../lib/teact/teact'; + +import buildClassName from '../../util/buildClassName'; + +import styles from './SearchBar.module.scss'; + +type OwnProps = { + className?: string; + onFocus?: (e: FocusEvent) => void; + onBlur?: NoneToVoidFunction; +}; + +function SearchBar({ className, onFocus, onBlur }: OwnProps) { + return ( +
+ +
+ ); +} + +export default memo(SearchBar); diff --git a/src/components/ui/SuggestionsList.module.scss b/src/components/ui/SuggestionsList.module.scss new file mode 100644 index 00000000..0681a86b --- /dev/null +++ b/src/components/ui/SuggestionsList.module.scss @@ -0,0 +1,60 @@ +.suggestions { + position: absolute; + z-index: 2; + left: 0; + + display: flex; + flex-direction: column; + align-items: flex-start; + + width: auto; + min-width: 10rem; + margin: 0; + padding: 0.25rem; + + color: var(--color-black); + list-style: none; + + background: var(--color-background-window); + border-radius: var(--border-radius-default); + box-shadow: var(--default-shadow); + + &.bottom { + top: calc(100% + 0.5rem); + } + + &.top { + bottom: calc(100% + 0.5rem); + } +} + +.suggestion { + cursor: pointer; + + display: inline-block; + + width: 100%; + padding: 0 0.75rem; + + font-size: 1rem; + font-weight: 600; + line-height: 1.75rem; + + border-radius: var(--border-radius-default); + + transition: background-color 150ms ease; + + & + & { + margin-top: 0.5rem; + } + + @media (pointer: fine) { + width: auto; + + &:hover, + &.active { + background-color: var(--color-background-second); + } + } +} + diff --git a/src/components/ui/SuggestionsList.tsx b/src/components/ui/SuggestionsList.tsx new file mode 100644 index 00000000..f87f3644 --- /dev/null +++ b/src/components/ui/SuggestionsList.tsx @@ -0,0 +1,50 @@ +import React, { memo } from '../../lib/teact/teact'; + +import buildClassName from '../../util/buildClassName'; + +import styles from './SuggestionsList.module.scss'; + +type OwnProps = { + position?: 'top' | 'bottom'; + suggestions: string[]; + activeIndex?: number; + isInModal?: boolean; + onSelect: (suggest: string) => void; +}; + +function SuggestionsList({ + position = 'bottom', + suggestions, + activeIndex, + isInModal, + onSelect, +}: OwnProps) { + const handleClick = (e: React.MouseEvent) => { + const suggest = (e.target as HTMLLIElement).innerText.trim(); + onSelect(suggest); + }; + + return suggestions.length ? ( +
    + {suggestions.map((suggestion, index) => { + return ( +
  • + {suggestion} +
  • + ); + })} +
+ ) : ( +
+
  • No suggestions, you're on your own!
  • +
    + ); +} + +export default memo(SuggestionsList); diff --git a/src/components/ui/Switcher.module.scss b/src/components/ui/Switcher.module.scss new file mode 100644 index 00000000..5341e6e0 --- /dev/null +++ b/src/components/ui/Switcher.module.scss @@ -0,0 +1,64 @@ +.container { + position: relative; + + display: inline-flex; + align-items: center; + + margin: 0; +} + +.input { + position: absolute; + z-index: var(--z-below); + + width: 0; + height: 0; + + visibility: hidden; + opacity: 0; +} + +.widget { + cursor: pointer; + + position: relative; + + display: inline-block; + + width: 2.125rem; + height: 0.875rem; + + text-indent: -999px; + + background-color: var(--color-gray-4); + border-radius: 0.5rem; + + transition: background-color 150ms ease-in; + + &::after { + content: ""; + + position: absolute; + top: -0.125rem; + left: 0; + + width: 1.125rem; + height: 1.125rem; + + background-color: var(--color-background-first); + border: 0.125rem solid var(--color-gray-4); + border-radius: 0.75rem; + + transition: border-color 0.2s ease-out, transform 150ms ease-in; + } +} + +.input:checked + .widget { + background: var(--color-blue); +} + +.input:checked + .widget:after { + transform: translateX(100%); + + border-color: var(--color-blue); +} diff --git a/src/components/ui/Switcher.tsx b/src/components/ui/Switcher.tsx new file mode 100644 index 00000000..6bcdf090 --- /dev/null +++ b/src/components/ui/Switcher.tsx @@ -0,0 +1,54 @@ +import type { ChangeEvent } from 'react'; +import React, { memo, useCallback } from '../../lib/teact/teact'; + +import styles from './Switcher.module.scss'; +import buildClassName from '../../util/buildClassName'; + +type OwnProps = { + id?: string; + name?: string; + value?: string; + label: string; + checked?: boolean; + className?: string; + onChange?: (e: ChangeEvent) => void; + onCheck?: (isChecked: boolean) => void; +}; + +function Switcher({ + id, + name, + value, + label, + checked = false, + className, + onChange, + onCheck, +}: OwnProps) { + const handleChange = useCallback((e: ChangeEvent) => { + if (onChange) { + onChange(e); + } + + if (onCheck) { + onCheck(e.currentTarget.checked); + } + }, [onChange, onCheck]); + + return ( + + ); +} + +export default memo(Switcher); diff --git a/src/components/ui/Tab.module.scss b/src/components/ui/Tab.module.scss new file mode 100644 index 00000000..b4647303 --- /dev/null +++ b/src/components/ui/Tab.module.scss @@ -0,0 +1,84 @@ +.Tab { + cursor: pointer; + + display: flex; + flex: 1 1 auto; + justify-content: center; + + width: auto; + margin: 0; + padding: 0.375rem 0.25rem; + + font-weight: 500; + color: var(--color-black); + + background: none; + border: none; + + appearance: none; + + &, + &:active, + &:focus { + outline: none; + } + + &:not(&_active):active .content { + color: var(--color-blue) !important; + + background-color: var(--color-interactive-popup-menu-hover) !important; + } + + &_active { + cursor: default; + + color: var(--color-blue); + + i { + opacity: 1 !important; + } + } + + @media (hover: hover) { + &:not(&_active):hover .content , + &:not(&_active):focus .content { + background-color: var(--color-interactive-popup-menu-active); + } + } +} + +.content { + position: relative; + + display: flex; + align-items: center; + + padding: 0.375rem 0.75rem; + + white-space: nowrap; + + border-radius: var(--border-radius-small); + + transition: background-color 150ms, color 150ms; +} + +.platform { + pointer-events: none; + + position: absolute; + bottom: -0.375rem; + left: 0; + transform-origin: left; + + box-sizing: content-box; + width: 100%; + height: 0.1875rem; + + opacity: 0; + background-color: var(--color-blue); + border-radius: 0.1875rem 0.1875rem 0 0; + + &_animate { + transition: transform var(--slide-transition); + } +} diff --git a/src/components/ui/Tab.tsx b/src/components/ui/Tab.tsx new file mode 100644 index 00000000..06925949 --- /dev/null +++ b/src/components/ui/Tab.tsx @@ -0,0 +1,76 @@ +import React, { useRef, memo, useEffect } from '../../lib/teact/teact'; + +import buildClassName from '../../util/buildClassName'; +import forceReflow from '../../util/forceReflow'; + +import styles from './Tab.module.scss'; + +type OwnProps = { + className?: string; + title: string; + isActive?: boolean; + previousActiveTab?: number; + onClick: (arg: number) => void; + clickArg: number; +}; + +function Tab({ + className, + title, + isActive, + previousActiveTab, + onClick, + clickArg, +}: OwnProps) { + // eslint-disable-next-line no-null/no-null + const tabRef = useRef(null); + + useEffect(() => { + // Set initial active state + if (isActive && previousActiveTab === undefined && tabRef.current) { + tabRef.current.classList.add(styles.Tab_active); + } + + if (!isActive || previousActiveTab === undefined) { + return; + } + + const tabEl = tabRef.current!; + const prevTabEl = tabEl.parentElement!.children[previousActiveTab]; + if (!prevTabEl) { + return; + } + + const platformEl = tabEl.querySelector('i')!; + const prevPlatformEl = prevTabEl.querySelector('i')!; + + // We move and resize the platform, so it repeats the position and size of the previous one + const shiftLeft = prevPlatformEl.parentElement!.offsetLeft - platformEl.parentElement!.offsetLeft; + const scaleFactor = prevPlatformEl.clientWidth / platformEl.clientWidth; + + prevPlatformEl.classList.remove(styles.platform_animate); + platformEl.classList.remove(styles.platform_animate); + platformEl.style.transform = `translate3d(${shiftLeft}px, 0, 0) scale3d(${scaleFactor}, 1, 1)`; + forceReflow(platformEl); + platformEl.classList.add(styles.platform_animate); + platformEl.style.transform = 'none'; + + prevTabEl.classList.remove(styles.Tab_active); + tabEl.classList.add(styles.Tab_active); + }, [isActive, previousActiveTab]); + + return ( +
    onClick(clickArg)} + ref={tabRef} + > + + {title} + + +
    + ); +} + +export default memo(Tab); diff --git a/src/components/ui/TabList.module.scss b/src/components/ui/TabList.module.scss new file mode 100644 index 00000000..bbf4c289 --- /dev/null +++ b/src/components/ui/TabList.module.scss @@ -0,0 +1,38 @@ +.container { + user-select: none; + + z-index: 1; + + overflow-x: auto; + overflow-y: hidden; + display: flex; + flex-shrink: 0; + flex-wrap: nowrap; + align-items: flex-end; + justify-content: space-between; + + padding: 0 1rem; + + font-size: 0.9375rem; + font-weight: 500; + + background-color: var(--color-background-first); + + scrollbar-color: rgba(0, 0, 0, 0); + + scrollbar-width: none; + + &::-webkit-scrollbar { + height: 0; + } + + &::-webkit-scrollbar-thumb { + background-color: rgba(0, 0, 0, 0); + // `box-shadow` prevents repaint on macOS when hovering out of scrollable container + box-shadow: 0 0 1px rgba(255, 255, 255, 0.01); + } +} + +.big { + font-size: 1rem; +} diff --git a/src/components/ui/TabList.tsx b/src/components/ui/TabList.tsx new file mode 100644 index 00000000..b07f217c --- /dev/null +++ b/src/components/ui/TabList.tsx @@ -0,0 +1,85 @@ +import React, { memo, useRef, useEffect } from '../../lib/teact/teact'; + +import { IS_ANDROID, IS_IOS } from '../../util/environment'; +import buildClassName from '../../util/buildClassName'; +import fastSmoothScrollHorizontal from '../../util/fastSmoothScrollHorizontal'; +import usePrevious from '../../hooks/usePrevious'; +import useHorizontalScroll from '../../hooks/useHorizontalScroll'; + +import Tab from './Tab'; + +import styles from './TabList.module.scss'; + +export type TabWithProperties = { + title: string; + className?: string; +}; + +type OwnProps = { + tabs: readonly TabWithProperties[]; + activeTab: number; + big?: boolean; + className?: string; + onSwitchTab: (index: number) => void; +}; + +const TAB_SCROLL_THRESHOLD_PX = 16; +// Should match duration from `--slide-transition` CSS variable +const SCROLL_DURATION = IS_IOS ? 450 : IS_ANDROID ? 400 : 300; + +function TabList({ + tabs, activeTab, big, className, onSwitchTab, +}: OwnProps) { + // eslint-disable-next-line no-null/no-null + const containerRef = useRef(null); + const previousActiveTab = usePrevious(activeTab); + + useHorizontalScroll(containerRef.current); + + // Scroll container to place active tab in the center + useEffect(() => { + const container = containerRef.current!; + const { scrollWidth, offsetWidth, scrollLeft } = container; + if (scrollWidth <= offsetWidth) { + return; + } + + const activeTabElement = container.childNodes[activeTab] as HTMLElement | null; + if (!activeTabElement) { + return; + } + + const { offsetLeft: activeTabOffsetLeft, offsetWidth: activeTabOffsetWidth } = activeTabElement; + const newLeft = activeTabOffsetLeft - (offsetWidth / 2) + (activeTabOffsetWidth / 2); + + // Prevent scrolling by only a couple of pixels, which doesn't look smooth + if (Math.abs(newLeft - scrollLeft) < TAB_SCROLL_THRESHOLD_PX) { + return; + } + + fastSmoothScrollHorizontal(container, newLeft, SCROLL_DURATION); + }, [activeTab]); + + return ( +
    + {tabs.map((tab, i) => ( + + ))} +
    + ); +} + +export default memo(TabList); diff --git a/src/components/ui/Transition.scss b/src/components/ui/Transition.scss new file mode 100644 index 00000000..b2553a0f --- /dev/null +++ b/src/components/ui/Transition.scss @@ -0,0 +1,721 @@ +.Transition { + position: relative; + + height: 100%; + + > * { + width: 100%; + height: 100%; + + transition: background-color 0.2s; + animation-fill-mode: forwards !important; + + &.from, + &.to { + position: absolute; + top: 0; + left: 0; + } + + &:not(.Transition__slide--active):not(.from):not(.to) { + display: none !important; // Best performance when animating container + //transform: scale(0); // Shortest initial delay + } + } + + &.skip-slide-transition { + transition: none !important; + } + + /* + * slide + */ + &.slide-optimized, + &.slide-optimized-rtl { + contain: strict; + body.is-safari & { + // Create a new composite layer to reduce the page repaint area when switching a tab (as `contain` is not supported in Safari) + transform: translate3d(0, 0, 0); + } + + #root & > div { + position: absolute; + top: 0; + left: 0; + transform: scale(0); + + display: block !important; + + transition: transform var(--slide-transition); + } + } + + &.slide { + > .to { + transform: translateX(100%); + } + + &.animating { + > .from { + animation: slide-out var(--slide-transition); + } + + > .to { + animation: slide-in var(--slide-transition); + } + } + } + + &.slide.backwards { + > .to { + transform: translateX(-100%); + } + + &.animating { + > .from { + animation: slide-in-backwards var(--slide-transition); + } + + > .to { + animation: slide-out-backwards var(--slide-transition); + } + } + } + + &.slide-rtl { + > .to { + transform: translateX(-100%); + } + + &.animating { + > .from { + animation: slide-out var(--slide-transition); + } + + > .to { + animation: slide-in var(--slide-transition); + } + } + + &.backwards { + > .to { + transform: translateX(100%); + } + + &.animating { + > .from { + animation: slide-in-backwards var(--slide-transition); + } + + > .to { + animation: slide-out-backwards var(--slide-transition); + } + } + } + } + + /* + * mv-slide + */ + + &.mv-slide { + > * > div { + animation-fill-mode: forwards !important; + } + + > .to > div { + transform: translateX(100vw); + } + + &.animating { + > .from > div { + animation: mv-slide-out 0.4s ease; + } + + > .to > div { + animation: mv-slide-in 0.4s ease; + } + } + } + + &.mv-slide.backwards { + > .to > div { + transform: translateX(-100vw); + } + + &.animating { + > .from > div { + animation: mv-slide-in-backwards 0.4s ease; + } + + > .to > div { + animation: mv-slide-out-backwards 0.4s ease; + } + } + } + + /* + * slide-fade + */ + &.slide-fade { + > .from { + transform: translateX(0); + transform-origin: left; + + opacity: 1; + } + + > .to { + transform: translateX(1.5rem); + transform-origin: left; + + opacity: 0; + } + + &.animating { + > .from { + animation: fade-out-opacity var(--slide-transition), slide-fade-out-move var(--slide-transition); + } + + > .to { + animation: fade-in-opacity var(--slide-transition), slide-fade-in-move var(--slide-transition); + } + } + } + + &.slide-fade.backwards { + > .from { + transform: translateX(0); + + opacity: 1; + } + + > .to { + transform: translateX(-1.5rem); + + opacity: 0; + } + + &.animating { + > .from { + animation: fade-in-backwards-opacity var(--slide-transition), + slide-fade-in-backwards-move var(--slide-transition); + } + + > .to { + animation: fade-out-backwards-opacity var(--slide-transition), + slide-fade-out-backwards-move var(--slide-transition); + } + } + } + + /* + * zoom-fade + */ + &.zoom-fade { + > .from { + transform: scale(1); + transform-origin: center; + + opacity: 1; + } + + > .to { + transform-origin: center; + + opacity: 0; + // We can omit `transform: scale(1.1);` here because `opacity` is 0. + // We need to for proper position calculation in `InfiniteScroll`. + } + + &.animating { + > .from { + animation: fade-out-opacity 0.15s ease; + } + + > .to { + animation: fade-in-opacity 0.15s ease, zoom-fade-in-move 0.15s ease; + } + } + } + + &.zoom-fade.backwards { + > .from { + transform: scale(1); + } + + > .to { + transform: scale(0.95); + } + + &.animating { + > .from { + animation: fade-in-backwards-opacity 0.1s ease, zoom-fade-in-backwards-move 0.15s ease; + } + + > .to { + animation: fade-out-backwards-opacity 0.15s ease, zoom-fade-out-backwards-move 0.15s ease; + } + } + } + + /* + * fade + */ + &.fade { + > .from { + opacity: 1; + } + + > .to { + opacity: 0; + } + + &.animating { + > .from { + animation: fade-out-opacity 300ms ease; + } + + > .to { + animation: fade-in-opacity 300ms ease; + } + } + } + + /* + * slide-layers + */ + + &.slide-layers { + --background-color: var(--color-background); + + background: black; + + > div { + background: var(--background-color); + } + + > .to { + transform: translateX(100%); + } + + &.animating { + > .from { + animation: slide-layers-out var(--layer-transition); + } + + > .to { + animation: slide-in var(--layer-transition); + } + } + } + + &.slide-layers.backwards { + > .to { + transform: translateX(-20%); + + opacity: 0.75; + } + + &.animating { + > .from { + animation: slide-in-backwards var(--layer-transition); + } + + > .to { + animation: slide-layers-out-backwards var(--layer-transition); + } + } + } + + /* + * push-slide + */ + + &.push-slide { + > div { + background: var(--color-body-background); + } + + > .from { + transform: scale(1); + transform-origin: center; + + opacity: 1; + + .custom-scroll { + scrollbar-color: transparent !important; + + &::-webkit-scrollbar-thumb { + background-color: transparent !important; + } + } + } + + > .to { + transform: translateX(100%); + } + + &.animating { + > .from { + animation: push-out 0.25s ease-in-out; + } + + > .to { + animation: slide-in-200 0.25s ease-in-out; + } + } + } + + &.push-slide.backwards { + > .to { + transform: scale(0.7); + + opacity: 0; + } + + &.animating { + > .from { + animation: slide-in-200-backwards 0.25s ease-in-out; + } + + > .to { + animation: push-out-backwards 0.25s ease-in-out; + } + } + } + + /* + * slide-fade + */ + &.reveal { + > .to { + clip-path: inset(0 100% 0 0); + } + + &.animating { + > .to { + animation: reveal-in 350ms ease-in; + } + } + } + + &.reveal.backwards { + > .from { + clip-path: inset(0 0 0 0); + } + + > .to { + clip-path: none; + } + + &.animating { + > .from { + animation: reveal-in-backwards 350ms ease-out; + } + + > .to { + animation: none; + } + } + } +} + +/* + * common + */ + +@keyframes fade-in-opacity { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + +@keyframes fade-out-opacity { + 0% { + opacity: 1; + } + 100% { + opacity: 0; + } +} + +@keyframes fade-in-backwards-opacity { + 0% { + opacity: 1; + } + 100% { + opacity: 0; + } +} + +@keyframes fade-out-backwards-opacity { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + +/* + * slide + */ + +@keyframes slide-in { + 0% { + transform: translateX(100%); + } + 100% { + transform: translateX(0); + } +} + +@keyframes slide-out { + 0% { + transform: translateX(0); + } + 100% { + transform: translateX(-100%); + } +} + +@keyframes slide-in-backwards { + 0% { + transform: translateX(0); + } + 100% { + transform: translateX(100%); + } +} + +@keyframes slide-out-backwards { + 0% { + transform: translateX(-100%); + } + 100% { + transform: translateX(0); + } +} + +/* + * mv-slide + */ + +@keyframes mv-slide-in { + 0% { + transform: translateX(100vw); + } + 100% { + transform: translateX(0); + } +} + +@keyframes mv-slide-out { + 0% { + transform: translateX(0); + } + 100% { + transform: translateX(-100vw); + } +} + +@keyframes mv-slide-in-backwards { + 0% { + transform: translateX(0); + } + 100% { + transform: translateX(100vw); + } +} + +@keyframes mv-slide-out-backwards { + 0% { + transform: translateX(-100vw); + } + 100% { + transform: translateX(0); + } +} + +/* + * slide-fade + */ + +@keyframes slide-fade-in-move { + 0% { + transform: translateX(1.5rem); + } + 100% { + transform: translateX(0); + } +} + +@keyframes slide-fade-out-move { + 0% { + transform: translateX(0); + } + 100% { + transform: translateX(-1.5rem); + } +} + +@keyframes slide-fade-in-backwards-move { + 0% { + transform: translateX(0); + } + 100% { + transform: translateX(1.5rem); + } +} + +@keyframes slide-fade-out-backwards-move { + 0% { + transform: translateX(-1.5rem); + } + 100% { + transform: translateX(0); + } +} + +/* + * zoom-fade + */ + +@keyframes zoom-fade-in-move { + 0% { + transform: scale(1.1); + } + 100% { + transform: scale(1); + } +} + +@keyframes zoom-fade-in-backwards-move { + 0% { + transform: scale(1); + } + 100% { + transform: scale(1.1); + } +} + +@keyframes zoom-fade-out-backwards-move { + 0% { + transform: scale(0.95); + } + 100% { + transform: scale(1); + } +} + +/* + * slide-layers + */ + +@keyframes slide-layers-out { + 0% { + transform: translateX(0); + + opacity: 1; + } + 100% { + transform: translateX(-20%); + + opacity: calc(1 - var(--layer-blackout-opacity)); + } +} + +@keyframes slide-layers-out-backwards { + 0% { + transform: translateX(-20%); + + opacity: calc(1 - var(--layer-blackout-opacity)); + } + 100% { + transform: translateX(0); + + opacity: 1; + } +} + +/* + * push-slide + */ + +@keyframes push-out { + 0% { + transform: scale(1); + + opacity: 1; + } + 100% { + transform: scale(0.7); + + opacity: 0; + } +} + +@keyframes push-out-backwards { + 0% { + transform: scale(0.7); + + opacity: 0; + } + 100% { + transform: scale(1); + + opacity: 1; + } +} + +/* + * slide + */ + +@keyframes slide-in-200 { + 0% { + transform: translateX(200%); + } + 100% { + transform: translateX(0); + } +} + +@keyframes slide-in-200-backwards { + 0% { + transform: translateX(0); + } + 100% { + transform: translateX(200%); + } +} + +/* + * slide + */ + +@keyframes reveal-in { + 0% { + clip-path: inset(0 100% 0 0); + } + 100% { + clip-path: inset(0 0 0 0); + } +} + +/* + * slide + */ + +@keyframes reveal-in-backwards { + 0% { + clip-path: inset(0 0 0 0); + } + 100% { + clip-path: inset(0 100% 0 0); + } +} diff --git a/src/components/ui/Transition.tsx b/src/components/ui/Transition.tsx new file mode 100644 index 00000000..acec3e75 --- /dev/null +++ b/src/components/ui/Transition.tsx @@ -0,0 +1,365 @@ +import { RefObject } from 'react'; +import React, { useLayoutEffect, useRef } from '../../lib/teact/teact'; +import { GlobalState } from '../../global/types'; + +import { getGlobal } from '../../lib/teact/teactn'; +import { ANIMATION_LEVEL_MIN } from '../../config'; +import buildClassName from '../../util/buildClassName'; +import forceReflow from '../../util/forceReflow'; +import { waitForAnimationEnd, waitForTransitionEnd } from '../../util/cssAnimationEndListeners'; +import useForceUpdate from '../../hooks/useForceUpdate'; +import usePrevious from '../../hooks/usePrevious'; +import { dispatchHeavyAnimationEvent } from '../../hooks/useHeavyAnimationCheck'; + +import './Transition.scss'; + +export type ChildrenFn = (isActive: boolean, isFrom: boolean, currentKey: number) => React.ReactNode; +export type TransitionProps = { + ref?: RefObject; + activeKey: number; + nextKey?: number; + name: ( + 'none' | 'slide' | 'slide-rtl' | 'mv-slide' | 'slide-fade' | 'zoom-fade' | 'slide-layers' + | 'fade' | 'push-slide' | 'reveal' | 'slide-optimized' | 'slide-optimized-rtl' + ); + direction?: 'auto' | 'inverse' | 1 | -1; + renderCount?: number; + shouldRestoreHeight?: boolean; + shouldCleanup?: boolean; + cleanupExceptionKey?: number; + id?: string; + className?: string; + slideClassName?: string; + onStart?: NoneToVoidFunction; + onStop?: NoneToVoidFunction; + children: React.ReactNode | ChildrenFn; +}; + +const classNames = { + active: 'Transition__slide--active', +}; + +function Transition({ + ref, + activeKey, + nextKey, + name, + direction = 'auto', + renderCount, + shouldRestoreHeight, + shouldCleanup, + cleanupExceptionKey, + id, + className, + slideClassName, + onStart, + onStop, + children, +}: TransitionProps) { + // No need for a container to update on change + const { animationLevel } = getGlobal().settings; + const currentKeyRef = useRef(); + + // eslint-disable-next-line no-null/no-null + let containerRef = useRef(null); + if (ref) { + containerRef = ref; + } + + const rendersRef = useRef>({}); + const prevActiveKey = usePrevious(activeKey); + const forceUpdate = useForceUpdate(); + + const activeKeyChanged = prevActiveKey !== undefined && activeKey !== prevActiveKey; + + if (!renderCount && activeKeyChanged) { + rendersRef.current = { [prevActiveKey]: rendersRef.current[prevActiveKey] }; + } + + rendersRef.current[activeKey] = children; + if (nextKey) { + rendersRef.current[nextKey] = children; + } + + useLayoutEffect(() => { + function cleanup() { + if (!shouldCleanup) { + return; + } + + const preservedRender = cleanupExceptionKey !== undefined ? rendersRef.current[cleanupExceptionKey] : undefined; + + rendersRef.current = preservedRender ? { [cleanupExceptionKey!]: preservedRender } : {}; + + forceUpdate(); + } + + const container = containerRef.current!; + + const childElements = nextKey + ? Array.from(container.children).filter((_, i) => i !== nextKey) + : container.children; + if (childElements.length === 1 && !activeKeyChanged) { + if (name.startsWith('slide-optimized')) { + (childElements[0] as HTMLElement).style.transition = 'none'; + (childElements[0] as HTMLElement).style.transform = 'translate3d(0, 0, 0)'; + } + + childElements[0].classList.add(classNames.active); + + return; + } + + const childNodes = Array.from(container.childNodes); + + if (!activeKeyChanged || !childNodes.length) { + return; + } + + currentKeyRef.current = activeKey; + + const isBackwards = ( + direction === -1 + || (direction === 'auto' && prevActiveKey > activeKey) + || (direction === 'inverse' && prevActiveKey < activeKey) + ); + + const keys = Object.keys(rendersRef.current).map(Number); + const prevActiveIndex = renderCount ? prevActiveKey : keys.indexOf(prevActiveKey); + const activeIndex = renderCount ? activeKey : keys.indexOf(activeKey); + + if (name === 'slide-optimized' || name === 'slide-optimized-rtl') { + performSlideOptimized( + animationLevel, + name, + isBackwards, + cleanup, + activeKey, + currentKeyRef, + container, + shouldRestoreHeight, + onStart, + onStop, + childNodes[activeIndex] as HTMLElement, + childNodes[prevActiveIndex] as HTMLElement, + ); + + return; + } + + container.classList.remove('animating'); + container.classList.toggle('backwards', isBackwards); + + if (name === 'none' || animationLevel === ANIMATION_LEVEL_MIN) { + childNodes.forEach((node, i) => { + if (node instanceof HTMLElement) { + node.classList.remove('from', 'through', 'to'); + node.classList.toggle(classNames.active, i === activeIndex); + } + }); + + cleanup(); + + return; + } + + childNodes.forEach((node, i) => { + if (node instanceof HTMLElement) { + node.classList.remove(classNames.active); + node.classList.toggle('from', i === prevActiveIndex); + node.classList.toggle('through', ( + (i > prevActiveIndex && i < activeIndex) || (i < prevActiveIndex && i > activeIndex) + )); + node.classList.toggle('to', i === activeIndex); + } + }); + + const dispatchHeavyAnimationStop = dispatchHeavyAnimationEvent(); + + requestAnimationFrame(() => { + container.classList.add('animating'); + + onStart?.(); + + function onAnimationEnd() { + requestAnimationFrame(() => { + if (activeKey !== currentKeyRef.current) { + return; + } + + container.classList.remove('animating', 'backwards'); + + childNodes.forEach((node, i) => { + if (node instanceof HTMLElement) { + node.classList.remove('from', 'through', 'to'); + node.classList.toggle(classNames.active, i === activeIndex); + } + }); + + if (shouldRestoreHeight) { + const activeElement = container.querySelector(`.${classNames.active}`); + + if (activeElement) { + activeElement.style.height = 'auto'; + container.style.height = `${activeElement.clientHeight}px`; + } + } + + onStop?.(); + dispatchHeavyAnimationStop(); + cleanup(); + }); + } + + const watchedNode = name === 'mv-slide' + ? childNodes[activeIndex]?.firstChild + : name === 'reveal' && isBackwards + ? childNodes[prevActiveIndex] + : childNodes[activeIndex]; + + if (watchedNode) { + waitForAnimationEnd(watchedNode, onAnimationEnd); + } else { + onAnimationEnd(); + } + }); + }, [ + activeKey, + nextKey, + prevActiveKey, + activeKeyChanged, + direction, + name, + onStart, + onStop, + renderCount, + shouldRestoreHeight, + shouldCleanup, + cleanupExceptionKey, + animationLevel, + forceUpdate, + ]); + + useLayoutEffect(() => { + if (shouldRestoreHeight) { + const container = containerRef.current!; + const activeElement = container.querySelector(`.${classNames.active}`) + || container.querySelector('.from'); + + if (activeElement) { + activeElement.style.height = 'auto'; + container.style.height = `${activeElement.clientHeight}px`; + container.style.flexBasis = `${activeElement.clientHeight}px`; + } + } + }, [shouldRestoreHeight, children]); + + const renders = rendersRef.current; + const renderKeys = Object.keys(renderCount ? new Array(renderCount).fill(undefined) : renders).map(Number); + const contents = renderKeys.map((key) => { + const render = renders[key]; + if (!render) { + return undefined; + } + + return ( +
    { + typeof render === 'function' + ? render(key === activeKey, key === prevActiveKey, key) + : render + } +
    + ); + }); + + return ( +
    + {contents} +
    + ); +} + +export default Transition; + +function performSlideOptimized( + animationLevel: GlobalState['settings']['animationLevel'], + name: 'slide-optimized' | 'slide-optimized-rtl', + isBackwards: boolean, + cleanup: NoneToVoidFunction, + activeKey: number, + currentKeyRef: { current: number | undefined }, + container: HTMLElement, + shouldRestoreHeight?: boolean, + onStart?: NoneToVoidFunction, + onStop?: NoneToVoidFunction, + toSlide?: HTMLElement, + fromSlide?: HTMLElement, +) { + if (!fromSlide || !toSlide) { + return; + } + + if (animationLevel === ANIMATION_LEVEL_MIN) { + fromSlide.style.transition = 'none'; + fromSlide.style.transform = ''; + fromSlide.classList.remove(classNames.active); + + toSlide.style.transition = 'none'; + toSlide.style.transform = 'translate3d(0, 0, 0)'; + toSlide.classList.add(classNames.active); + + cleanup(); + + return; + } + + if (name === 'slide-optimized-rtl') { + isBackwards = !isBackwards; + } + + const dispatchHeavyAnimationStop = dispatchHeavyAnimationEvent(); + + requestAnimationFrame(() => { + onStart?.(); + + fromSlide.style.transition = 'none'; + fromSlide.style.transform = 'translate3d(0, 0, 0)'; + + toSlide.style.transition = 'none'; + toSlide.style.transform = `translate3d(${isBackwards ? '-' : ''}100%, 0, 0)`; + + forceReflow(toSlide); + + fromSlide.style.transition = ''; + fromSlide.style.transform = `translate3d(${isBackwards ? '' : '-'}100%, 0, 0)`; + + toSlide.style.transition = ''; + toSlide.style.transform = 'translate3d(0, 0, 0)'; + + fromSlide.classList.remove(classNames.active); + toSlide.classList.add(classNames.active); + + waitForTransitionEnd(fromSlide, () => { + if (activeKey !== currentKeyRef.current) { + return; + } + + fromSlide.style.transition = 'none'; + fromSlide.style.transform = ''; + + if (shouldRestoreHeight) { + toSlide.style.height = 'auto'; + container.style.height = `${toSlide.clientHeight}px`; + } + + onStop?.(); + dispatchHeavyAnimationStop(); + cleanup(); + }); + }); +} diff --git a/src/components/ui/helpers/animatedAssets.ts b/src/components/ui/helpers/animatedAssets.ts new file mode 100644 index 00000000..bf48b769 --- /dev/null +++ b/src/components/ui/helpers/animatedAssets.ts @@ -0,0 +1,21 @@ +import hello from '../../../assets/lottie/duck_hello.tgs'; +import guard from '../../../assets/lottie/duck_guard.tgs'; +import snitch from '../../../assets/lottie/duck_snitch.tgs'; +import bill from '../../../assets/lottie/duck_bill.tgs'; +import stonks from '../../../assets/lottie/duck_stonks.tgs'; +import thumbUp from '../../../assets/lottie/duck_thumb.tgs'; +import holdTon from '../../../assets/lottie/duck_ton.tgs'; +import happy from '../../../assets/lottie/duck_happy.tgs'; +import noData from '../../../assets/lottie/duck_no-data.tgs'; + +export const ANIMATED_STICKERS_PATHS = { + hello, + snitch, + guard, + bill, + stonks, + thumbUp, + holdTon, + happy, + noData, +}; diff --git a/src/components/ui/helpers/assetLogos.ts b/src/components/ui/helpers/assetLogos.ts new file mode 100644 index 00000000..da802a31 --- /dev/null +++ b/src/components/ui/helpers/assetLogos.ts @@ -0,0 +1,7 @@ +import ton from '../../../assets/coins/ton.png'; +import btc from '../../../assets/coins/btc.png'; + +export const ASSET_LOGO_PATHS = { + ton, + btc, +}; diff --git a/src/config.ts b/src/config.ts new file mode 100644 index 00000000..e6fc8382 --- /dev/null +++ b/src/config.ts @@ -0,0 +1,64 @@ +export const APP_NAME = process.env.APP_NAME || 'MyTonWallet'; +export const APP_VERSION = process.env.APP_VERSION!; + +export const DEBUG = ( + process.env.APP_ENV !== 'production' && process.env.APP_ENV !== 'perf' && process.env.APP_ENV !== 'test' +); +export const DEBUG_MORE = false; + +export const IS_MOCKED_CLIENT = process.env.APP_MOCKED_CLIENT === '1'; +export const IS_TEST = process.env.APP_ENV === 'test'; +export const IS_PERF = process.env.APP_ENV === 'perf'; + +export const DEBUG_ALERT_MSG = 'Shoot!\nSomething went wrong, please see the error details in Dev Tools Console.'; + +export const MNEMONIC_COUNT = 24; +export const MNEMONIC_CHECK_COUNT = 3; + +export const MOBILE_SCREEN_MAX_WIDTH = 600; // px +export const MOBILE_SCREEN_LANDSCAPE_MAX_WIDTH = 950; // px +export const MOBILE_SCREEN_LANDSCAPE_MAX_HEIGHT = 450; // px + +export const ANIMATED_STICKER_SMALL_SIZE_PX = 110; + +export const DEFAULT_PRICE_CURRENCY = '$'; +export const CARD_SECONDARY_VALUE_SYMBOL = 'TON'; + +export const TOKEN_INFO = { + toncoin: { + name: 'Toncoin', + symbol: 'TON', + slug: 'toncoin', + quote: { + price: 1.95, + percentChange1h: 0, + percentChange24h: 0, + percentChange7d: 0, + percentChange30d: 0, + }, + }, +}; + +export const GLOBAL_STATE_CACHE_DISABLED = false; +export const GLOBAL_STATE_CACHE_KEY = 'mytonwallet-global-state'; + +export const IS_TESTNET = false; + +export const ANIMATION_LEVEL_MIN = 0; +export const ANIMATION_LEVEL_MED = 1; +export const ANIMATION_LEVEL_MAX = 2; +export const ANIMATION_LEVEL_DEFAULT = ANIMATION_LEVEL_MAX; + +export const MAIN_ACCOUNT_ID = '0'; + +export const BRILLIANT_API_BASE_URL = process.env.BRILLIANT_API_BASE_URL || 'https://mytonwallet-api.herokuapp.com'; + +export const FRACTION_DIGITS = 9; + +export const TELEGRAM_WEB_URL = 'https://web.telegram.org/z/'; + +export const TON_TOKEN_SLUG = 'toncoin'; + +export const TRANSACTIONS_SLICE = 100; + +export const PROXY = process.env.PROXY; diff --git a/src/extension/config.ts b/src/extension/config.ts new file mode 100644 index 00000000..566e9123 --- /dev/null +++ b/src/extension/config.ts @@ -0,0 +1,3 @@ +export const POPUP_PORT = 'MyTonWallet_popup'; +export const CONTENT_SCRIPT_PORT = 'MyTonWallet_contentScript'; +export const PROVIDER_CHANNEL = 'MyTonWallet_provider'; diff --git a/src/extension/contentScript.ts b/src/extension/contentScript.ts new file mode 100644 index 00000000..e2326227 --- /dev/null +++ b/src/extension/contentScript.ts @@ -0,0 +1,53 @@ +import { CONTENT_SCRIPT_PORT, PROVIDER_CHANNEL } from './config'; + +(function injectScript() { + const scriptTag = document.createElement('script'); + scriptTag.async = true; + scriptTag.src = chrome.runtime.getURL('/extensionProvider.js'); + + const container = document.head || document.documentElement; + container.appendChild(scriptTag); + + scriptTag.remove(); +}()); + +const PAGE_ORIGIN = window.location.href; + +let port: chrome.runtime.Port; + +window.addEventListener('message', handlePageMessage); + +connectPort(); + +function handlePageMessage(e: MessageEvent) { + if (e.data?.channel === PROVIDER_CHANNEL) { + sendToPort(e.data); + } +} + +function connectPort() { + port = chrome.runtime.connect({ name: CONTENT_SCRIPT_PORT }); + port.onMessage.addListener(sendToPage); +} + +function sendToPage(payload: any) { + window.postMessage(payload, PAGE_ORIGIN); +} + +function sendToPort(payload: any, isRepeated = false) { + try { + port.postMessage(payload); + } catch (err: any) { + const isInvalidated = err.message.toString().includes('Extension context invalidated'); + if (isInvalidated) { + window.removeEventListener('message', handlePageMessage); + return; + } + + const isDisconnected = err.message.toString().includes('disconnected port'); + if (isDisconnected && !isRepeated) { + connectPort(); + sendToPort(payload, true); + } + } +} diff --git a/src/extension/manifest.json b/src/extension/manifest.json new file mode 100644 index 00000000..e6a76a70 --- /dev/null +++ b/src/extension/manifest.json @@ -0,0 +1,51 @@ +{ + "manifest_version": 3, + "name": "MyTonWallet", + "description": "Securely store crypto and make blockchain payments at the speed of light.", + "version": "%%VERSION%%", + "icons": { + "192": "icon-192x192.png", + "384": "icon-384x384.png", + "512": "icon-512x512.png" + }, + "action": { + "default_title": "MyTonWallet" + }, + "permissions": [ + "webRequest", + "system.display", + "proxy" + ], + "background": { + "service_worker": "/extensionServiceWorker.js" + }, + "content_scripts": [ + { + "matches": [ + "file://*/*", + "http://*/*", + "https://*/*" + ], + "js": [ + "/extensionContentScript.js" + ], + "run_at": "document_start", + "all_frames": true + } + ], + "web_accessible_resources": [ + { + "resources": [ + "/extensionProvider.js" + ], + "matches": [ + "file://*/*", + "http://*/*", + "https://*/*" + ] + } + ], + "content_security_policy": { + "extension_pages": "default-src 'none'; script-src 'self' 'wasm-unsafe-eval'; font-src https://fonts.gstatic.com/; style-src 'self' https://fonts.googleapis.com/; img-src 'self' data: https:; connect-src https://tw.mytonwallet.org https://mytonwallet-api.herokuapp.com" + } +} diff --git a/src/extension/provider.ts b/src/extension/provider.ts new file mode 100644 index 00000000..21784021 --- /dev/null +++ b/src/extension/provider.ts @@ -0,0 +1,79 @@ +import { EventEmitter } from '../util/callbacks'; +import { Connector, createConnector } from '../util/PostMessageConnector'; +import { PROVIDER_CHANNEL } from './config'; +import { ApiDappUpdate } from '../api/types/dappUpdates'; +import { doTonMagic } from './provider/tonMagic'; + +declare global { + interface Window { + tonProtocolVersion: 1; + ton: Provider; + } +} + +type Methods = + 'ton_getBalance' + | 'ton_requestAccounts' + | 'ton_requestWallets' + | 'ton_sendTransaction' + | 'ton_rawSign' + | 'flushMemoryCache'; + +class Provider extends EventEmitter { + public isTonWallet = true; // Native extension legacy requirement + + private connector: Connector; + + constructor() { + super(); + + this.connector = createConnector(window, this.onUpdate, PROVIDER_CHANNEL, window.location.href); + } + + destroy() { + this.connector.destroy(); + } + + // Prefixes is the native extension legacy requirement + send(prefixedName: Methods, args = []) { + const name = prefixedName.replace('ton_', ''); + return this.connector.request({ name, args }); + } + + private onUpdate = (update: ApiDappUpdate) => { + const { type, ...args } = update; + + if (type === 'updateAccounts') { + const { accounts } = update; + this.emit('accountsChanged', accounts); + + return; + } + + if (type === 'updateTonMagic') { + const { isEnabled } = update; + const cb = async () => { + await this.send('flushMemoryCache'); + window.location.reload(); + }; + + void doTonMagic(isEnabled, cb); + return; + } + + this.emit(type, args); + + // TODO Implement: + // this.emit('notification', result); + // this.emit('connect'); + // this.emit('close', code, reason); + }; +} + +if (window.ton) { + window.ton.destroy(); +} + +window.tonProtocolVersion = 1; +window.ton = new Provider(); +window.dispatchEvent(new Event('tonready')); diff --git a/src/extension/provider/tonMagic.ts b/src/extension/provider/tonMagic.ts new file mode 100644 index 00000000..03afe53a --- /dev/null +++ b/src/extension/provider/tonMagic.ts @@ -0,0 +1,122 @@ +import { TELEGRAM_WEB_URL } from '../../config'; + +export async function doTonMagic(isEnabled: boolean, cb: NoneToVoidFunction) { + if (!window.location.href.startsWith(TELEGRAM_WEB_URL)) { + if (window.location.href.startsWith('https://web.telegram.org/k/')) { + toggleMagicBadge(isEnabled); + } + + return; + } + + if (isEnabled) { + const scriptEl = document.querySelector('script[src^="main."]')!; + const localRevision = scriptEl.getAttribute('src')!; + + const filesToInjectResponse = await fetch(`https://ton.org/app/magic-sources.json?${Date.now()}`); + const filesToInject = await filesToInjectResponse.json(); + const magicRevision = filesToInject.find((f: string) => f.startsWith('main.') && f.endsWith('.js')); + + const assetCache = await window.caches.open('tt-assets'); + const cachedResponse = await assetCache.match(localRevision); + if (cachedResponse) { + const cachedText = await cachedResponse.text(); + // we leverage the fact that the file has its name as part of the sourcemaps appendix + const isMagicInjected = cachedText?.endsWith(`${magicRevision}.map`); + if (isMagicInjected) { + return; + } + } + + addBadge('Loading TON magic...'); + + const responses = await Promise.all(filesToInject.map(async (fileName: string) => { + const res = await fetch(`https://ton.org/app/${fileName}`); + + if (res.status !== 200) { + throw new Error(`[TON Wallet] Failed to load magic: ${res.statusText}. File: ${fileName}`); + } + + return [ + fileName, + new Response(await res.blob(), { + headers: res.headers, + status: res.status, + statusText: res.statusText, + }), + ]; + })); + + await Promise.all(responses.map(async ([fileName, response]) => { + if (fileName.startsWith('main.')) { + if (fileName.endsWith('.js')) { + await assetCache.put(`${TELEGRAM_WEB_URL}${localRevision}`, response.clone()); + } else if (fileName.endsWith('.css')) { + const linkEl = document.querySelector('link[rel=stylesheet]')!; + const currentCssRevision = linkEl.getAttribute('href'); + await assetCache.put(`${TELEGRAM_WEB_URL}${currentCssRevision}`, response.clone()); + } + } else { + await assetCache.put(`${TELEGRAM_WEB_URL}${fileName}`, response.clone()); + } + })); + + localStorage.setItem('ton:magicRevision', magicRevision); + } else { + const prevMagicRevision = localStorage.getItem('ton:magicRevision'); + if (!prevMagicRevision) { + return; + } + + localStorage.removeItem('ton:magicRevision'); + await window.caches.delete('tt-assets'); + } + + cb(); +} + +function toggleMagicBadge(isTurnedOn?: boolean) { + const columnLeft = document.getElementById('column-left'); + const columnCenter = document.getElementById('column-center'); + + if (isTurnedOn) { + addBadge('Switch to Z version in the menu to take advantage of TON magic.'); + + // handle shallow screen layout + if (columnLeft) { + columnLeft.style.top = '28px'; + } + if (columnCenter) { + columnCenter.style.top = '28px'; + } + } else { + const badge = document.getElementById('ton-magic-badge'); + if (badge) { + badge.remove(); + if (columnLeft) { + columnLeft.style.top = ''; + } + if (columnCenter) { + columnCenter.style.top = ''; + } + } + } +} + +function addBadge(html: string) { + const badge = document.createElement('div'); + badge.id = 'ton-magic-badge'; + badge.style.position = 'fixed'; + badge.style.zIndex = '999'; + badge.style.top = '0'; + badge.style.background = '#3390ec'; + badge.style.width = '100%'; + badge.style.height = '28px'; + badge.style.lineHeight = '28px'; + badge.style.textAlign = 'center'; + badge.style.fontSize = '14px'; + badge.style.fontFamily = 'system-ui, -apple-system, "system-ui", "Helvetica Neue", sans-serif'; + badge.style.color = 'white'; + badge.innerHTML = html; + document.body.prepend(badge); +} diff --git a/src/extension/serviceWorker.ts b/src/extension/serviceWorker.ts new file mode 100644 index 00000000..c8041820 --- /dev/null +++ b/src/extension/serviceWorker.ts @@ -0,0 +1,2 @@ +import '../api/providers/extension/extensionForPopup'; +import '../api/providers/extension/extensionForContentScript'; diff --git a/src/global/actions/api/auth.ts b/src/global/actions/api/auth.ts new file mode 100644 index 00000000..14a78ffe --- /dev/null +++ b/src/global/actions/api/auth.ts @@ -0,0 +1,102 @@ +import { AuthState } from '../../types'; +import { callApi } from '../../../api'; +import { addActionHandler, getGlobal, setGlobal } from '../..'; +import { pause } from '../../../util/schedulers'; +import { MAIN_ACCOUNT_ID, MNEMONIC_CHECK_COUNT, MNEMONIC_COUNT } from '../../../config'; +import { updateAddress, updateAuth } from '../../reducers'; + +const CREATING_DURATION = 3300; + +addActionHandler('restartAuth', (global) => { + setGlobal(updateAuth(global, { state: AuthState.none })); +}); + +addActionHandler('startCreatingWallet', async (global) => { + setGlobal(updateAuth(global, { state: AuthState.creatingWallet, error: undefined })); + + const [mnemonic] = await Promise.all([ + callApi('generateMnemonic'), + pause(CREATING_DURATION), + ]); + + setGlobal(updateAuth(getGlobal(), { + state: AuthState.createPassword, + mnemonic, + mnemonicCheckIndexes: selectMnemonicForCheck(), + })); +}); + +addActionHandler('afterCreatePassword', async (global, actions, { password, isImporting }) => { + setGlobal(updateAuth(global, { isLoading: true })); + + const address = await callApi(isImporting ? 'importMnemonic' : 'createWallet', global.auth.mnemonic!, password); + if (!address) { + setGlobal(updateAuth(global, { isLoading: undefined })); + return; + } + + global = getGlobal(); + global = updateAuth(global, { + isLoading: undefined, + state: isImporting ? AuthState.ready : AuthState.createBackup, + address: isImporting ? undefined : address, + }); + + if (isImporting) { + global = updateAddress(global, MAIN_ACCOUNT_ID, address); + } + + setGlobal(global); + + actions.afterSignIn(); +}); + +addActionHandler('afterCheckMnemonic', (global) => { + setGlobal(updateAddress(global, MAIN_ACCOUNT_ID, global.auth.address!)); +}); + +addActionHandler('restartCheckMnemonicIndexes', (global) => { + setGlobal(updateAuth(global, { + mnemonicCheckIndexes: selectMnemonicForCheck(), + })); +}); + +addActionHandler('skipCheckMnemonic', (global) => { + global = { + ...global, + isBackupRequired: true, + }; + global = updateAddress(global, MAIN_ACCOUNT_ID, global.auth.address!); + setGlobal(global); +}); + +addActionHandler('startImportingWallet', (global) => { + setGlobal(updateAuth(global, { state: AuthState.importWallet, error: undefined })); +}); + +addActionHandler('afterImportMnemonic', async (global, actions, { mnemonic }) => { + const isValid = await callApi('validateMnemonic', mnemonic); + if (!isValid) { + setGlobal(updateAuth(getGlobal(), { + error: 'Your mnemonic words are invalid.', + })); + + return; + } + + setGlobal(updateAuth(getGlobal(), { + state: AuthState.importWalletCreatePassword, + error: undefined, + mnemonic, + })); +}); + +export function selectMnemonicForCheck() { + return Array(MNEMONIC_COUNT) + .fill(0) + .map((_, i) => ({ i, rnd: Math.random() })) + .sort((a, b) => a.rnd - b.rnd) + .map((i) => i.i) + .slice(0, MNEMONIC_CHECK_COUNT) + .sort((a, b) => a - b); +} diff --git a/src/global/actions/api/initial.ts b/src/global/actions/api/initial.ts new file mode 100644 index 00000000..5c7128a9 --- /dev/null +++ b/src/global/actions/api/initial.ts @@ -0,0 +1,6 @@ +import { addActionHandler } from '../../index'; +import { initApi } from '../../../api'; + +addActionHandler('initApi', (global, actions) => { + void initApi(actions.apiUpdate); +}); diff --git a/src/global/actions/api/wallet.ts b/src/global/actions/api/wallet.ts new file mode 100644 index 00000000..af3693b4 --- /dev/null +++ b/src/global/actions/api/wallet.ts @@ -0,0 +1,248 @@ +import { addActionHandler, getGlobal, setGlobal } from '../../index'; + +import { TransferState } from '../../types'; + +import { callApi } from '../../../api'; +import { + updateBackupWalletModal, updateCurrentTransfer, updateSendingLoading, + updateCurrentSignature, clearCurrentTransfer, updateTransactionsIsLoading, +} from '../../reducers'; +import { humanToBigStr } from '../../helpers'; +import { buildCollectionByKey } from '../../../util/iteratees'; +import { ApiTransactionDraftError } from '../../../api/types'; +import { TRANSACTIONS_SLICE } from '../../../config'; + +addActionHandler('startTransfer', (global, actions, payload) => { + const { toAddress, amount, comment } = payload || {}; + + setGlobal(updateCurrentTransfer(global, { + state: TransferState.Initial, + error: undefined, + toAddress, + amount, + comment, + })); +}); + +addActionHandler('setTransferScreen', (global, actions, payload) => { + const { state } = payload; + + setGlobal(updateCurrentTransfer(global, { state })); +}); + +addActionHandler('submitTransferInitial', async (global, actions, payload) => { + const { toAddress, amount, comment } = payload; + + setGlobal(updateSendingLoading(global, true)); + + const result = await callApi('checkTransactionDraft', toAddress, humanToBigStr(amount), comment); + + global = getGlobal(); + global = updateSendingLoading(global, false); + + if (!result || result.error) { + if (result?.fee) { + global = updateCurrentTransfer(global, { fee: result.fee }); + } + + setGlobal(global); + + if (result?.error === ApiTransactionDraftError.InsufficientBalance) { + actions.showDialog({ message: 'The network fee has slightly changed, try sending again.' }); + } else { + actions.showTxDraftError({ error: result?.error }); + } + + return; + } + + setGlobal(updateCurrentTransfer(global, { + state: TransferState.Confirm, + error: undefined, + toAddress, + amount, + comment, + fee: result.fee, + })); +}); + +addActionHandler('fetchFee', async (global, actions, payload) => { + const { + toAddress, amount, comment, + } = payload; + + const result = await callApi('checkTransactionDraft', toAddress, humanToBigStr(amount), comment); + + if (result?.fee) { + setGlobal(updateCurrentTransfer(getGlobal(), { fee: result.fee })); + } +}); + +addActionHandler('submitTransferConfirm', (global) => { + setGlobal(updateCurrentTransfer(global, { state: TransferState.Password })); +}); + +addActionHandler('submitTransferPassword', async (global, actions, payload) => { + const { password } = payload; + const { + toAddress, + comment, + amount, + promiseId, + } = global.currentTransfer; + + if (!(await callApi('verifyPassword', password))) { + setGlobal(updateCurrentTransfer(getGlobal(), { error: 'Wrong password, please try again' })); + + return; + } + + setGlobal(updateCurrentTransfer(getGlobal(), { + state: TransferState.InProgress, + error: undefined, + })); + + if (promiseId) { + void callApi('confirmDappRequest', promiseId, password); + + return; + } + + const result = await callApi('submitTransfer', password, toAddress!, humanToBigStr(amount!), comment); + if (!result) { + actions.showDialog({ + message: 'Transfer was unsuccessful. Try again later', + }); + } +}); + +addActionHandler('cleanTransferError', (global) => { + setGlobal(updateCurrentTransfer(global, { error: undefined })); +}); + +addActionHandler('cancelTransfer', (global) => { + const { promiseId } = global.currentTransfer; + + if (promiseId) { + void callApi('cancelDappRequest', promiseId, 'Canceled by the user'); + } + + setGlobal(clearCurrentTransfer(global)); +}); + +addActionHandler('fetchTransactions', async (global, actions, payload) => { + const { offsetId, limit = TRANSACTIONS_SLICE } = payload || {}; + global = updateTransactionsIsLoading(global, true); + setGlobal(global); + + const result = await callApi('fetchTransactionSlice', offsetId, limit); + global = getGlobal(); + global = updateTransactionsIsLoading(global, false); + + if (!result) { + setGlobal(global); + return; + } + + const transactions = buildCollectionByKey(result, 'txId'); + const orderedTxIds = Object.keys(transactions); + + setGlobal({ + ...global, + transactions: { + ...global.transactions, + byTxId: { ...(global.transactions?.byTxId || {}), ...transactions }, + orderedTxIds: (global.transactions?.orderedTxIds || []).concat(orderedTxIds), + nextOffsetTxId: orderedTxIds.length && orderedTxIds.length >= TRANSACTIONS_SLICE + ? orderedTxIds[orderedTxIds.length - 1] + : undefined, + }, + }); +}); + +addActionHandler('fetchNfts', async () => { + // TODO limit, offset + const result = await callApi('fetchNfts'); + if (!result) { + return; + } + + const nfts = buildCollectionByKey(result, 'address'); + + setGlobal({ + ...getGlobal(), + nfts: { + byAddress: nfts, + orderedAddresses: Object.keys(nfts), + }, + }); +}); + +addActionHandler('startBackupWallet', async (global, actions, payload) => { + const { password } = payload; + + setGlobal(updateBackupWalletModal(global, { + isLoading: true, + error: undefined, + })); + + const mnemonic = await callApi('getMnemonic', password); + + global = getGlobal(); + setGlobal(updateBackupWalletModal(global, { + isLoading: false, + error: !mnemonic ? 'Wrong password, please try again.' : undefined, + mnemonic, + })); +}); + +addActionHandler('cleanBackupWalletError', (global) => { + setGlobal(updateBackupWalletModal(global, { error: undefined })); +}); + +addActionHandler('closeBackupWallet', (global, actions, payload) => { + const { isMnemonicChecked } = payload || {}; + + if (isMnemonicChecked) { + global = { + ...global, isBackupRequired: undefined, + }; + } + + setGlobal({ + ...global, + backupWallet: {}, + }); +}); + +addActionHandler('submitSignature', async (global, actions, payload) => { + const { password } = payload; + const { promiseId } = global.currentSignature!; + + if (!(await callApi('verifyPassword', password))) { + setGlobal(updateCurrentSignature(getGlobal(), { error: 'Wrong password, please try again' })); + + return; + } + + await callApi('confirmDappRequest', promiseId, password!); + + setGlobal(updateCurrentSignature(getGlobal(), { isSigned: true })); +}); + +addActionHandler('cleanSignatureError', (global) => { + setGlobal(updateCurrentSignature(global, { error: undefined })); +}); + +addActionHandler('cancelSignature', (global) => { + const { promiseId } = global.currentSignature || {}; + + if (promiseId) { + void callApi('cancelDappRequest', promiseId, 'Canceled by the user'); + } + + setGlobal({ + ...global, + currentSignature: undefined, + }); +}); diff --git a/src/global/actions/apiUpdates/dapp.ts b/src/global/actions/apiUpdates/dapp.ts new file mode 100644 index 00000000..861a36c0 --- /dev/null +++ b/src/global/actions/apiUpdates/dapp.ts @@ -0,0 +1,84 @@ +import { TransferState } from '../../types'; + +import { addActionHandler, setGlobal } from '../../index'; + +import { bigStrToHuman } from '../../helpers'; +import { + clearCurrentSignature, + clearCurrentTransfer, + updateCurrentSignature, + updateCurrentTransfer, +} from '../../reducers'; + +addActionHandler('apiUpdate', (global, actions, update) => { + switch (update.type) { + case 'createTransaction': { + const { + promiseId, + amount, + toAddress, + fee, + comment, + } = update; + + global = clearCurrentTransfer(global); + global = updateCurrentTransfer(global, { + state: TransferState.Confirm, + toAddress, + amount: bigStrToHuman(amount), // TODO Unsafe? + fee, + comment, + promiseId, + }); + setGlobal(global); + + break; + } + + case 'createSignature': { + const { promiseId, dataHex } = update; + + global = clearCurrentSignature(global); + global = updateCurrentSignature(global, { + promiseId, + dataHex, + }); + setGlobal(global); + + break; + } + + case 'showTxDraftError': { + const { error } = update; + actions.showTxDraftError({ error }); + + break; + } + + case 'updateTonProxyState': { + const { isEnabled } = update; + + setGlobal({ + ...global, + settings: { + ...global.settings, + isTonProxyEnabled: isEnabled, + }, + }); + + break; + } + + case 'updateTonMagicState': { + const { isEnabled } = update; + + setGlobal({ + ...global, + settings: { + ...global.settings, + isTonMagicEnabled: isEnabled, + }, + }); + } + } +}); diff --git a/src/global/actions/apiUpdates/initial.ts b/src/global/actions/apiUpdates/initial.ts new file mode 100644 index 00000000..1aebe3e1 --- /dev/null +++ b/src/global/actions/apiUpdates/initial.ts @@ -0,0 +1,29 @@ +import { GlobalState } from '../../types'; + +import { addActionHandler, setGlobal } from '../../index'; + +import { updateBalance, updateTokens, updateTransaction } from '../../reducers'; + +addActionHandler('apiUpdate', (global, actions, update) => { + let newGlobal: GlobalState | undefined; + switch (update.type) { + case 'updateBalance': + newGlobal = updateBalance(global, update.accountId, update.slug, update.balance); + if (newGlobal) { + setGlobal(newGlobal); + } + + break; + + case 'newTransaction': + newGlobal = updateTransaction(global, update.transaction); + setGlobal(newGlobal); + break; + + case 'updateTokens': + newGlobal = updateTokens(global, update.tokens); + setGlobal(newGlobal); + + break; + } +}); diff --git a/src/global/actions/apiUpdates/transactions.ts b/src/global/actions/apiUpdates/transactions.ts new file mode 100644 index 00000000..2669cda8 --- /dev/null +++ b/src/global/actions/apiUpdates/transactions.ts @@ -0,0 +1,21 @@ +import { TransferState } from '../../types'; + +import { addActionHandler, setGlobal } from '../../index'; + +import { updateCurrentTransfer } from '../../reducers'; +import { bigStrToHuman } from '../../helpers'; + +addActionHandler('apiUpdate', (global, actions, update) => { + switch (update.type) { + case 'updateTxComplete': { + const { amount, toAddress, txId } = update; + if (bigStrToHuman(amount) !== global.currentTransfer.amount || toAddress !== global.currentTransfer.toAddress) { + return; + } + + setGlobal(updateCurrentTransfer(global, { state: TransferState.Complete, txId })); + + break; + } + } +}); diff --git a/src/global/actions/index.ts b/src/global/actions/index.ts new file mode 100644 index 00000000..80fa7d43 --- /dev/null +++ b/src/global/actions/index.ts @@ -0,0 +1,9 @@ +import './ui/initial'; + +import './api/initial'; +import './api/auth'; +import './api/wallet'; + +import './apiUpdates/initial'; +import './apiUpdates/transactions'; +import './apiUpdates/dapp'; diff --git a/src/global/actions/ui/initial.ts b/src/global/actions/ui/initial.ts new file mode 100644 index 00000000..c5e5c27a --- /dev/null +++ b/src/global/actions/ui/initial.ts @@ -0,0 +1,162 @@ +import { getActions } from '../../../lib/teact/teactn'; +import { addActionHandler } from '../../index'; + +import type { NotificationType } from '../../types'; + +import { + IS_IOS, IS_ANDROID, IS_MAC_OS, IS_SAFARI, IS_EXTENSION, +} from '../../../util/environment'; +import { callApi } from '../../../api'; +import { onTickEnd } from '../../../util/schedulers'; +import { ApiTransactionDraftError } from '../../../api/types'; + +addActionHandler('init', () => { + const { documentElement } = document; + + if (IS_IOS) { + documentElement.classList.add('is-ios'); + } else if (IS_ANDROID) { + documentElement.classList.add('is-android'); + } else if (IS_MAC_OS) { + documentElement.classList.add('is-macos'); + } + if (IS_SAFARI) { + documentElement.classList.add('is-safari'); + } + if (IS_EXTENSION) { + documentElement.classList.add('is-extension'); + } +}); + +addActionHandler('showDialog', (global, actions, payload) => { + const { message } = payload; + + const newDialogs = [...global.dialogs]; + const existingMessageIndex = newDialogs.findIndex((value) => value === message); + if (existingMessageIndex !== -1) { + newDialogs.splice(existingMessageIndex, 1); + } + + newDialogs.push(message); + + return { + ...global, + dialogs: newDialogs, + }; +}); + +addActionHandler('dismissDialog', (global) => { + const newDialogs = [...global.dialogs]; + + newDialogs.pop(); + + return { + ...global, + dialogs: newDialogs, + }; +}); + +addActionHandler('selectToken', (global, actions, { slug }) => { + return { + ...global, + currentTokenSlug: slug, + }; +}); + +addActionHandler('showTxDraftError', (global, actions, { error }) => { + switch (error) { + case ApiTransactionDraftError.InvalidAmount: + actions.showDialog({ message: 'Invalid amount' }); + break; + + case ApiTransactionDraftError.InvalidToAddress: + actions.showDialog({ message: 'Invalid address' }); + break; + + case ApiTransactionDraftError.InsufficientBalance: + actions.showDialog({ message: 'Insufficient balance' }); + break; + + case ApiTransactionDraftError.DomainNotResolved: + actions.showDialog({ message: 'Domain is not connected to a wallet' }); + break; + + default: + actions.showDialog({ message: 'Unexpected error' }); + break; + } +}); + +addActionHandler('showNotification', (global, actions, payload) => { + const { message, icon } = payload; + + const newNotifications: NotificationType[] = [...global.notifications]; + const existingNotificationIndex = newNotifications.findIndex((n) => n.message === message); + if (existingNotificationIndex !== -1) { + newNotifications.splice(existingNotificationIndex, 1); + } + + newNotifications.push({ message, icon }); + + return { + ...global, + notifications: newNotifications, + }; +}); + +addActionHandler('dismissNotification', (global) => { + const newNotifications = [...global.notifications]; + + newNotifications.pop(); + + return { + ...global, + notifications: newNotifications, + }; +}); + +addActionHandler('toggleTonProxy', (global, actions, { isEnabled }) => { + void callApi('doProxy', isEnabled); + + return { + ...global, + settings: { + ...global.settings, + isTonProxyEnabled: isEnabled, + }, + }; +}); + +addActionHandler('toggleTonMagic', (global, actions, { isEnabled }) => { + void callApi('doMagic', isEnabled); + + return { + ...global, + settings: { + ...global.settings, + isTonMagicEnabled: isEnabled, + }, + }; +}); + +addActionHandler('showTransactionInfo', (global, actions, { txId }) => { + return { + ...global, + currentTransactionId: txId, + }; +}); + +addActionHandler('closeTransactionInfo', (global) => { + return { + ...global, + currentTransactionId: undefined, + }; +}); + +addActionHandler('signOut', async () => { + await callApi('resetAccount'); + + onTickEnd(() => { + getActions().init(); + }); +}); diff --git a/src/global/cache.ts b/src/global/cache.ts new file mode 100644 index 00000000..05a20404 --- /dev/null +++ b/src/global/cache.ts @@ -0,0 +1,129 @@ +import { addCallback, removeCallback } from '../lib/teact/teactn'; + +import { GlobalState } from './types'; + +import { onBeforeUnload, onIdle, throttle } from '../util/schedulers'; +import { + DEBUG, GLOBAL_STATE_CACHE_DISABLED, GLOBAL_STATE_CACHE_KEY, MAIN_ACCOUNT_ID, +} from '../config'; +import { isHeavyAnimating } from '../hooks/useHeavyAnimationCheck'; +import { pick } from '../util/iteratees'; + +import { INITIAL_STATE } from './initialState'; +import { addActionHandler, getGlobal } from './index'; + +const UPDATE_THROTTLE = 5000; + +const updateCacheThrottled = throttle(() => onIdle(updateCache), UPDATE_THROTTLE, false); + +let isCaching = false; +let unsubscribeFromBeforeUnload: NoneToVoidFunction | undefined; + +export function initCache() { + if (GLOBAL_STATE_CACHE_DISABLED) { + return; + } + + addActionHandler('afterSignIn', () => { + setupCaching(); + }); + + addActionHandler('signOut', () => { + localStorage.removeItem(GLOBAL_STATE_CACHE_KEY); + + if (!isCaching) { + return; + } + + clearCaching(); + }); +} + +export function loadCache(initialState: GlobalState) { + return readCache(initialState); +} + +function setupCaching() { + isCaching = true; + unsubscribeFromBeforeUnload = onBeforeUnload(() => { + // Allow to manually delete cache + if (DEBUG && !localStorage.getItem(GLOBAL_STATE_CACHE_KEY)) { + return; + } + + updateCache(); + }, true); + window.addEventListener('blur', updateCache); + addCallback(updateCacheThrottled); +} + +function clearCaching() { + isCaching = false; + removeCallback(updateCacheThrottled); + window.removeEventListener('blur', updateCache); + if (unsubscribeFromBeforeUnload) { + unsubscribeFromBeforeUnload(); + } +} + +function readCache(initialState: GlobalState): GlobalState { + if (DEBUG) { + // eslint-disable-next-line no-console + console.time('global-state-cache-read'); + } + + const json = localStorage.getItem(GLOBAL_STATE_CACHE_KEY); + const cached = json ? JSON.parse(json) as GlobalState : undefined; + + if (DEBUG) { + // eslint-disable-next-line no-console + console.timeEnd('global-state-cache-read'); + } + + if (cached) { + migrateCache(cached, initialState); + } + + return { + ...initialState, + ...cached, + }; +} + +function migrateCache(cached: GlobalState, initialState: GlobalState) { + // Pre-fill settings with defaults + cached.settings = { + ...initialState.settings, + ...cached.settings, + }; + + if (cached.balances?.byAccountId && 'byTicker' in cached.balances.byAccountId[MAIN_ACCOUNT_ID]) { + cached.balances = undefined; + } +} + +function updateCache() { + if (GLOBAL_STATE_CACHE_DISABLED) { + return; + } + + if (!isCaching || isHeavyAnimating()) { + return; + } + + const global = getGlobal(); + + const reducedGlobal: GlobalState = { + ...INITIAL_STATE, + ...pick(global, [ + 'addresses', + 'balances', + 'tokenInfo', + 'settings', + 'isBackupRequired', + ]), + }; + + const json = JSON.stringify(reducedGlobal); + localStorage.setItem(GLOBAL_STATE_CACHE_KEY, json); +} diff --git a/src/global/helpers/index.ts b/src/global/helpers/index.ts new file mode 100644 index 00000000..558640b0 --- /dev/null +++ b/src/global/helpers/index.ts @@ -0,0 +1,14 @@ +const HUMAN_FACTOR = 1e9; + +export function bigStrToHuman(amount: string) { + return divideBigInt(BigInt(amount), BigInt(HUMAN_FACTOR)); +} + +export function humanToBigStr(amount: number) { + return String(Math.round(amount * HUMAN_FACTOR)); +} + +function divideBigInt(a: bigint, b: bigint) { + const div = a / b; + return Number(div) + Number(a - div * b) / Number(b); +} diff --git a/src/global/index.ts b/src/global/index.ts new file mode 100644 index 00000000..c0d70bd6 --- /dev/null +++ b/src/global/index.ts @@ -0,0 +1,10 @@ +import { typify } from '../lib/teact/teactn'; +import { GlobalState, ActionPayloads } from './types'; + +const typed = typify(); + +export const getGlobal = typed.getGlobal; +export const setGlobal = typed.setGlobal; +export const getActions = typed.getActions; +export const addActionHandler = typed.addActionHandler; +export const withGlobal = typed.withGlobal; diff --git a/src/global/init.ts b/src/global/init.ts new file mode 100644 index 00000000..99db06f4 --- /dev/null +++ b/src/global/init.ts @@ -0,0 +1,19 @@ +import { addActionHandler } from './index'; + +import { INITIAL_STATE } from './initialState'; +import { initCache, loadCache } from './cache'; +import { cloneDeep } from '../util/iteratees'; +import { selectHasSession } from './selectors'; + +initCache(); + +addActionHandler('init', (_, actions) => { + const initial = cloneDeep(INITIAL_STATE); + const cached = loadCache(initial); + + if (selectHasSession(cached)) { + actions.afterSignIn(); + } + + return loadCache(initial) || initial; +}); diff --git a/src/global/initialState.ts b/src/global/initialState.ts new file mode 100644 index 00000000..6e90a416 --- /dev/null +++ b/src/global/initialState.ts @@ -0,0 +1,25 @@ +import { AuthState, GlobalState, TransferState } from './types'; +import { ANIMATION_LEVEL_DEFAULT, TOKEN_INFO } from '../config'; + +export const INITIAL_STATE: GlobalState = { + auth: { + state: AuthState.none, + }, + + currentTransfer: { + state: TransferState.None, + }, + + tokenInfo: { + bySlug: TOKEN_INFO, + }, + + settings: { + animationLevel: ANIMATION_LEVEL_DEFAULT, + }, + + backupWallet: {}, + + dialogs: [], + notifications: [], +}; diff --git a/src/global/reducers/index.ts b/src/global/reducers/index.ts new file mode 100644 index 00000000..be6db766 --- /dev/null +++ b/src/global/reducers/index.ts @@ -0,0 +1,2 @@ +export * from './wallet'; +export * from './misc'; diff --git a/src/global/reducers/misc.ts b/src/global/reducers/misc.ts new file mode 100644 index 00000000..9d9d8cd0 --- /dev/null +++ b/src/global/reducers/misc.ts @@ -0,0 +1,84 @@ +import { GlobalState } from '../types'; +import { ApiToken, ApiTransaction } from '../../api/types'; + +export function updateAuth(global: GlobalState, authUpdate: Partial) { + return { + ...global, + auth: { + ...global.auth, + ...authUpdate, + }, + }; +} + +export function updateAddress(global: GlobalState, accountId: string, address: string) { + return { + ...global, + addresses: { + ...global.addresses, + byAccountId: { + ...(global.addresses?.byAccountId || {}), + [accountId]: address, + }, + }, + }; +} + +export function updateBalance( + global: GlobalState, accountId: string, slug: string, balance: string, +): GlobalState | undefined { + if (global.balances?.byAccountId[accountId]?.bySlug[slug] === balance) { + return undefined; + } + + return { + ...global, + balances: { + byAccountId: { + ...global.balances?.byAccountId || {}, + [accountId]: { + bySlug: { + ...global.balances?.byAccountId[accountId]?.bySlug || {}, + [slug]: balance, + }, + }, + }, + }, + }; +} + +export function updateSendingLoading(global: GlobalState, isLoading: boolean): GlobalState { + return { + ...global, + currentTransfer: { + ...global.currentTransfer, + isLoading, + }, + }; +} + +export function updateTokens(global: GlobalState, tokens: Record): GlobalState { + return { + ...global, + tokenInfo: { + ...global.tokenInfo, + bySlug: { + ...(global.tokenInfo && global.tokenInfo.bySlug), + ...tokens, + }, + }, + }; +} + +export function updateTransaction(global: GlobalState, transaction: ApiTransaction): GlobalState { + return { + ...global, + transactions: { + ...global.transactions, + byTxId: { ...(global.transactions?.byTxId || {}), [transaction.txId]: transaction }, + orderedTxIds: (global.transactions?.orderedTxIds || []).includes(transaction.txId) + ? global.transactions?.orderedTxIds + : [transaction.txId].concat(global.transactions?.orderedTxIds || []), + }, + }; +} diff --git a/src/global/reducers/wallet.ts b/src/global/reducers/wallet.ts new file mode 100644 index 00000000..61b17fe5 --- /dev/null +++ b/src/global/reducers/wallet.ts @@ -0,0 +1,58 @@ +import { GlobalState, TransferState } from '../types'; + +export function updateCurrentTransfer(global: GlobalState, update: Partial) { + return { + ...global, + currentTransfer: { + ...global.currentTransfer, + ...update, + }, + }; +} + +export function clearCurrentTransfer(global: GlobalState) { + return { + ...global, + currentTransfer: { + state: TransferState.None, + }, + }; +} + +export function updateCurrentSignature(global: GlobalState, update: Partial) { + return { + ...global, + currentSignature: { + ...global.currentSignature, + ...update, + }, + } as GlobalState; +} + +export function clearCurrentSignature(global: GlobalState) { + return { + ...global, + currentSignature: undefined, + }; +} + +export function updateBackupWalletModal(global: GlobalState, update: Partial) { + return { + ...global, + backupWallet: { + ...global.backupWallet, + ...update, + }, + } as GlobalState; +} + +export function updateTransactionsIsLoading(global: GlobalState, isLoading: boolean) { + return { + ...global, + transactions: { + ...global.transactions, + byTxId: global.transactions?.byTxId || {}, + isLoading, + }, + }; +} diff --git a/src/global/selectors/index.ts b/src/global/selectors/index.ts new file mode 100644 index 00000000..aed86745 --- /dev/null +++ b/src/global/selectors/index.ts @@ -0,0 +1,51 @@ +import { GlobalState } from '../types'; + +import memoized from '../../util/memoized'; +import { bigStrToHuman } from '../helpers'; +import { round } from '../../util/round'; + +export function selectHasSession(global: GlobalState) { + return Boolean(global.addresses); +} + +export const selectAllTokensMemoized = memoized(( + balances: Exclude, + tokenInfo: Exclude, +) => { + const allBySlug = Object + .values(balances.byAccountId) + .reduce((acc, byAccountId) => { + return { + ...acc, + ...byAccountId.bySlug, + }; + }, {} as Record); + + return Object + .entries(allBySlug) + .filter(([slug]) => (slug in tokenInfo.bySlug)) + .map(([slug, balance]) => { + const amount = bigStrToHuman(balance); + const { + symbol, name, quote: { price, percentChange24h }, image, + } = tokenInfo.bySlug[slug]; + + return { + symbol, + slug, + amount, + name, + price, + change: round(percentChange24h / 100, 4), + image, + }; + }); +}); + +export function selectAllTokens(global: GlobalState) { + if (!global.balances || !global.tokenInfo) { + return undefined; + } + + return selectAllTokensMemoized(global.balances, global.tokenInfo); +} diff --git a/src/global/types.ts b/src/global/types.ts new file mode 100644 index 00000000..b068c725 --- /dev/null +++ b/src/global/types.ts @@ -0,0 +1,163 @@ +import { typify } from '../lib/teact/teactn'; +import { + ApiNft, ApiToken, ApiTransaction, ApiTransactionDraftError, ApiUpdate, +} from '../api/types'; + +export type ThemeKey = 'light' | 'dark'; +export type NotificationType = { + icon?: string; + message: string; +}; + +export enum AuthState { + none, + creatingWallet, + createPassword, + createBackup, + checkMnemonic, + importWallet, + importWalletCreatePassword, + ready, +} + +export enum TransferState { + None, + Initial, + Confirm, + Password, + InProgress, + Complete, +} + +export type UserToken = { + amount: number; + name: string; + symbol: string; + slug: string; + price: number; + change: number; + image?: string; +}; + +export type GlobalState = { + auth: { + state: AuthState; + isLoading?: boolean; + mnemonic?: string[]; + mnemonicCheckIndexes?: number[]; + address?: string; + error?: string; + }; + + currentTransfer: { + state: TransferState; + isLoading?: boolean; + toAddress?: string; + error?: string; + amount?: number; + fee?: string; + comment?: string; + promiseId?: string; + txId?: string; + }; + + currentSignature?: { + promiseId: string; + dataHex: string; + error?: string; + isSigned?: boolean; + }; + + addresses?: { + byAccountId: Record; + }; + + balances?: { + byAccountId: Record; + }>; + }; + + tokenInfo?: { + bySlug: Record; + }; + + settings: { + animationLevel: 0 | 1 | 2; + isTonProxyEnabled?: boolean; + isTonMagicEnabled?: boolean; + }; + + transactions?: { + isLoading?: boolean; + byTxId: Record; + orderedTxIds?: string[]; + nextOffsetTxId?: string; + }; + + nfts?: { + byAddress: Record; + orderedAddresses?: string[]; + }; + + backupWallet: { + isLoading?: boolean; + mnemonic?: string[]; + error?: string; + }; + + isBackupRequired?: boolean; + dialogs: string[]; + notifications: NotificationType[]; + currentTokenSlug?: string; + currentTransactionId?: string; +}; + +export interface ActionPayloads { + // Initial + init: never; + initApi: never; + apiUpdate: ApiUpdate; + restartAuth: never; + startCreatingWallet: never; + afterCheckMnemonic: never; + skipCheckMnemonic: never; + restartCheckMnemonicIndexes: never; + afterCreatePassword: { password: string; isImporting?: boolean }; + startImportingWallet: never; + afterImportMnemonic: { mnemonic: string[] }; + + selectToken: { slug?: string }; + startBackupWallet: { password: string }; + cleanBackupWalletError: never; + closeBackupWallet: { isMnemonicChecked?: boolean }; + setTransferScreen: { state: TransferState }; + startTransfer: { amount?: number; toAddress?: string; comment?: string }; + fetchFee: { amount: number; toAddress: string; comment?: string }; + submitTransferInitial: { amount: number; toAddress: string; comment?: string }; + submitTransferConfirm: never; + submitTransferPassword: { password: string }; + cleanTransferError: never; + cancelTransfer: never; + showDialog: { message: string }; + dismissDialog: never; + showTxDraftError: { error?: ApiTransactionDraftError }; + showNotification: { message: string; icon?: string }; + dismissNotification: never; + afterSignIn: never; + signOut: never; + fetchTransactions: { offsetId?: string; limit?: number }; + fetchNfts: never; + showTransactionInfo: { txId?: string }; + closeTransactionInfo: never; + + submitSignature: { password: string }; + cleanSignatureError: never; + cancelSignature: never; + + toggleTonProxy: { isEnabled: boolean }; + toggleTonMagic: { isEnabled: boolean }; +} + +const typed = typify(); +export type GlobalActions = ReturnType; diff --git a/src/hooks/useBackgroundMode.ts b/src/hooks/useBackgroundMode.ts new file mode 100644 index 00000000..6a1bc3be --- /dev/null +++ b/src/hooks/useBackgroundMode.ts @@ -0,0 +1,30 @@ +import { useEffect } from '../lib/teact/teact'; + +export default function useBackgroundMode( + onBlur?: AnyToVoidFunction, + onFocus?: AnyToVoidFunction, +) { + useEffect(() => { + if (onBlur && !document.hasFocus()) { + onBlur(); + } + + if (onBlur) { + window.addEventListener('blur', onBlur); + } + + if (onFocus) { + window.addEventListener('focus', onFocus); + } + + return () => { + if (onFocus) { + window.removeEventListener('focus', onFocus); + } + + if (onBlur) { + window.removeEventListener('blur', onBlur); + } + }; + }, [onBlur, onFocus]); +} diff --git a/src/hooks/useBrowserUiColor.ts b/src/hooks/useBrowserUiColor.ts new file mode 100644 index 00000000..93be802d --- /dev/null +++ b/src/hooks/useBrowserUiColor.ts @@ -0,0 +1,32 @@ +import { useEffect } from '../lib/teact/teact'; + +export default function useBrowserUiColor(isActive: boolean, lightColor: string, darkColor: string) { + useEffect(() => { + const metaElementLight = getThemeColorMetaElement(true); + const metaElementDark = getThemeColorMetaElement(); + + if (isActive) { + metaElementLight.setAttribute('content', lightColor); + metaElementDark.setAttribute('content', darkColor); + } + + return () => { + metaElementLight.remove(); + metaElementDark.remove(); + }; + }, [lightColor, isActive, darkColor]); +} + +function getThemeColorMetaElement(isLight?: boolean) { + let metaThemeColor = document.querySelector( + `meta[name="theme-color"][media="(prefers-color-scheme: ${isLight ? 'light' : 'dark'})"]`, + ); + if (!metaThemeColor) { + metaThemeColor = document.createElement('meta'); + metaThemeColor.setAttribute('name', 'theme-color'); + metaThemeColor.setAttribute('media', `(prefers-color-scheme: ${isLight ? 'light' : 'dark'})`); + document.getElementsByTagName('head')[0].appendChild(metaThemeColor); + } + + return metaThemeColor; +} diff --git a/src/hooks/useCurrentOrPrev.ts b/src/hooks/useCurrentOrPrev.ts new file mode 100644 index 00000000..ee12bf2c --- /dev/null +++ b/src/hooks/useCurrentOrPrev.ts @@ -0,0 +1,10 @@ +import usePrevious from './usePrevious'; + +export default function useCurrentOrPrev( + current: T, shouldSkipUndefined = false, shouldForceCurrent = false, +): T | undefined { + const prev = usePrevious(current, shouldSkipUndefined); + + // eslint-disable-next-line no-null/no-null + return shouldForceCurrent || (current !== null && current !== undefined) ? current : prev; +} diff --git a/src/hooks/useEffectWithPrevDeps.ts b/src/hooks/useEffectWithPrevDeps.ts new file mode 100644 index 00000000..43ca51cc --- /dev/null +++ b/src/hooks/useEffectWithPrevDeps.ts @@ -0,0 +1,14 @@ +import { useEffect } from '../lib/teact/teact'; +import usePrevious from './usePrevious'; + +const useEffectWithPrevDeps = ( + cb: (args: T | readonly []) => void, dependencies: T, debugKey?: string, +) => { + const prevDeps = usePrevious(dependencies); + return useEffect(() => { + return cb(prevDeps || []); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, dependencies, debugKey); +}; + +export default useEffectWithPrevDeps; diff --git a/src/hooks/useFlag.ts b/src/hooks/useFlag.ts new file mode 100644 index 00000000..a8fef948 --- /dev/null +++ b/src/hooks/useFlag.ts @@ -0,0 +1,17 @@ +import { useCallback, useState } from '../lib/teact/teact'; + +const useFlag = (initial = false): [boolean, AnyToVoidFunction, AnyToVoidFunction] => { + const [value, setValue] = useState(initial); + + const setTrue = useCallback(() => { + setValue(true); + }, []); + + const setFalse = useCallback(() => { + setValue(false); + }, []); + + return [value, setTrue, setFalse]; +}; + +export default useFlag; diff --git a/src/hooks/useFocusAfterAnimation.tsx b/src/hooks/useFocusAfterAnimation.tsx new file mode 100644 index 00000000..a8798dee --- /dev/null +++ b/src/hooks/useFocusAfterAnimation.tsx @@ -0,0 +1,31 @@ +import { RefObject } from 'react'; + +import { IS_TOUCH_ENV } from '../util/environment'; +import { fastRaf } from '../util/schedulers'; +import { useEffect } from '../lib/teact/teact'; + +const DEFAULT_DURATION = 400; + +export default function useFocusAfterAnimation({ + ref, + isActive = true, + animationDuration = DEFAULT_DURATION, +}: { + ref: RefObject; + isActive?: boolean; + animationDuration?: number; +}) { + useEffect(() => { + if (IS_TOUCH_ENV || !isActive) { + return; + } + + setTimeout(() => { + fastRaf(() => { + if (ref.current) { + ref.current.focus(); + } + }); + }, animationDuration); + }, [ref, animationDuration, isActive]); +} diff --git a/src/hooks/useForceUpdate.ts b/src/hooks/useForceUpdate.ts new file mode 100644 index 00000000..5d8527a0 --- /dev/null +++ b/src/hooks/useForceUpdate.ts @@ -0,0 +1,11 @@ +import { useCallback, useState } from '../lib/teact/teact'; + +const useForceUpdate = () => { + const [, setTrigger] = useState(false); + + return useCallback(() => { + setTrigger((trigger) => !trigger); + }, []); +}; + +export default useForceUpdate; diff --git a/src/hooks/useHeavyAnimationCheck.ts b/src/hooks/useHeavyAnimationCheck.ts new file mode 100644 index 00000000..7dbd0dd5 --- /dev/null +++ b/src/hooks/useHeavyAnimationCheck.ts @@ -0,0 +1,67 @@ +import { useEffect } from '../lib/teact/teact'; + +const ANIMATION_START_EVENT = 'tt-event-heavy-animation-start'; +const ANIMATION_END_EVENT = 'tt-event-heavy-animation-end'; + +let timeout: number | undefined; +let isAnimating = false; + +// Make sure to end even if end callback was not called (which was some hardly-reproducible bug) +const AUTO_END_TIMEOUT = 1000; + +const useHeavyAnimationCheck = ( + handleAnimationStart: AnyToVoidFunction, + handleAnimationEnd: AnyToVoidFunction, + isDisabled = false, +) => { + useEffect(() => { + if (isDisabled) { + return undefined; + } + + if (isAnimating) { + handleAnimationStart(); + } + + document.addEventListener(ANIMATION_START_EVENT, handleAnimationStart); + document.addEventListener(ANIMATION_END_EVENT, handleAnimationEnd); + + return () => { + document.removeEventListener(ANIMATION_END_EVENT, handleAnimationEnd); + document.removeEventListener(ANIMATION_START_EVENT, handleAnimationStart); + }; + }, [isDisabled, handleAnimationEnd, handleAnimationStart]); +}; + +export function isHeavyAnimating() { + return isAnimating; +} + +export function dispatchHeavyAnimationEvent(duration = AUTO_END_TIMEOUT) { + if (!isAnimating) { + isAnimating = true; + document.dispatchEvent(new Event(ANIMATION_START_EVENT)); + } + + if (timeout) { + clearTimeout(timeout); + timeout = undefined; + } + + // Race condition may happen if another `dispatchHeavyAnimationEvent` is called before `onEnd` + function onEnd() { + if (timeout) { + clearTimeout(timeout); + timeout = undefined; + } + + isAnimating = false; + document.dispatchEvent(new Event(ANIMATION_END_EVENT)); + } + + timeout = window.setTimeout(onEnd, duration); + + return onEnd; +} + +export default useHeavyAnimationCheck; diff --git a/src/hooks/useHorizontalScroll.ts b/src/hooks/useHorizontalScroll.ts new file mode 100644 index 00000000..7fb258d0 --- /dev/null +++ b/src/hooks/useHorizontalScroll.ts @@ -0,0 +1,24 @@ +import { useEffect } from '../lib/teact/teact'; + +const useHorizontalScroll = (container: HTMLElement | null, isDisabled?: boolean) => { + useEffect(() => { + if (!container || isDisabled) { + return undefined; + } + + function handleScroll(e: WheelEvent) { + // Ignore horizontal scroll and let it work natively (e.g. on touchpad) + if (!e.deltaX) { + container!.scrollLeft += e.deltaY / 4; + } + } + + container.addEventListener('wheel', handleScroll, { passive: true }); + + return () => { + container.removeEventListener('wheel', handleScroll); + }; + }, [container, isDisabled]); +}; + +export default useHorizontalScroll; diff --git a/src/hooks/useInfinityLoader.ts b/src/hooks/useInfinityLoader.ts new file mode 100644 index 00000000..dc882ed8 --- /dev/null +++ b/src/hooks/useInfinityLoader.ts @@ -0,0 +1,34 @@ +import { useCallback, useRef } from '../lib/teact/teact'; + +interface OwnProps { + loadMore: NoneToVoidFunction; + isLoading?: boolean; + isDisabled?: boolean; +} + +export default function useInfinityLoader({ isDisabled, isLoading, loadMore }: OwnProps) { + // eslint-disable-next-line no-null/no-null + const loadingObserver = useRef(null); + + return useCallback((node: HTMLElement) => { + if (isLoading) { + return; + } + + if (loadingObserver.current) { + loadingObserver.current.disconnect(); + } + + if (isDisabled) { + return; + } + + loadingObserver.current = new IntersectionObserver((entries) => { + if (entries[0].isIntersecting) { + loadMore(); + } + }); + + loadingObserver.current.observe(node); + }, [isDisabled, isLoading, loadMore]); +} diff --git a/src/hooks/useMediaTransition.ts b/src/hooks/useMediaTransition.ts new file mode 100644 index 00000000..3aa3e10b --- /dev/null +++ b/src/hooks/useMediaTransition.ts @@ -0,0 +1,8 @@ +import useShowTransition from './useShowTransition'; + +export default function useMediaTransition(mediaData?: any) { + const isMediaReady = Boolean(mediaData); + const { transitionClassNames } = useShowTransition(isMediaReady, undefined, isMediaReady, 'slow'); + + return transitionClassNames; +} diff --git a/src/hooks/usePasswordValidation.ts b/src/hooks/usePasswordValidation.ts new file mode 100644 index 00000000..c4936db0 --- /dev/null +++ b/src/hooks/usePasswordValidation.ts @@ -0,0 +1,29 @@ +import { useEffect, useState } from '../lib/teact/teact'; + +const SPECIAL_CHARS_REGEX = /[`!@#$%^&*()_+\-=\]{};':"\\|,.<>?~]/; + +export const usePasswordValidation = ({ + firstPassword = '', + secondPassword = '', + requiredLength = 8, +}) => { + const [invalidLength, setInvalidLength] = useState(false); + const [noNumber, setNoNumber] = useState(false); + const [noUpperCase, setNoUpperCase] = useState(false); + const [noLowerCase, setNoLowerCase] = useState(false); + const [noSpecialChar, setNoSpecialChar] = useState(false); + const [noEqual, setNoEqual] = useState(false); + + useEffect(() => { + setInvalidLength(firstPassword.length < requiredLength); + setNoUpperCase(firstPassword.toLowerCase() === firstPassword); + setNoLowerCase(firstPassword.toUpperCase() === firstPassword); + setNoNumber(!/\d/.test(firstPassword)); + setNoEqual(Boolean(firstPassword && firstPassword !== secondPassword)); + setNoSpecialChar(!SPECIAL_CHARS_REGEX.test(firstPassword)); + }, [firstPassword, secondPassword, requiredLength]); + + return { + invalidLength, noNumber, noUpperCase, noLowerCase, noEqual, noSpecialChar, + }; +}; diff --git a/src/hooks/usePrevious.ts b/src/hooks/usePrevious.ts new file mode 100644 index 00000000..9e7c2139 --- /dev/null +++ b/src/hooks/usePrevious.ts @@ -0,0 +1,16 @@ +import { useRef } from '../lib/teact/teact'; + +function usePrevious(next: T): T | undefined; +function usePrevious(next: T, shouldSkipUndefined: true): Exclude | undefined; +function usePrevious(next: T, shouldSkipUndefined?: boolean): Exclude | undefined; +function usePrevious(next: T, shouldSkipUndefined?: boolean) { + const ref = useRef(); + const { current } = ref; + if (!shouldSkipUndefined || next !== undefined) { + ref.current = next; + } + + return current; +} + +export default usePrevious; diff --git a/src/hooks/useShowTransition.ts b/src/hooks/useShowTransition.ts new file mode 100644 index 00000000..5e18259c --- /dev/null +++ b/src/hooks/useShowTransition.ts @@ -0,0 +1,66 @@ +import { useRef, useState } from '../lib/teact/teact'; +import buildClassName from '../util/buildClassName'; + +const CLOSE_DURATION = 350; + +const useShowTransition = ( + isOpen = false, + onCloseTransitionEnd?: () => void, + noOpenTransition = false, + className: string | false = 'fast', + noCloseTransition = false, +) => { + const [isClosed, setIsClosed] = useState(!isOpen); + const closeTimeoutRef = useRef(); + // СSS class should be added in a separate tick to turn on CSS transition. + const [hasOpenClassName, setHasOpenClassName] = useState(isOpen && noOpenTransition); + + if (isOpen) { + setIsClosed(false); + setHasOpenClassName(true); + + if (closeTimeoutRef.current) { + window.clearTimeout(closeTimeoutRef.current); + closeTimeoutRef.current = undefined; + } + } else { + setHasOpenClassName(false); + + if (!isClosed && !closeTimeoutRef.current) { + const exec = () => { + setIsClosed(true); + + if (onCloseTransitionEnd) { + onCloseTransitionEnd(); + } + + closeTimeoutRef.current = undefined; + }; + + if (noCloseTransition) { + exec(); + } else { + closeTimeoutRef.current = window.setTimeout(exec, CLOSE_DURATION); + } + } + } + + // `noCloseTransition`, when set to true, should remove the open class immediately + const shouldHaveOpenClassName = hasOpenClassName && !(noCloseTransition && !isOpen); + const isClosing = Boolean(closeTimeoutRef.current); + const shouldRender = isOpen || isClosing; + const transitionClassNames = buildClassName( + className && 'opacity-transition', + className, + shouldHaveOpenClassName && 'open', + shouldRender && 'shown', + isClosing && 'closing', + ); + + return { + shouldRender, + transitionClassNames, + }; +}; + +export default useShowTransition; diff --git a/src/hooks/useTimeout.ts b/src/hooks/useTimeout.ts new file mode 100644 index 00000000..5cc3b18b --- /dev/null +++ b/src/hooks/useTimeout.ts @@ -0,0 +1,19 @@ +import { useEffect, useLayoutEffect, useRef } from '../lib/teact/teact'; + +function useTimeout(callback: () => void, delay?: number) { + const savedCallback = useRef(callback); + + useLayoutEffect(() => { + savedCallback.current = callback; + }, [callback]); + + useEffect(() => { + if (typeof delay !== 'number') { + return undefined; + } + const id = setTimeout(() => savedCallback.current(), delay); + return () => clearTimeout(id); + }, [delay]); +} + +export default useTimeout; diff --git a/src/hooks/useVirtualBackdrop.ts b/src/hooks/useVirtualBackdrop.ts new file mode 100644 index 00000000..e873be8f --- /dev/null +++ b/src/hooks/useVirtualBackdrop.ts @@ -0,0 +1,41 @@ +import { RefObject } from 'react'; +import { useEffect } from '../lib/teact/teact'; + +import styles from '../components/ui/Menu.module.scss'; + +// This effect implements closing menus by clicking outside of them +// without adding extra elements to the DOM +export default function useVirtualBackdrop( + isOpen: boolean, + menuRef: RefObject, + onClose?: () => void | undefined, +) { + useEffect(() => { + const handleEvent = (e: Event) => { + const menu = menuRef.current; + const target = e.target as HTMLElement | null; + if (!menu || !target) { + return; + } + + if ( + !menu.contains(e.target as Node | null) + || target.classList.contains(styles.backdrop) + ) { + e.preventDefault(); + e.stopPropagation(); + if (onClose) { + onClose(); + } + } + }; + + if (isOpen && onClose) { + document.addEventListener('mousedown', handleEvent); + } + + return () => { + document.removeEventListener('mousedown', handleEvent); + }; + }, [isOpen, menuRef, onClose]); +} diff --git a/src/index.html b/src/index.html new file mode 100644 index 00000000..2857d26e --- /dev/null +++ b/src/index.html @@ -0,0 +1,50 @@ + + + + + + MyTonWallet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + diff --git a/src/index.tsx b/src/index.tsx new file mode 100644 index 00000000..3871689b --- /dev/null +++ b/src/index.tsx @@ -0,0 +1,42 @@ +import './util/handleError'; + +import React from './lib/teact/teact'; +import TeactDOM from './lib/teact/teact-dom'; + +import { getActions, getGlobal } from './global'; +import './global/actions'; +import './global/init'; + +import { DEBUG } from './config'; + +import App from './components/App'; + +import './styles/index.scss'; + +if (DEBUG) { + // eslint-disable-next-line no-console + console.log('>>> INIT'); +} + +getActions().init(); +getActions().initApi(); + +if (DEBUG) { + // eslint-disable-next-line no-console + console.log('>>> START INITIAL RENDER'); +} + +TeactDOM.render( + , + document.getElementById('root')!, +); + +if (DEBUG) { + // eslint-disable-next-line no-console + console.log('>>> FINISH INITIAL RENDER'); +} + +document.addEventListener('dblclick', () => { + // eslint-disable-next-line no-console + console.warn('GLOBAL STATE', getGlobal()); +}); diff --git a/src/lib/rlottie/RLottie.ts b/src/lib/rlottie/RLottie.ts new file mode 100644 index 00000000..f28364c2 --- /dev/null +++ b/src/lib/rlottie/RLottie.ts @@ -0,0 +1,476 @@ +import { + DPR, + IS_SINGLE_COLUMN_LAYOUT, + IS_SAFARI, + IS_ANDROID, +} from '../../util/environment'; +import { animate } from '../../util/animation'; +import cycleRestrict from '../../util/cycleRestrict'; +import { createConnector } from '../../util/PostMessageConnector'; +import generateIdFor from '../../util/generateIdFor'; + +interface Params { + noLoop?: boolean; + size?: number; + quality?: number; + isLowPriority?: boolean; +} + +type Frames = ArrayBuffer[]; +type Chunks = (Frames | undefined)[]; + +// TODO Consider removing chunks +const CHUNK_SIZE = 1; +const MAX_WORKERS = 4; +const HIGH_PRIORITY_QUALITY = IS_SINGLE_COLUMN_LAYOUT ? 0.75 : 1; +const LOW_PRIORITY_QUALITY = IS_ANDROID ? 0.5 : 0.75; +const HIGH_PRIORITY_CACHE_MODULO = IS_SAFARI ? 2 : 4; +const LOW_PRIORITY_CACHE_MODULO = 0; +const KEY_STORE = {}; + +const workers = new Array(MAX_WORKERS).fill(undefined).map( + () => createConnector(new Worker(new URL('./rlottie.worker.ts', import.meta.url))), +); +let lastWorkerIndex = -1; + +class RLottie { + // Config + + private imgSize!: number; + + private key = generateIdFor(KEY_STORE); + + private msPerFrame = 1000 / 60; + + private reduceFactor = 1; + + private cacheModulo!: number; + + private chunkSize!: number; + + private workerIndex!: number; + + private chunks: Chunks = []; + + private framesCount?: number; + + private chunksCount?: number; + + // Container + + private canvas = document.createElement('canvas'); + + private ctx = this.canvas.getContext('2d')!; + + // State + + private isAnimating = false; + + private isWaiting = true; + + private isEnded = false; + + private isOnLoadFired = false; + + private isDestroyed = false; + + private approxFrameIndex = 0; + + private prevFrameIndex = -1; + + private stopFrameIndex? = 0; + + private speed = 1; + + private direction: 1 | -1 = 1; + + private lastRenderAt?: number; + + constructor( + private container: HTMLDivElement, + private tgsUrl: string, + private params: Params = {}, + private onLoad?: () => void, + private customColor?: [number, number, number], + private onEnded?: (isDestroyed?: boolean) => void, + ) { + this.initContainer(); + this.initConfig(); + this.initRenderer(); + } + + isPlaying() { + return this.isAnimating || this.isWaiting; + } + + play(forceRestart = false) { + if (this.isEnded && forceRestart) { + this.approxFrameIndex = Math.floor(0); + } + + this.stopFrameIndex = undefined; + this.direction = 1; + this.doPlay(); + } + + pause() { + if (this.isWaiting) { + this.stopFrameIndex = this.approxFrameIndex; + } else { + this.isAnimating = false; + } + + const currentChunkIndex = this.getChunkIndex(this.approxFrameIndex); + this.chunks = this.chunks.map((chunk, i) => (i === currentChunkIndex ? chunk : undefined)); + } + + playSegment([startFrameIndex, stopFrameIndex]: [number, number]) { + this.approxFrameIndex = Math.floor(startFrameIndex / this.reduceFactor); + this.stopFrameIndex = Math.floor(stopFrameIndex / this.reduceFactor); + this.direction = startFrameIndex < stopFrameIndex ? 1 : -1; + this.doPlay(); + } + + setSpeed(speed: number) { + this.speed = speed; + } + + destroy() { + this.isDestroyed = true; + this.pause(); + this.destroyRenderer(); + this.destroyContainer(); + } + + private initContainer() { + if (!(this.container.parentNode instanceof HTMLElement)) { + throw new Error('[RLottie] Container is not mounted'); + } + + let { size } = this.params; + + if (!size) { + size = ( + this.container.offsetWidth + || parseInt(this.container.style.width, 10) + || this.container.parentNode.offsetWidth + ); + + if (!size) { + throw new Error('[RLottie] Failed to detect width from container'); + } + } + + this.canvas.style.width = `${size}px`; + this.canvas.style.height = `${size}px`; + + const { isLowPriority, quality = isLowPriority ? LOW_PRIORITY_QUALITY : HIGH_PRIORITY_QUALITY } = this.params; + // Reduced quality only looks acceptable on high DPR screens + const imgSize = Math.round(size * Math.max(DPR * quality, 1)); + + this.canvas.width = imgSize; + this.canvas.height = imgSize; + + this.container.appendChild(this.canvas); + + this.imgSize = imgSize; + } + + private initConfig() { + const { isLowPriority } = this.params; + + this.cacheModulo = isLowPriority ? LOW_PRIORITY_CACHE_MODULO : HIGH_PRIORITY_CACHE_MODULO; + this.chunkSize = CHUNK_SIZE; + } + + private destroyContainer() { + this.canvas.remove(); + } + + setColor(newColor: [number, number, number] | undefined) { + this.customColor = newColor; + + // TODO Remove? + if (this.customColor) { + const imageData = this.ctx.getImageData(0, 0, this.imgSize, this.imgSize); + const arr = imageData.data; + for (let i = 0; i < arr.length; i += 4) { + /* eslint-disable prefer-destructuring */ + arr[i] = this.customColor[0]; + arr[i + 1] = this.customColor[1]; + arr[i + 2] = this.customColor[2]; + /* eslint-enable prefer-destructuring */ + } + this.ctx.putImageData(imageData, 0, 0); + } + } + + private initRenderer() { + this.workerIndex = cycleRestrict(MAX_WORKERS, ++lastWorkerIndex); + + workers[this.workerIndex].request({ + name: 'init', + args: [ + this.key, + this.tgsUrl, + this.imgSize, + this.params.isLowPriority, + this.onRendererInit.bind(this), + ], + }); + } + + private destroyRenderer() { + workers[this.workerIndex].request({ + name: 'destroy', + args: [this.key], + }); + } + + private onRendererInit(reduceFactor: number, msPerFrame: number, framesCount: number) { + this.reduceFactor = reduceFactor; + this.msPerFrame = msPerFrame; + this.framesCount = framesCount; + this.chunksCount = Math.ceil(framesCount / this.chunkSize); + + if (this.isWaiting) { + this.doPlay(); + } + } + + changeData(tgsUrl: string) { + this.pause(); + this.tgsUrl = tgsUrl; + this.initConfig(); + + workers[this.workerIndex].request({ + name: 'changeData', + args: [ + this.key, + this.tgsUrl, + this.params.isLowPriority, + this.onChangeData.bind(this), + ], + }); + } + + private onChangeData(reduceFactor: number, msPerFrame: number, framesCount: number) { + this.reduceFactor = reduceFactor; + this.msPerFrame = msPerFrame; + this.framesCount = framesCount; + this.chunksCount = Math.ceil(framesCount / this.chunkSize); + this.isWaiting = false; + this.isAnimating = false; + + this.doPlay(); + } + + private doPlay() { + if (!this.framesCount) { + return; + } + + if (this.isDestroyed) { + return; + } + + if (this.isAnimating) { + return; + } + + if (!this.isWaiting) { + this.lastRenderAt = undefined; + } + + this.isEnded = false; + this.isAnimating = true; + this.isWaiting = false; + + animate(() => { + if (this.isDestroyed) { + return false; + } + + // Paused from outside + if (!this.isAnimating && this.isOnLoadFired) { + return false; + } + + const frameIndex = Math.round(this.approxFrameIndex); + const chunkIndex = this.getChunkIndex(frameIndex); + const chunk = this.chunks[chunkIndex]; + + if (!chunk || chunk.length === 0) { + this.requestChunk(chunkIndex); + this.isAnimating = false; + this.isWaiting = true; + return false; + } + + if (this.cacheModulo && chunkIndex % this.cacheModulo === 0) { + this.cleanupPrevChunk(chunkIndex); + } + + if (frameIndex !== this.prevFrameIndex) { + const frame = this.getFrame(frameIndex); + if (!frame) { + this.isAnimating = false; + this.isWaiting = true; + return false; + } + + const arr = new Uint8ClampedArray(frame); + if (this.customColor) { + for (let i = 0; i < arr.length; i += 4) { + /* eslint-disable prefer-destructuring */ + arr[i] = this.customColor[0]; + arr[i + 1] = this.customColor[1]; + arr[i + 2] = this.customColor[2]; + /* eslint-enable prefer-destructuring */ + } + } + const imageData = new ImageData(arr, this.imgSize, this.imgSize); + this.ctx.putImageData(imageData, 0, 0); + + if (this.onLoad && !this.isOnLoadFired) { + this.isOnLoadFired = true; + this.onLoad(); + } + + this.prevFrameIndex = frameIndex; + } + + const now = Date.now(); + const currentSpeed = this.lastRenderAt ? this.msPerFrame / (now - this.lastRenderAt) : 1; + const delta = Math.min(1, (this.direction * this.speed) / currentSpeed); + const expectedNextFrameIndex = Math.round(this.approxFrameIndex + delta); + + this.lastRenderAt = now; + + // Forward animation finished + if (delta > 0 && (frameIndex === this.framesCount! - 1 || expectedNextFrameIndex > this.framesCount! - 1)) { + if (this.params.noLoop) { + this.isAnimating = false; + this.isEnded = true; + this.onEnded?.(); + return false; + } + + this.approxFrameIndex = 0; + + // Backward animation finished + } else if (delta < 0 && (frameIndex === 0 || expectedNextFrameIndex < 0)) { + if (this.params.noLoop) { + this.isAnimating = false; + this.isEnded = true; + this.onEnded?.(); + return false; + } + + this.approxFrameIndex = this.framesCount! - 1; + + // Stop frame reached + } else if ( + this.stopFrameIndex !== undefined + && (frameIndex === this.stopFrameIndex + || ( + (delta > 0 && expectedNextFrameIndex > this.stopFrameIndex) + || (delta < 0 && expectedNextFrameIndex < this.stopFrameIndex) + )) + ) { + this.stopFrameIndex = undefined; + this.isAnimating = false; + return false; + + // Preparing next frame + } else { + this.approxFrameIndex += delta; + } + + const nextFrameIndex = Math.round(this.approxFrameIndex); + + if (!this.getFrame(nextFrameIndex)) { + this.requestChunk(this.getChunkIndex(nextFrameIndex)); + this.isWaiting = true; + this.isAnimating = false; + return false; + } + + return true; + }); + } + + private getFrame(frameIndex: number) { + const chunkIndex = this.getChunkIndex(frameIndex); + const indexInChunk = this.getFrameIndexInChunk(frameIndex); + const chunk = this.chunks[chunkIndex]; + if (!chunk) { + return undefined; + } + + return chunk[indexInChunk]; + } + + private getFrameIndexInChunk(frameIndex: number) { + const chunkIndex = this.getChunkIndex(frameIndex); + return frameIndex - chunkIndex * this.chunkSize; + } + + private getChunkIndex(frameIndex: number) { + return Math.floor(frameIndex / this.chunkSize); + } + + private requestChunk(chunkIndex: number) { + if (this.chunks[chunkIndex] && this.chunks[chunkIndex]?.length !== 0) { + return; + } + + this.chunks[chunkIndex] = []; + + const fromIndex = chunkIndex * this.chunkSize; + const toIndex = Math.min(fromIndex + this.chunkSize - 1, this.framesCount! - 1); + + workers[this.workerIndex].request({ + name: 'renderFrames', + args: [this.key, fromIndex, toIndex, this.onFrameLoad.bind(this)], + }); + } + + private cleanupPrevChunk(chunkIndex: number) { + if (this.chunksCount! < 3) { + return; + } + + const prevChunkIndex = cycleRestrict(this.chunksCount!, chunkIndex - 1); + this.chunks[prevChunkIndex] = undefined; + } + + private requestNextChunk(chunkIndex: number) { + if (this.chunksCount === 1) { + return; + } + + const nextChunkIndex = cycleRestrict(this.chunksCount!, chunkIndex + 1); + + if (!this.chunks[nextChunkIndex]) { + this.requestChunk(nextChunkIndex); + } + } + + private onFrameLoad(frameIndex: number, arrayBuffer: ArrayBuffer) { + const chunkIndex = this.getChunkIndex(frameIndex); + const chunk = this.chunks[chunkIndex]; + // Frame can be skipped and chunk can be already cleaned up + if (!chunk) { + return; + } + + chunk[this.getFrameIndexInChunk(frameIndex)] = arrayBuffer; + + if (this.isWaiting) { + this.doPlay(); + } + } +} + +export default RLottie; diff --git a/src/lib/rlottie/__mocks__/RLottie.ts b/src/lib/rlottie/__mocks__/RLottie.ts new file mode 100644 index 00000000..b758faba --- /dev/null +++ b/src/lib/rlottie/__mocks__/RLottie.ts @@ -0,0 +1,2 @@ +export default class RLottie { +} diff --git a/src/lib/rlottie/rlottie-wasm.js b/src/lib/rlottie/rlottie-wasm.js new file mode 100644 index 00000000..773ad1ab --- /dev/null +++ b/src/lib/rlottie/rlottie-wasm.js @@ -0,0 +1 @@ +var Module=typeof Module!=="undefined"?Module:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram="./this.program";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);return nodeFS["readFileSync"](filename,binary?null:"utf8")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];function dynamicAlloc(size){var ret=HEAP32[DYNAMICTOP_PTR>>2];var end=ret+size+15&-16;HEAP32[DYNAMICTOP_PTR>>2]=end;return ret}function getNativeTypeSize(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return 4}else if(type[0]==="i"){var bits=Number(type.substr(1));assert(bits%8===0,"getNativeTypeSize invalid bits "+bits+", type "+type);return bits/8}else{return 0}}}}var tempRet0=0;var setTempRet0=function(value){tempRet0=value};var getTempRet0=function(){return tempRet0};var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime;if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(typeof WebAssembly!=="object"){err("no native wasm support detected")}function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}var wasmMemory;var wasmTable=new WebAssembly.Table({"initial":522,"maximum":522+0,"element":"anyfunc"});var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}function getCFunc(ident){var func=Module["_"+ident];assert(func,"Cannot call unknown function "+ident+", make sure it is exported");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={"string":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},"array":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string")return UTF8ToString(ret);if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i>2]=0}stop=ret+size;while(ptr>0]=0}return ret}if(singleType==="i8"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var DYNAMIC_BASE=5275232,DYNAMICTOP_PTR=32192;var INITIAL_INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{wasmMemory=new WebAssembly.Memory({"initial":INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,"maximum":2147483648/WASM_PAGE_SIZE})}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Module["dynCall_v"](func)}else{Module["dynCall_vi"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){FS.ignorePermissions=false;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_abs=Math.abs;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_min=Math.min;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";out(what);err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="rlottie-wasm.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch==="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==="function"){fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;__ATINIT__.push({func:function(){___wasm_call_ctors()}});function demangle(func){return func}function demangleAll(text){var regex=/\b_Z[\w\d_]+/g;return text.replace(regex,function(x){var y=demangle(x);return x===y?x:y+" ["+x+"]"})}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){var js=jsStackTrace();if(Module["extraStackTrace"])js+="\n"+Module["extraStackTrace"]();return demangleAll(js)}function __ZN7VRegionC1ERK5VRect(){err("missing function: _ZN7VRegionC1ERK5VRect");abort(-1)}function __ZN7VRegionD1Ev(){err("missing function: _ZN7VRegionD1Ev");abort(-1)}function __ZN7VRegionpLERK5VRect(){err("missing function: _ZN7VRegionpLERK5VRect");abort(-1)}function __ZNK7VRegion12boundingRectEv(){err("missing function: _ZNK7VRegion12boundingRectEv");abort(-1)}function ___assert_fail(condition,filename,line,func){abort("Assertion failed: "+UTF8ToString(condition)+", at: "+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}function ___map_file(pathname,size){setErrNo(63);return-1}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node}return node},getFileDataAsRegularArray:function(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;i=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0;return}if(!node.contents||node.contents.subarray){var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize;return}if(!node.contents)node.contents=[];if(node.contents.length>newSize)node.contents.length=newSize;else while(node.contents.length=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return 2}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return 2}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return 2}return 0},mayLookup:function(dir){var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:function(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(29)}return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(29)}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};function ___sys_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function syscallMunmap(addr,len){if((addr|0)===-1||len===0){return-28}var info=SYSCALLS.mappings[addr];if(!info)return 0;if(len===info.len){var stream=FS.getStream(info.fd);if(info.prot&2){SYSCALLS.doMsync(addr,stream,len,info.flags,info.offset)}FS.munmap(stream);SYSCALLS.mappings[addr]=null;if(info.allocated){_free(info.malloc)}}return 0}function ___sys_munmap(addr,len){try{return syscallMunmap(addr,len)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=SYSCALLS.get();var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function _abort(){abort()}var setjmpId=0;function _saveSetjmp(env,label,table,size){env=env|0;label=label|0;table=table|0;size=size|0;var i=0;setjmpId=setjmpId+1|0;HEAP32[env>>2]=setjmpId;while((i|0)<(size|0)){if((HEAP32[table+(i<<3)>>2]|0)==0){HEAP32[table+(i<<3)>>2]=setjmpId;HEAP32[table+((i<<3)+4)>>2]=label;HEAP32[table+((i<<3)+8)>>2]=0;setTempRet0(size|0);return table|0}i=i+1|0}size=size*2|0;table=_realloc(table|0,8*(size+1|0)|0)|0;table=_saveSetjmp(env|0,label|0,table|0,size|0)|0;setTempRet0(size|0);return table|0}function _testSetjmp(id,table,size){id=id|0;table=table|0;size=size|0;var i=0,curr=0;while((i|0)<(size|0)){curr=HEAP32[table+(i<<3)>>2]|0;if((curr|0)==0)break;if((curr|0)==(id|0)){return HEAP32[table+((i<<3)+4)>>2]|0}i=i+1|0}return 0}function _longjmp(env,value){_setThrew(env,value||1);throw"longjmp"}function _emscripten_longjmp(env,value){_longjmp(env,value)}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function _emscripten_get_heap_size(){return HEAPU8.length}function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();var PAGE_MULTIPLE=65536;var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}var minHeapSize=16777216;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var ENV={};function __getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":(typeof navigator==="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8","_":__getExecutableName()};for(var x in ENV){env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _getTempRet0(){return getTempRet0()|0}function _round(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}function _setTempRet0($i){setTempRet0($i|0)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value==="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};for(var rule in EXPANSION_RULES_2){if(pattern.indexOf(rule)>=0){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var asmLibraryArg={"o":__ZN7VRegionC1ERK5VRect,"m":__ZN7VRegionD1Ev,"n":__ZN7VRegionpLERK5VRect,"x":__ZNK7VRegion12boundingRectEv,"a":___assert_fail,"u":___map_file,"h":___sys_fcntl64,"z":___sys_ioctl,"t":___sys_munmap,"A":___sys_open,"d":_abort,"c":_emscripten_longjmp,"q":_emscripten_memcpy_big,"r":_emscripten_resize_heap,"v":_environ_get,"w":_environ_sizes_get,"g":_fd_close,"y":_fd_read,"p":_fd_seek,"f":_fd_write,"b":_getTempRet0,"k":invoke_iii,"B":invoke_vi,"memory":wasmMemory,"i":_round,"l":_saveSetjmp,"j":_setTempRet0,"s":_strftime_l,"table":wasmTable,"e":_testSetjmp};var asm=createWasm();Module["asm"]=asm;var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["C"]).apply(null,arguments)};var _lottie_init=Module["_lottie_init"]=function(){return(_lottie_init=Module["_lottie_init"]=Module["asm"]["D"]).apply(null,arguments)};var _lottie_resize=Module["_lottie_resize"]=function(){return(_lottie_resize=Module["_lottie_resize"]=Module["asm"]["E"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["F"]).apply(null,arguments)};var _lottie_load_from_data=Module["_lottie_load_from_data"]=function(){return(_lottie_load_from_data=Module["_lottie_load_from_data"]=Module["asm"]["G"]).apply(null,arguments)};var _lottie_buffer=Module["_lottie_buffer"]=function(){return(_lottie_buffer=Module["_lottie_buffer"]=Module["asm"]["H"]).apply(null,arguments)};var _lottie_destroy=Module["_lottie_destroy"]=function(){return(_lottie_destroy=Module["_lottie_destroy"]=Module["asm"]["I"]).apply(null,arguments)};var _lottie_render=Module["_lottie_render"]=function(){return(_lottie_render=Module["_lottie_render"]=Module["asm"]["J"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["K"]).apply(null,arguments)};var _realloc=Module["_realloc"]=function(){return(_realloc=Module["_realloc"]=Module["asm"]["L"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["M"]).apply(null,arguments)};var _setThrew=Module["_setThrew"]=function(){return(_setThrew=Module["_setThrew"]=Module["asm"]["N"]).apply(null,arguments)};var dynCall_vi=Module["dynCall_vi"]=function(){return(dynCall_vi=Module["dynCall_vi"]=Module["asm"]["O"]).apply(null,arguments)};var dynCall_iii=Module["dynCall_iii"]=function(){return(dynCall_iii=Module["dynCall_iii"]=Module["asm"]["P"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["Q"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["R"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["S"]).apply(null,arguments)};var dynCall_v=Module["dynCall_v"]=function(){return(dynCall_v=Module["dynCall_v"]=Module["asm"]["T"]).apply(null,arguments)};function invoke_iii(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}Module["asm"]=asm;Module["intArrayFromString"]=intArrayFromString;Module["cwrap"]=cwrap;Module["allocate"]=allocate;var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}noExitRuntime=true;run(); diff --git a/src/lib/rlottie/rlottie-wasm.wasm b/src/lib/rlottie/rlottie-wasm.wasm new file mode 100644 index 0000000000000000000000000000000000000000..7f299645fa9ad4a6550be611bc9dbcac4397ce76 GIT binary patch literal 317584 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 jpC$MZ{X5! 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
  • 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

    9w= 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

    n9qnCj(9-q+c?;g^J7`+z_FsnjPa8D% z=iPBV7VI3;3QOP7I#WEHq@Vu1u>9 z55C*~SobC!9Wfy>DCuLGF#pO%W72WD^1N=n_md{5Z))T29Zgz(?RwjlEj;x{mR#x9 zXKaXm=fqFbX3wzcTco@np1on2{#lo<{rg_{LBBB7??LNkD#PAgcbuVZ!wlIQ0{c|% zmSgC9VO#QmcRw|>Dbwb{gYB0Lp)*2HWvs1ktn7%7`R-JV@z;HKRTH|8H(q-bRK-|h zvr(5lX5d$^{ch~2obm9)clDCX9RBR{LzDX@&v-+7`T4Nv$&c1;{r!B>uH@hkhFzcg z_%e&uqlNG5a^A0rg zzR^0hY{=8L2aIW{5n<1gK74I)>cH=}Kc1NKed_uiYe%H)EN%KUX3d%lo4c3>CY?N4 z{i@S+JLH?P=hdrBC&Ct`PL01{D${p=*H289hs{VE@m-Axk;5Eb10vK{#t!pd*4Dq( z%?-m!PoEg9xN&V*)UA&u?QHN`T43MCcjslrrEN`X5i~Yoa@s1du}{wp`zo!8!8+ui z+nu!59hGgy6f{a7SLW@4#EpsR$Myxkw`Jz6^u3SvcKM~%zVx=6AI^N;?P>b!j`u_Q z`nE9N=+*V>)gLFDf4($pYt{G#X4~QRt>4~w%v@&ITf5f#dRb=J{ae;u)!s5c<;nRz zJ%(GxzVUeO)dkBf=XHOK_VqYzX*PP>?|Bzh*31QIO+spQv*wNW+T@)y!rHN7{o&n4 zud^PiYX0Wk1(&U32k+0_R#3xsq}}MF2{mJFp_3Pc-B3@k#jh%;($Mcq+b?;o-nTk# z+A5r-oefsLKD=*bO;EtB{=?G-yz_L+=Wh?cbaKSGRxJvKpP62x>aJ%GhR5Ar_`dy_ zzy0|A(8Z;8B-y9j&71PIWv+d7&>uHO_V~uG)Q)mYk8yK+lR4;U;KeqMH{$Ic+uuuf z9Chxi_xXjz4v#)Lt1tCG;h6MMzjtfjR5~l~zkhakhQ?Wagfrprw;9e4=N-HLM)%cD z{qtQd)|dIo*_8#8VnsC@CM`}K?y z&!X0j>8j40)@f1yx^eND0Wtf3zmhT~bE|H|u=6{2WL6nHZAsG~?qm*J5HL0KNaHNq z_{aY7?%J$|Ew(SHoHRRY-I!ks=7;Rh8vNnaR$U^WWj)%Z^4qso&#jrCHcLOc zbVuKHURm=-M@{n^yg%>o=yea~w|iRKeawOkn%v=X+cEC5X;sg&<}nusb?MP-)sitk z+K<-06n}Ee%o!e+Yc(l5cFParEWJazj`f@Q`hhF^Gsm`cuIcdF$TedZ?Y}Yc&Y_>i zzH}O+qq=2a@ZagCh1&$1H7h8P^=5XVr#j>C2oZ`so=(e0H{!8(fkEk|D6vDpPT@t8 zSR{$Sfs1r$!vh14c*OY9&J{X!w{#<$5aY!5H_{;~#Mm7%bz#O5<|b|PME495ts@*e!}0}JHv58wui-_B9`e+d6VU_XwdFyN&{z+&K30Feq$ z^Xdb?!jC*NFJSw#1aV7&qIs6#emRc4AiniS@UH+?0v`jbfYrbnU@hr`yOPh4wV&K*u-pft#Pu0-KTgOJEDYxwqmd zCx>r?e>?D%9KHh^IS$Xq{Z3$)99}@0$rlm68~1yFy>j?ISjjnjKkmN<4#?pLVPoO& zL%9D2I4p-BflVIaVMlR)4ERI11;(T=S*oSYpv$Z)nSwQIE}@9y$of5SLMC+* zr(8Jv6z+cjew4#cBc{~TWjPMJ%{|UG#hhM@I6%N0Q`zyfDa`;sU z4~JjF{V%|EIs6757$IE!EAD>-ewV{hh%#?_RnTDJtRPDtIpJ zg+EI2;yj#Fa~t%1i)1Lx8F+W@Mm`+u!_<_dS$!3}l_AX+aI1(-y!hiI{_m^$A9@TF5(tmLmCz6!L3`K!^IyT6?^#;zxZDfzKRtqlI9{3m2=&R z1TYxP{sk1k(L%UYz^G(Pkhm3fN8C4@1|0nWw`a-R5?lNv*BA6*a%b|tuB9!FGU&>UebjN}ZFbf9k) z`g)~-tf(Dpx5#vM;qi@dK@x5KQ%7KS(Fu%A$esuj7c$ zmvp;yEvj+&JS_}*PRVtL(focoTJyL&jTw82>KVVF7T2cG&pU?F&E4NndK(`~?0lT6 zo;ykX+n=Lz@6V!d>oumvldjRl{?WAeKnwD|RFy7_K1kK_W9d$v6;%DgAZlKz6^*Z$ zMB^hAbnop!w07NCs{6~oD56IwsZze9RcBApC)%!f6X7tGZoG`Xo4=8~KKd68&KgTg zca0}qhspGoBbz>*Hju0*x0C-zdb+#gAWeVcCNnskSbhpr{R$Sd^pdrV7TJ)ydJhsbvLcdFFs9{qYd zmo{82pnVS;(`?T?+Bv)vHTT&-%5HaPa>WI-T0N4QZ(2y*XYHbqEdr=af|=|qW>VVK z*C^=VyOdM42WfIH(%th@=vv-fy7==1njbWmCjXX(2X1X>>(g=+@!m#CS(Z-2?Okbl zVhdVWWixHN;zQGe8qfo0I|}ryO=Zg{sHb--HT%6kbze1;oLAjw`-%GWVDv|1iLlec zsyFHFypL$(JNM~WTyHv3`d_4;*OKn_97CV!Q|W9cEpQbHd;YHP?R^C=az zh-g8BqB1CE_;KnMZy}}6PHJ+`M3s}jr$(hdphS;Y+SvXyUC-P@Z$7F`s-RL`WOQp|znw4&`d^z+AUX!Wc-I@>jsYUs~V=CqrXI<*fyIo*~% zS-hIgR|$e9x0uR2{*esP$@H7&7vyIQq<(#OQ1|B{H0;rrl=0OaYCQWqt^*wQ;lQ^L`%W z=f9D9=8mBsORb>HRpn^pfW=g`ViP*^g+Kjq1*3z z3Ou-(cBDV0WweAm(=XG&vx~^r+MSXreoJ2to&YsBlG6HKp!t0i6r0eN>VE$PwY)9i-=d#NO`^(5 z1HG%6PH%p7j(&XFgwh&(P9vwZBF{U|=*t}+QtGf?)T7Bt>a}|y`9Iu7CkM`>yZh!) z+34w{4*7_d_0v-2&g&^Rcn%#>D`@!HN%Zx(&uPcddw3jOffS|EXxh3p^jZE<>YWfl zbsv|bIrait>eZg|yR;^+Gb8Cjw?h=;_XnLgu%E8o(a;nl+_Awx^wZofyCS$kmO9AEWX+x)0_N9$0H_?$p<*4Emf3o&#Ma}w7q4|d|(FygJ zls04)b!xJJDrgVUQ)LhO>F#5CySHhxSue?LaeTYpUf?Q|6E8%DK$ z*iUafDNT=i45NVBrzmdY1d5qIjpFMaq9zGvD1Yw>Z0Fvknzqeknq#1b1BX)QKEKo0 z3gzkUrV8}r;5}-!%^&!kt|cC#vqOeb%G>YLtd=+F>uQ@x*Z+O`soys0J$^5p!ml)( z9Uejcwa?P0)fba*vv3-4=Oq0wVjg`MpHICe{Xu=bp3s$?PiRWLHWa+J9;M7aLkZVb z(YS`ebl~dy)Vu65n%{CgeSESUnLH!N_}MKQJ9!07j+#r4j-rlyH9uHJyx?DYqoh0E;*IHkm~2x{s$R zmwu)zA0DU3$6e@o-(RS9`2)0Pz+05}M^pN4=N>A*=Lnr1_z892Gl?dKCXw%?_S7sV zk5sUXHi;TZxy@=)=#Gjsx#3L8?l6T`?!HV{PLHJBA-kyI-Rtxq1u`&e2N{<(rH-@L z)AmtHTGsmvH9D&&(@$sVy}TN<(r*r>9&SuNzip(jg=&hKcYti;^fU%PEmr=^7PR8t z+f=#lRr0;6o4cpEvdU7{`6a%8^!th+uEFGs%o>O#r?E6SO2lEeec7l4FJ1_iU z2e?CfAIfge_v35bY6rKAy1|HGzOOg#QX9Bb=Z>j$u>QABKbDW|JY?R;&Oes_y0fY6 znxItQdM!7WuiP@#cS+0Bhy!+9K3KI2kk9#WBj2INmE(0;&OZfY*Qq0B=K^0s#PX#Vyeh2nF~cS|rd5hyw-yI=~2|0BL|3 z7!HgD#sgD;slXgyF7N@c6j%YQ1vUVifE~b2U=OelU>kt~_@Cl82W1uKc?QBt;`?KS z7v+5`?u+w(3}ITW1qVB{HXI2us`2WlJsBtK5zg1qFro)=9|9`@ruhi?16Ttv{ZD|$ zz&hXw@EPzF;0+mH-rexD6)v|Y-k*BT;IL)5Uk=U+W(@f{=KPTQeXzYruB}h` z=g&JeVmpcfxQ0SijbPE7q@XTc%Tw;V^I-kD=Lx>W80Ybt2H83M`1$i$J0$BTg6LdD z4;FtyRN)mHPK5eXX!C^laDUiB=S|0Ngd6bs=Q?=2qC&Nrs3_9proMcuk)H!rv_}PSd?x97Snjx)&B0+bb@z zKSd|RMQNjYg~n>)BbYn|Mu3Bv3gvUWoKgIr_#%TEZ{w?r$CPxh80wM#SO2_E{rTU^ z>Ak-%@^6p#zxA&u1@99@{_XYtxBj{E6!@PieSdD0Fz04IYXP-^IzV0EH9!sc0(>n3oqF)U4lteiKm(v5&V5db$?oF$YbU59&?Y?feG zd;@bp14BRq?k~~U+)1uZEZ(6a4NCxo!Il26+Fhj4sT(Az8yM6=bc7VKOo+0WAGPe~ zk?Hbtxi0@-(RZa01d*qRpbGl`o^WX%ex^{KD7^?&+9@D705`O(vbNz5-=rH`C*$RR zXEzkWYVBmCJtQk$YRvweuf3eF1Kf^4C!jOX1<(Lpflwd}=mvxX-2u6r*5Y#nky%ik zUCMHx2okzF3TBnu4P~)2^ATS6R3?u?W04?yR zGEF6ynf*6qsxT37J%$6{uslbBCett823db@0@3cHke;uS`dX&p8aGhB=@q&ug{;C}^ zswC5B2eETec@Y}asxa6!(s}L~0iJp8F|c-v3#?F{?B{T`>@V8(3x?o?&31+IfMPQA zVXkpDz%|YRMgSv$QNUOM00po$r3z!N_1B%uH zZ$ioaX8kYvO;CAJH&?$QxM;t%0iU9O;PM4lD0V3Or0_E()Uy9j7!Y?VlwT==by6*- zBOBN9ZD0m46L<%h1qIZ#HF2J>z2h0cF1KtM~03QG!0{9Hkb56ey{zbrIUSOQo5%^yLa67C7J_c3+tARDZTHq6a+kw-63jaD_J@6T@0oVv^0{+wv z|HaUJMP)_T^ZfHjuIomw53Z8xS{wYj>bf8P&%xst0M~VMaen{HK^Wxf9MIuKf_eNH zWpaNQm=9ds{;vMWFTz^{G~6%2&lZ`tttIjHzcX}D9+xk+Vt-No8I;en@iw{q?Qp*W zb^!UnPGA>M0PF_#0CHak1)A~Iqa1k&jYFlacrD+8Gan_7thNEYo3}oob$84q;yP&JCSL*%$>z)h0Af= zJjLUff99DhI@Uz7*F@1e6~i0>pBlkCD1 zt+VSPm3TIrPSNO`9vS$OUylrY8B&vxl7Y`y#2Ib)Gz&feLcQ=kD0XA;2v-Dz;q#Wl z1F95mOacLX`o?BwB20rxaDL9oxd<7U2Y}m!+n(#rer{h^-*O$ePm<*DlG1ShyYewj zd9aZNehdRakNbp;e0;gmyUJi5TAWgU(RM{LAq$+A%j3({1}?sewiU;_ z>d*bcm+RiuhDFgLJTR%*b_5Q!w z!*Ckbm;Xw?=QM2RyaxB7LV9TCS_fbyz*k=E_`sofd8iwwWgU2(+>k1CI_G;N=ktcY zJK)NXt+<>&%cx6xL4@b?TQUt~Ewr;rCt&#Wi|dR_;aLK_heXon!g1(ApRLoTV36bc z%lhFNCVa=lV021fRK|yCF(>2G9r$_~j@jTFts|r_pvPt)S*FSE%+RH)li50i??S3! z_r(`ld@0V^&WXccMfg8gc0DX40F3FS`#1=e9s>!S^Oeore?M9oCcHN)S z!y>0o#|M30&cNxfA?+D}uQIs*1C8()cmg~Ho&nDRUfl4sTU;~cbZ)pWn$8{f9)KtC z62H9Ja+peDLD;%dL66Jk>sOh!S25b9aL?z9eEvim8bYSIMB-e(-4bn0?nQ+%LWu&( x0A+!4KzTp~Q~)Xh&4B; +const rLottieApiPromise = new Promise((resolve) => { + Module.onRuntimeInitialized = () => { + rLottieApi = { + init: Module.cwrap('lottie_init', '', []), + destroy: Module.cwrap('lottie_destroy', '', ['number']), + resize: Module.cwrap('lottie_resize', '', ['number', 'number', 'number']), + buffer: Module.cwrap('lottie_buffer', 'number', ['number']), + render: Module.cwrap('lottie_render', '', ['number', 'number']), + loadFromData: Module.cwrap('lottie_load_from_data', 'number', ['number', 'number']), + }; + + resolve(); + }; +}); + +const HIGH_PRIORITY_MAX_FPS = 60; +const LOW_PRIORITY_MAX_FPS = 30; + +const renderers = new Map(); + +async function init( + key: string, + animationData: string, + imgSize: number, + isLowPriority: boolean, + onInit: CancellableCallback, +) { + if (!rLottieApi) { + await rLottieApiPromise; + } + + const json = await extractJson(animationData); + const stringOnWasmHeap = allocate(intArrayFromString(json), 'i8', 0); + const handle = rLottieApi.init(); + const framesCount = rLottieApi.loadFromData(handle, stringOnWasmHeap); + rLottieApi.resize(handle, imgSize, imgSize); + + const { reduceFactor, msPerFrame, reducedFramesCount } = calcParams(json, isLowPriority, framesCount); + + renderers.set(key, { imgSize, reduceFactor, handle }); + onInit(reduceFactor, msPerFrame, reducedFramesCount); +} + +async function changeData( + key: string, + animationData: string, + isLowPriority: boolean, + onInit: CancellableCallback, +) { + if (!rLottieApi) { + await rLottieApiPromise; + } + + const json = await extractJson(animationData); + const stringOnWasmHeap = allocate(intArrayFromString(json), 'i8', 0); + const { handle } = renderers.get(key)!; + const framesCount = rLottieApi.loadFromData(handle, stringOnWasmHeap); + + const { reduceFactor, msPerFrame, reducedFramesCount } = calcParams(json, isLowPriority, framesCount); + onInit(reduceFactor, msPerFrame, reducedFramesCount); +} + +async function extractJson(animationData: string) { + const response = await fetch(animationData); + const contentType = response.headers.get('Content-Type'); + + // Support deprecated JSON format cached locally + if (contentType?.startsWith('text/')) { + return response.text(); + } + + const arrayBuffer = await response.arrayBuffer(); + return inflate(arrayBuffer, { to: 'string' }); +} + +function calcParams(json: string, isLowPriority: boolean, framesCount: number) { + const animationData = JSON.parse(json); + const maxFps = isLowPriority ? LOW_PRIORITY_MAX_FPS : HIGH_PRIORITY_MAX_FPS; + const sourceFps = animationData.fr || maxFps; + const reduceFactor = sourceFps % maxFps === 0 ? sourceFps / maxFps : 1; + + return { + reduceFactor, + msPerFrame: 1000 / (sourceFps / reduceFactor), + reducedFramesCount: Math.ceil(framesCount / reduceFactor), + }; +} + +async function renderFrames( + key: string, fromIndex: number, toIndex: number, onProgress: CancellableCallback, +) { + if (!rLottieApi) { + await rLottieApiPromise; + } + + const { imgSize, reduceFactor, handle } = renderers.get(key)!; + + for (let i = fromIndex; i <= toIndex; i++) { + const realIndex = i * reduceFactor; + + rLottieApi.render(handle, realIndex); + const bufferPointer = rLottieApi.buffer(handle); + const data = Module.HEAPU8.subarray(bufferPointer, bufferPointer + (imgSize * imgSize * 4)); + const arrayBuffer = new Uint8ClampedArray(data).buffer; + onProgress(i, arrayBuffer); + } +} + +function destroy(key: string) { + const renderer = renderers.get(key)!; + + rLottieApi.destroy(renderer.handle); + + renderers.delete(key); +} + +createWorkerInterface({ + init, + changeData, + renderFrames, + destroy, +}); diff --git a/src/lib/teact/dom-events.ts b/src/lib/teact/dom-events.ts new file mode 100644 index 00000000..f303fba1 --- /dev/null +++ b/src/lib/teact/dom-events.ts @@ -0,0 +1,188 @@ +import { DEBUG } from '../../config'; + +type Handler = (e: Event) => void; +type DelegationRegistry = Map; + +const NON_BUBBLEABLE_EVENTS = new Set(['scroll', 'mouseenter', 'mouseleave', 'load']); + +const documentEventCounters: Record = {}; +const delegationRegistryByEventType: Record = {}; +const delegatedEventTypesByElement = new Map>(); + +export function addEventListener(element: HTMLElement, propName: string, handler: Handler, asCapture = false) { + const eventType = resolveEventType(propName, element); + if (canUseEventDelegation(eventType, element, asCapture)) { + addDelegatedListener(eventType, element, handler); + } else { + element.addEventListener(eventType, handler, asCapture); + } +} + +export function removeEventListener(element: HTMLElement, propName: string, handler: Handler, asCapture = false) { + const eventType = resolveEventType(propName, element); + if (canUseEventDelegation(eventType, element, asCapture)) { + removeDelegatedListener(eventType, element); + } else { + element.removeEventListener(eventType, handler, asCapture); + } +} + +function resolveEventType(propName: string, element: HTMLElement) { + const eventType = propName + .replace(/^on/, '') + .replace(/Capture$/, '').toLowerCase(); + + if (eventType === 'change' && element.tagName !== 'SELECT') { + // React behavior repeated here. + // https://stackoverflow.com/questions/38256332/in-react-whats-the-difference-between-onchange-and-oninput + return 'input'; + } + + if (eventType === 'doubleclick') { + return 'dblclick'; + } + + // Replace focus/blur by their "bubbleable" versions + if (eventType === 'focus') { + return 'focusin'; + } + + if (eventType === 'blur') { + return 'focusout'; + } + + return eventType; +} + +function canUseEventDelegation(realEventType: string, element: HTMLElement, asCapture: boolean) { + return ( + !asCapture + && !NON_BUBBLEABLE_EVENTS.has(realEventType) + && element.tagName !== 'VIDEO' + && element.tagName !== 'IFRAME' + ); +} + +function addDelegatedListener(eventType: string, element: HTMLElement, handler: Handler) { + if (!documentEventCounters[eventType]) { + documentEventCounters[eventType] = 0; + document.addEventListener(eventType, handleEvent); + } + + resolveDelegationRegistry(eventType).set(element, handler); + resolveDelegatedEventTypes(element).add(eventType); + documentEventCounters[eventType]++; +} + +function removeDelegatedListener(eventType: string, element: HTMLElement) { + documentEventCounters[eventType]--; + if (!documentEventCounters[eventType]) { + // Synchronous deletion on 0 will cause perf degradation in the case of 1 element + // which is not a real case, so it's ok to do it this way + document.removeEventListener(eventType, handleEvent); + } + + delegationRegistryByEventType[eventType].delete(element); + delegatedEventTypesByElement.get(element)!.delete(eventType); +} + +export function removeAllDelegatedListeners(element: HTMLElement) { + const eventTypes = delegatedEventTypesByElement.get(element); + if (!eventTypes) { + return; + } + + eventTypes.forEach((eventType) => removeDelegatedListener(eventType, element)); + delegatedEventTypesByElement.delete(element); +} + +function handleEvent(realEvent: Event) { + const events = delegationRegistryByEventType[realEvent.type]; + + if (events) { + let furtherCallsPrevented = false; + let current: HTMLElement = realEvent.target as HTMLElement; + + const stopPropagation = () => { + furtherCallsPrevented = true; + }; + + const preventDefault = () => { + realEvent.preventDefault(); + }; + + // Proxy is a simplest way to provide an access to the event property + const event = new Proxy(realEvent, { + get(target, p) { + if (p === 'currentTarget') { + return current; + } + if (p === 'stopPropagation' || p === 'stopImmediatePropagation') { + return stopPropagation; + } + if (p === 'preventDefault') { + // "this" is changed to proxy and one can't call methods via it + return preventDefault; + } + return Reflect.get(target, p); + }, + }); + + // This can also be limited by teact root + while (current && current !== document.body) { + const handler = events.get(current); + if (handler) { + handler(event); + if (furtherCallsPrevented) { + return; + } + } + + current = current.parentNode as HTMLElement; + } + } +} + +function resolveDelegationRegistry(eventType: string) { + if (!delegationRegistryByEventType[eventType]) { + delegationRegistryByEventType[eventType] = new Map(); + } + + return delegationRegistryByEventType[eventType]; +} + +function resolveDelegatedEventTypes(element: HTMLElement) { + const existing = delegatedEventTypesByElement.get(element); + if (existing) { + return existing; + } + + const newSet = new Set(); + delegatedEventTypesByElement.set(element, newSet); + + return newSet; +} + +if (DEBUG) { + document.addEventListener('dblclick', () => { + const documentListenersCount = Object.keys(documentEventCounters).length; + const delegatedHandlersCount1 = Object.values(documentEventCounters) + .reduce((acc, counter) => acc + counter, 0); + const delegationRegistriesCount = Object.keys(delegationRegistryByEventType).length; + const delegatedHandlersCount2 = Object.values(delegationRegistryByEventType) + .reduce((acc, delegationRegistry) => acc + delegationRegistry.size, 0); + const delegationElementsCount = delegatedEventTypesByElement.size; + const delegatedEventTypesCount = Array.from(delegatedEventTypesByElement.values()) + .reduce((acc, eventTypes) => acc + eventTypes.size, 0); + + // eslint-disable-next-line no-console + console.warn('DELEGATED EVENTS STATS', { + delegatedHandlersCount1, + delegatedHandlersCount2, + delegatedEventTypesCount, + delegationRegistriesCount, + delegationElementsCount, + documentListenersCount, + }); + }); +} diff --git a/src/lib/teact/teact-dom.ts b/src/lib/teact/teact-dom.ts new file mode 100644 index 00000000..e5d80a13 --- /dev/null +++ b/src/lib/teact/teact-dom.ts @@ -0,0 +1,661 @@ +import type { + VirtualElement, + VirtualElementComponent, + VirtualElementTag, + VirtualElementParent, + VirtualElementChildren, + VirtualElementReal, +} from './teact'; +import { + hasElementChanged, + isComponentElement, + isTagElement, + isParentElement, + isTextElement, + isEmptyElement, + mountComponent, + renderComponent, + unmountComponent, +} from './teact'; +import generateIdFor from '../../util/generateIdFor'; +import { DEBUG } from '../../config'; +import { addEventListener, removeAllDelegatedListeners, removeEventListener } from './dom-events'; +import { unique } from '../../util/iteratees'; + +type VirtualDomHead = { + children: [VirtualElement] | []; +}; + +const FILTERED_ATTRIBUTES = new Set(['key', 'ref', 'teactFastList', 'teactOrderKey']); +const HTML_ATTRIBUTES = new Set(['dir', 'role', 'form']); +const CONTROLLABLE_TAGS = ['INPUT', 'TEXTAREA', 'SELECT']; +const MAPPED_ATTRIBUTES: { [k: string]: string } = { + autoPlay: 'autoplay', + autoComplete: 'autocomplete', +}; +const INDEX_KEY_PREFIX = '__indexKey#'; + +const headsByElement: Record = {}; +// eslint-disable-next-line @typescript-eslint/naming-convention +let DEBUG_virtualTreeSize = 1; + +function render($element: VirtualElement | undefined, parentEl: HTMLElement) { + let headId = parentEl.getAttribute('data-teact-head-id'); + if (!headId) { + headId = generateIdFor(headsByElement); + headsByElement[headId] = { children: [] }; + parentEl.setAttribute('data-teact-head-id', headId); + } + + const $head = headsByElement[headId]; + const $newElement = renderWithVirtual(parentEl, $head.children[0], $element, $head, 0); + $head.children = $newElement ? [$newElement] : []; + + if (process.env.APP_ENV === 'perf') { + DEBUG_virtualTreeSize = 0; + DEBUG_addToVirtualTreeSize($head); + + return DEBUG_virtualTreeSize; + } + + return undefined; +} + +function renderWithVirtual( + parentEl: HTMLElement, + $current: VirtualElement | undefined, + $new: T, + $parent: VirtualElementParent | VirtualDomHead, + index: number, + options: { + skipComponentUpdate?: boolean; + nextSibling?: ChildNode; + fragment?: DocumentFragment; + } = {}, +): T { + const { skipComponentUpdate, fragment } = options; + let { nextSibling } = options; + + const isCurrentComponent = $current && isComponentElement($current); + const isNewComponent = $new && isComponentElement($new); + const $newAsReal = $new as VirtualElementReal; + + if ( + !skipComponentUpdate + && isCurrentComponent && isNewComponent + && !hasElementChanged($current!, $new!) + ) { + $new = updateComponent($current, $new as VirtualElementComponent) as typeof $new; + } + + // Parent element may have changed, so we need to update the listener closure. + if (!skipComponentUpdate && isNewComponent && ($new as VirtualElementComponent).componentInstance.isMounted) { + setupComponentUpdateListener(parentEl, $new as VirtualElementComponent, $parent, index); + } + + if ($current === $new) { + return $new; + } + + if (DEBUG && $new) { + const newTarget = 'target' in $new && $new.target; + if (newTarget && (!$current || ('target' in $current && newTarget !== $current.target))) { + throw new Error('[Teact] Cached virtual element was moved within tree'); + } + } + + if (!$current && $new) { + if (isNewComponent) { + $new = initComponent(parentEl, $new as VirtualElementComponent, $parent, index) as typeof $new; + mountComponentChildren(parentEl, $new as VirtualElementComponent, { nextSibling, fragment }); + } else { + const node = createNode($newAsReal); + $newAsReal.target = node; + insertBefore(fragment || parentEl, node, nextSibling); + } + } else if ($current && !$new) { + remount(parentEl, $current, undefined); + } else if ($current && $new) { + if (hasElementChanged($current, $new)) { + if (!nextSibling) { + nextSibling = getNextSibling($current); + } + + if (isNewComponent) { + $new = initComponent(parentEl, $new as VirtualElementComponent, $parent, index) as typeof $new; + remount(parentEl, $current, undefined); + mountComponentChildren(parentEl, $new as VirtualElementComponent, { nextSibling, fragment }); + } else { + const node = createNode($newAsReal); + $newAsReal.target = node; + remount(parentEl, $current, node, nextSibling); + } + } else { + const isComponent = isCurrentComponent && isNewComponent; + if (isComponent) { + ($new as VirtualElementComponent).children = renderChildren( + $current, + $new as VirtualElementComponent, + parentEl, + nextSibling, + ); + } else { + const $currentAsReal = $current as VirtualElementReal; + const currentTarget = $currentAsReal.target!; + + $newAsReal.target = currentTarget; + $currentAsReal.target = undefined; // Help GC + + const isTag = isTagElement($current); + if (isTag) { + const $newAsTag = $new as VirtualElementTag; + + $newAsTag.props.ref = $current.props.ref; + + if (nextSibling) { + insertBefore(parentEl, currentTarget, nextSibling); + } + + updateAttributes($current, $newAsTag, currentTarget as HTMLElement); + + $newAsTag.children = renderChildren( + $current, + $newAsTag, + currentTarget as HTMLElement, + ); + } + } + } + } + + return $new; +} + +function initComponent( + parentEl: HTMLElement, + $element: VirtualElementComponent, + $parent: VirtualElementParent | VirtualDomHead, + index: number, +) { + const { componentInstance } = $element; + + if (!componentInstance.isMounted) { + $element = mountComponent(componentInstance); + setupComponentUpdateListener(parentEl, $element, $parent, index); + + const $firstChild = $element.children[0]; + if (isComponentElement($firstChild)) { + $element.children = [initComponent(parentEl, $firstChild, $element, 0)]; + } + + componentInstance.isMounted = true; + } + + return $element; +} + +function updateComponent($current: VirtualElementComponent, $new: VirtualElementComponent) { + $current.componentInstance.props = $new.componentInstance.props; + + return renderComponent($current.componentInstance); +} + +function setupComponentUpdateListener( + parentEl: HTMLElement, + $element: VirtualElementComponent, + $parent: VirtualElementParent | VirtualDomHead, + index: number, +) { + const { componentInstance } = $element; + + componentInstance.onUpdate = () => { + $parent.children[index] = renderWithVirtual( + parentEl, + $parent.children[index], + componentInstance.$element, + $parent, + index, + { skipComponentUpdate: true }, + ); + }; +} + +function mountComponentChildren(parentEl: HTMLElement, $element: VirtualElementComponent, options: { + nextSibling?: ChildNode; + fragment?: DocumentFragment; +}) { + $element.children = $element.children.map(($child, i) => { + return renderWithVirtual(parentEl, undefined, $child, $element, i, options); + }); +} + +function unmountComponentChildren(parentEl: HTMLElement, $element: VirtualElementComponent) { + $element.children.forEach(($child) => { + renderWithVirtual(parentEl, $child, undefined, $element, -1); + }); +} + +function createNode($element: VirtualElementReal): Node { + if (isEmptyElement($element)) { + return document.createTextNode(''); + } + + if (isTextElement($element)) { + return document.createTextNode($element.value); + } + + const { tag, props, children = [] } = $element; + const element = document.createElement(tag); + + if (typeof props.ref === 'object') { + props.ref.current = element; + } + if (typeof props.ref === 'function') { + props.ref(element); + } + + processControlled(tag, props); + + Object.entries(props).forEach(([key, value]) => { + if (props[key] !== undefined) { + setAttribute(element, key, value); + } + }); + + processUncontrolledOnMount(element, props); + + $element.children = children.map(($child, i) => ( + renderWithVirtual(element, undefined, $child, $element, i) + )); + + return element; +} + +function remount( + parentEl: HTMLElement, + $current: VirtualElement, + node: Node | undefined, + componentNextSibling?: ChildNode, +) { + if (isComponentElement($current)) { + unmountComponent($current.componentInstance); + unmountComponentChildren(parentEl, $current); + + if (node) { + insertBefore(parentEl, node, componentNextSibling); + } + } else { + if (node) { + parentEl.replaceChild(node, $current.target!); + } else { + parentEl.removeChild($current.target!); + } + + unmountRealTree($current); + } +} + +export function unmountRealTree($element: VirtualElement) { + if (isComponentElement($element)) { + unmountComponent($element.componentInstance); + } else { + if (isTagElement($element)) { + if ($element.target) { + removeAllDelegatedListeners($element.target as HTMLElement); + } + + if ($element.props.ref) { + $element.props.ref.current = undefined; // Help GC + } + } + + if ($element.target) { + $element.target = undefined; // Help GC + } + + if (!isParentElement($element)) { + return; + } + } + + $element.children.forEach(unmountRealTree); +} + +function insertBefore(parentEl: HTMLElement | DocumentFragment, node: Node, nextSibling?: ChildNode) { + if (nextSibling) { + parentEl.insertBefore(node, nextSibling); + } else { + parentEl.appendChild(node); + } +} + +function getNextSibling($current: VirtualElement): ChildNode | undefined { + if (isComponentElement($current)) { + const lastChild = $current.children[$current.children.length - 1]; + return getNextSibling(lastChild); + } + + const target = $current.target!; + const { nextSibling } = target; + return nextSibling || undefined; +} + +function renderChildren( + $current: VirtualElementParent, $new: VirtualElementParent, currentEl: HTMLElement, nextSibling?: ChildNode, +) { + if (DEBUG) { + DEBUG_checkKeyUniqueness($new.children); + } + + if ($new.props.teactFastList) { + return renderFastListChildren($current, $new, currentEl); + } + + const currentChildrenLength = $current.children.length; + const newChildrenLength = $new.children.length; + const maxLength = Math.max(currentChildrenLength, newChildrenLength); + const newChildren = []; + + const fragment = newChildrenLength > currentChildrenLength ? document.createDocumentFragment() : undefined; + const lastCurrentChild = $current.children[currentChildrenLength - 1]; + const fragmentNextSibling = nextSibling || ( + newChildrenLength > currentChildrenLength && lastCurrentChild ? getNextSibling(lastCurrentChild) : undefined + ); + + for (let i = 0; i < maxLength; i++) { + const $newChild = renderWithVirtual( + currentEl, + $current.children[i], + $new.children[i], + $new, + i, + i >= currentChildrenLength ? { fragment } : { nextSibling }, + ); + + if ($newChild) { + newChildren.push($newChild); + } + } + + if (fragment) { + insertBefore(currentEl, fragment, fragmentNextSibling); + } + + return newChildren; +} + +// This function allows to prepend/append a bunch of new DOM nodes to the top/bottom of preserved ones. +// It also allows to selectively move particular preserved nodes within their DOM list. +function renderFastListChildren($current: VirtualElementParent, $new: VirtualElementParent, currentEl: HTMLElement) { + const newKeys = new Set( + $new.children.map(($newChild) => { + const key = 'props' in $newChild && $newChild.props.key; + + // eslint-disable-next-line no-null/no-null + if (DEBUG && isParentElement($newChild) && (key === undefined || key === null)) { + // eslint-disable-next-line no-console + console.warn('Missing `key` in `teactFastList`'); + } + + return key; + }), + ); + + // Build a collection of old children that also remain in the new list + let currentRemainingIndex = 0; + const remainingByKey = $current.children + .reduce((acc, $currentChild, i) => { + let key = 'props' in $currentChild ? $currentChild.props.key : undefined; + // eslint-disable-next-line no-null/no-null + const isKeyPresent = key !== undefined && key !== null; + + // First we process removed children + if (isKeyPresent && !newKeys.has(key)) { + renderWithVirtual(currentEl, $currentChild, undefined, $new, -1); + + return acc; + } else if (!isKeyPresent) { + const $newChild = $new.children[i]; + const newChildKey = ($newChild && 'props' in $newChild) ? $newChild.props.key : undefined; + // If a non-key element remains at the same index we preserve it with a virtual `key` + if ($newChild && !newChildKey) { + key = `${INDEX_KEY_PREFIX}${i}`; + // Otherwise, we just remove it + } else { + renderWithVirtual(currentEl, $currentChild, undefined, $new, -1); + + return acc; + } + } + + // Then we build up info about remaining children + acc[key] = { + $element: $currentChild, + index: currentRemainingIndex++, + orderKey: 'props' in $currentChild ? $currentChild.props.teactOrderKey : undefined, + }; + return acc; + }, {} as Record); + + let newChildren: VirtualElement[] = []; + + let fragmentElements: VirtualElement[] | undefined; + let fragmentIndex: number | undefined; + + let currentPreservedIndex = 0; + + $new.children.forEach(($newChild, i) => { + const key = 'props' in $newChild ? $newChild.props.key : `${INDEX_KEY_PREFIX}${i}`; + const currentChildInfo = remainingByKey[key]; + + if (!currentChildInfo) { + if (!fragmentElements) { + fragmentElements = []; + fragmentIndex = i; + } + + fragmentElements.push($newChild); + return; + } + + // This prepends new children to the top + if (fragmentElements) { + newChildren = newChildren.concat(renderFragment(fragmentElements, fragmentIndex!, currentEl, $new)); + fragmentElements = undefined; + fragmentIndex = undefined; + } + + // Now we check if a preserved node was moved within preserved list + const newOrderKey = 'props' in $newChild ? $newChild.props.teactOrderKey : undefined; + // That is indicated by a changed `teactOrderKey` value + const shouldMoveNode = ( + currentChildInfo.index !== currentPreservedIndex && currentChildInfo.orderKey !== newOrderKey + ); + const isMovingDown = shouldMoveNode && currentPreservedIndex > currentChildInfo.index; + + if (!shouldMoveNode || isMovingDown) { + currentPreservedIndex++; + } + + newChildren.push( + renderWithVirtual(currentEl, currentChildInfo.$element, $newChild, $new, i, { + // `+ 1` is needed because before moving down the node still takes place above + nextSibling: shouldMoveNode ? currentEl.childNodes[isMovingDown ? i + 1 : i] : undefined, + }), + ); + }); + + // This appends new children to the bottom + if (fragmentElements) { + newChildren = newChildren.concat(renderFragment(fragmentElements, fragmentIndex!, currentEl, $new)); + } + + return newChildren; +} + +function renderFragment( + elements: VirtualElement[], fragmentIndex: number, parentEl: HTMLElement, $parent: VirtualElementParent, +) { + const nextSibling = parentEl.childNodes[fragmentIndex]; + + if (elements.length === 1) { + return [renderWithVirtual(parentEl, undefined, elements[0], $parent, fragmentIndex, { nextSibling })]; + } + + const fragment = document.createDocumentFragment(); + const newChildren = elements.map(($element, i) => ( + renderWithVirtual(parentEl, undefined, $element, $parent, fragmentIndex + i, { fragment }) + )); + + insertBefore(parentEl, fragment, nextSibling); + + return newChildren; +} + +function processControlled(tag: string, props: AnyLiteral) { + // TODO Remove after tests + if (!props.teactExperimentControlled) { + return; + } + + const isValueControlled = props.value !== undefined; + const isCheckedControlled = props.checked !== undefined; + const isControlled = (isValueControlled || isCheckedControlled) && CONTROLLABLE_TAGS.includes(tag.toUpperCase()); + if (!isControlled) { + return; + } + + const { + value, checked, onInput, onChange, + } = props; + + props.onChange = undefined; + props.onInput = (e: React.ChangeEvent) => { + onInput?.(e); + onChange?.(e); + + if (value !== undefined) { + e.currentTarget.value = value; + } + + if (checked !== undefined) { + e.currentTarget.checked = checked; + } + }; +} + +function processUncontrolledOnMount(element: HTMLElement, props: AnyLiteral) { + if (!CONTROLLABLE_TAGS.includes(element.tagName)) { + return; + } + + if (props.defaultValue) { + setAttribute(element, 'value', props.defaultValue); + } + + if (props.defaultChecked) { + setAttribute(element, 'checked', props.defaultChecked); + } +} + +function updateAttributes($current: VirtualElementParent, $new: VirtualElementParent, element: HTMLElement) { + processControlled(element.tagName, $new.props); + + const currentEntries = Object.entries($current.props); + const newEntries = Object.entries($new.props); + + currentEntries.forEach(([key, currentValue]) => { + const newValue = $new.props[key]; + + if ( + currentValue !== undefined + && ( + newValue === undefined + || (currentValue !== newValue && key.startsWith('on')) + ) + ) { + removeAttribute(element, key, currentValue); + } + }); + + newEntries.forEach(([key, newValue]) => { + const currentValue = $current.props[key]; + + if (newValue !== undefined && newValue !== currentValue) { + setAttribute(element, key, newValue); + } + }); +} + +function setAttribute(element: HTMLElement, key: string, value: any) { + // An optimization attempt + if (key === 'className') { + element.className = value; + // An optimization attempt + } else if (key === 'value') { + if ((element as HTMLInputElement).value !== value) { + (element as HTMLInputElement).value = value; + } + } else if (key === 'style') { + element.style.cssText = value; + } else if (key === 'dangerouslySetInnerHTML') { + // eslint-disable-next-line no-underscore-dangle + element.innerHTML = value.__html; + } else if (key.startsWith('on')) { + addEventListener(element, key, value, key.endsWith('Capture')); + } else if (key.startsWith('data-') || key.startsWith('aria-') || HTML_ATTRIBUTES.has(key)) { + element.setAttribute(key, value); + } else if (!FILTERED_ATTRIBUTES.has(key)) { + (element as any)[MAPPED_ATTRIBUTES[key] || key] = value; + } +} + +function removeAttribute(element: HTMLElement, key: string, value: any) { + if (key === 'className') { + element.className = ''; + } else if (key === 'value') { + (element as HTMLInputElement).value = ''; + } else if (key === 'style') { + element.style.cssText = ''; + } else if (key === 'dangerouslySetInnerHTML') { + element.innerHTML = ''; + } else if (key.startsWith('on')) { + removeEventListener(element, key, value, key.endsWith('Capture')); + } else if (key.startsWith('data-') || key.startsWith('aria-') || HTML_ATTRIBUTES.has(key)) { + element.removeAttribute(key); + } else if (!FILTERED_ATTRIBUTES.has(key)) { + delete (element as any)[MAPPED_ATTRIBUTES[key] || key]; + } +} + +// eslint-disable-next-line @typescript-eslint/naming-convention +function DEBUG_addToVirtualTreeSize($current: VirtualElementParent | VirtualDomHead) { + DEBUG_virtualTreeSize += $current.children.length; + + $current.children.forEach(($child) => { + if (isParentElement($child)) { + DEBUG_addToVirtualTreeSize($child); + } + }); +} + +// eslint-disable-next-line @typescript-eslint/naming-convention +function DEBUG_checkKeyUniqueness(children: VirtualElementChildren) { + const firstChild = children[0]; + if (firstChild && 'props' in firstChild && firstChild.props.key !== undefined) { + const keys = children.reduce((acc: any[], child) => { + if ('props' in child && child.props.key) { + acc.push(child.props.key); + } + + return acc; + }, []); + + if (keys.length !== unique(keys).length) { + throw new Error('[Teact] Children keys are not unique'); + } + } +} + +const TeactDOM = { render }; +export default TeactDOM; diff --git a/src/lib/teact/teact.ts b/src/lib/teact/teact.ts new file mode 100644 index 00000000..61ffe7f7 --- /dev/null +++ b/src/lib/teact/teact.ts @@ -0,0 +1,683 @@ +import type { ReactElement } from 'react'; +import { DEBUG, DEBUG_MORE } from '../../config'; +import { + fastRaf, fastRafPrimary, onTickEnd, onTickEndPrimary, throttleWithPrimaryRaf, throttleWithRaf, +} from '../../util/schedulers'; +import { orderBy } from '../../util/iteratees'; +import { getUnequalProps } from '../../util/arePropsShallowEqual'; +import { handleError } from '../../util/handleError'; + +export type Props = AnyLiteral; +export type FC

    = (props: P) => any; +// eslint-disable-next-line @typescript-eslint/naming-convention +export type FC_withDebug = FC & { + DEBUG_contentComponentName?: string; +}; + +export enum VirtualElementTypesEnum { + Empty, + Text, + Tag, + Component, +} + +interface VirtualElementEmpty { + type: VirtualElementTypesEnum.Empty; + target?: Node; +} + +interface VirtualElementText { + type: VirtualElementTypesEnum.Text; + target?: Node; + value: string; +} + +export interface VirtualElementTag { + type: VirtualElementTypesEnum.Tag; + target?: Node; + tag: string; + props: Props; + children: VirtualElementChildren; +} + +export interface VirtualElementComponent { + type: VirtualElementTypesEnum.Component; + componentInstance: ComponentInstance; + props: Props; + children: VirtualElementChildren; +} + +export type StateHookSetter = (newValue: ((current: T) => T) | T) => void; + +interface ComponentInstance { + $element: VirtualElementComponent; + Component: FC; + name: string; + props: Props; + renderedValue?: any; + isMounted: boolean; + hooks: { + state: { + cursor: number; + byCursor: { + value: any; + nextValue: any; + setter: StateHookSetter; + }[]; + }; + effects: { + cursor: number; + byCursor: { + effect: () => void; + dependencies?: readonly any[]; + cleanup?: Function; + }[]; + }; + memos: { + cursor: number; + byCursor: { + value: any; + dependencies: any[]; + }[]; + }; + refs: { + cursor: number; + byCursor: { + current: any; + }[]; + }; + }; + prepareForFrame?: () => void; + forceUpdate?: () => void; + onUpdate?: () => void; +} + +export type VirtualElement = + VirtualElementEmpty + | VirtualElementText + | VirtualElementTag + | VirtualElementComponent; +export type VirtualElementParent = + VirtualElementTag + | VirtualElementComponent; +export type VirtualElementChildren = VirtualElement[]; +export type VirtualElementReal = Exclude; + +// Compatibility with JSX types +export type TeactNode = + ReactElement + | string + | number + | boolean; + +const Fragment = Symbol('Fragment'); + +const DEBUG_RENDER_THRESHOLD = 7; +const DEBUG_EFFECT_THRESHOLD = 7; +const DEBUG_SILENT_RENDERS_FOR = new Set(['TeactMemoWrapper', 'TeactNContainer', 'Button', 'ListItem', 'MenuItem']); + +let renderingInstance: ComponentInstance; + +export function isEmptyElement($element: VirtualElement): $element is VirtualElementEmpty { + return $element.type === VirtualElementTypesEnum.Empty; +} + +export function isTextElement($element: VirtualElement): $element is VirtualElementText { + return $element.type === VirtualElementTypesEnum.Text; +} + +export function isTagElement($element: VirtualElement): $element is VirtualElementTag { + return $element.type === VirtualElementTypesEnum.Tag; +} + +export function isComponentElement($element: VirtualElement): $element is VirtualElementComponent { + return $element.type === VirtualElementTypesEnum.Component; +} + +export function isParentElement($element: VirtualElement): $element is VirtualElementParent { + return isTagElement($element) || isComponentElement($element); +} + +function createElement( + source: string | FC | typeof Fragment, + props: Props, + ...children: any[] +): VirtualElementParent | VirtualElementChildren { + if (!props) { + props = {}; + } + + children = children.flat(); + + if (source === Fragment) { + return children; + } else if (typeof source === 'function') { + return createComponentInstance(source, props, children); + } else { + return buildTagElement(source, props, children); + } +} + +function createComponentInstance(Component: FC, props: Props, children: any[]): VirtualElementComponent { + let parsedChildren: any | any[] | undefined; + if (children.length === 0) { + parsedChildren = undefined; + } else if (children.length === 1) { + [parsedChildren] = children; + } else { + parsedChildren = children; + } + + const componentInstance: ComponentInstance = { + $element: {} as VirtualElementComponent, + Component, + name: Component.name, + props: { + ...props, + ...(parsedChildren && { children: parsedChildren }), + }, + isMounted: false, + hooks: { + state: { + cursor: 0, + byCursor: [], + }, + effects: { + cursor: 0, + byCursor: [], + }, + memos: { + cursor: 0, + byCursor: [], + }, + refs: { + cursor: 0, + byCursor: [], + }, + }, + }; + + componentInstance.$element = buildComponentElement(componentInstance); + + return componentInstance.$element; +} + +function buildComponentElement( + componentInstance: ComponentInstance, + children: VirtualElementChildren = [], +): VirtualElementComponent { + const builtChildren = dropEmptyTail(children).map(buildChildElement); + + return { + type: VirtualElementTypesEnum.Component, + componentInstance, + props: componentInstance.props, + children: builtChildren.length ? builtChildren : [buildEmptyElement()], + }; +} + +function buildTagElement(tag: string, props: Props, children: any[]): VirtualElementTag { + return { + type: VirtualElementTypesEnum.Tag, + tag, + props, + children: dropEmptyTail(children).map(buildChildElement), + }; +} + +// We only need placeholders in the middle of collection (to ensure other elements order). +function dropEmptyTail(children: any[]) { + let i = children.length - 1; + + for (; i >= 0; i--) { + if (!isEmptyPlaceholder(children[i])) { + break; + } + } + + return i + 1 < children.length ? children.slice(0, i + 1) : children; +} + +function isEmptyPlaceholder(child: any) { + // eslint-disable-next-line no-null/no-null + return child === false || child === null || child === undefined; +} + +function buildChildElement(child: any): VirtualElement { + if (isEmptyPlaceholder(child)) { + return buildEmptyElement(); + } else if (isParentElement(child)) { + return child; + } else { + return buildTextElement(child); + } +} + +function buildTextElement(value: any): VirtualElementText { + return { + type: VirtualElementTypesEnum.Text, + value: String(value), + }; +} + +function buildEmptyElement(): VirtualElementEmpty { + return { type: VirtualElementTypesEnum.Empty }; +} + +// eslint-disable-next-line @typescript-eslint/naming-convention +const DEBUG_components: AnyLiteral = {}; + +document.addEventListener('dblclick', () => { + // eslint-disable-next-line no-console + console.warn('COMPONENTS', orderBy(Object.values(DEBUG_components), 'renderCount', 'desc')); +}); + +export function renderComponent(componentInstance: ComponentInstance) { + renderingInstance = componentInstance; + componentInstance.hooks.state.cursor = 0; + componentInstance.hooks.effects.cursor = 0; + componentInstance.hooks.memos.cursor = 0; + componentInstance.hooks.refs.cursor = 0; + + const { Component, props } = componentInstance; + let newRenderedValue; + + try { + // eslint-disable-next-line @typescript-eslint/naming-convention + let DEBUG_startAt: number | undefined; + if (DEBUG) { + const componentName = componentInstance.name; + if (!DEBUG_components[componentName]) { + DEBUG_components[componentName] = { + componentName, + renderCount: 0, + renderTimes: [], + }; + } + + if (DEBUG_MORE) { + if (!DEBUG_SILENT_RENDERS_FOR.has(componentName)) { + // eslint-disable-next-line no-console + console.log(`[Teact] Render ${componentName}`); + } + } + + DEBUG_startAt = performance.now(); + } + + newRenderedValue = Component(props); + + if (DEBUG) { + const duration = performance.now() - DEBUG_startAt!; + const componentName = componentInstance.name; + if (duration > DEBUG_RENDER_THRESHOLD) { + // eslint-disable-next-line no-console + console.warn(`[Teact] Slow component render: ${componentName}, ${Math.round(duration)} ms`); + } + DEBUG_components[componentName].renderTimes.push(duration); + DEBUG_components[componentName].renderCount++; + } + } catch (err: any) { + handleError(err); + + newRenderedValue = componentInstance.renderedValue; + } + + if (componentInstance.isMounted && newRenderedValue === componentInstance.renderedValue) { + return componentInstance.$element; + } + + componentInstance.renderedValue = newRenderedValue; + + const children = Array.isArray(newRenderedValue) ? newRenderedValue : [newRenderedValue]; + componentInstance.$element = buildComponentElement(componentInstance, children); + + return componentInstance.$element; +} + +export function hasElementChanged($old: VirtualElement, $new: VirtualElement) { + if (typeof $old !== typeof $new) { + return true; + } else if ($old.type !== $new.type) { + return true; + } else if (isTextElement($old) && isTextElement($new)) { + return $old.value !== $new.value; + } else if (isTagElement($old) && isTagElement($new)) { + return ($old.tag !== $new.tag) || ($old.props.key !== $new.props.key); + } else if (isComponentElement($old) && isComponentElement($new)) { + return ( + $old.componentInstance.Component !== $new.componentInstance.Component + ) || ( + $old.props.key !== $new.props.key + ); + } + + return false; +} + +export function mountComponent(componentInstance: ComponentInstance) { + renderComponent(componentInstance); + componentInstance.isMounted = true; + return componentInstance.$element; +} + +export function unmountComponent(componentInstance: ComponentInstance) { + if (!componentInstance.isMounted) { + return; + } + + componentInstance.hooks.effects.byCursor.forEach((effect) => { + if (effect.cleanup) { + try { + effect.cleanup(); + } catch (err: any) { + handleError(err); + } finally { + effect.cleanup = undefined; + } + } + }); + + componentInstance.isMounted = false; + + helpGc(componentInstance); +} + +// We need to remove all references to DOM objects. We also clean all other references, just in case +function helpGc(componentInstance: ComponentInstance) { + componentInstance.hooks.effects.byCursor.forEach((hook) => { + hook.cleanup = undefined; + hook.effect = undefined as any; + hook.dependencies = undefined; + }); + + componentInstance.hooks.state.byCursor.forEach((hook) => { + hook.value = undefined; + hook.nextValue = undefined; + hook.setter = undefined as any; + }); + + componentInstance.hooks.memos.byCursor.forEach((hook) => { + hook.value = undefined as any; + hook.dependencies = undefined as any; + }); + + componentInstance.hooks.refs.byCursor.forEach((hook) => { + hook.current = undefined as any; + }); + + componentInstance.hooks = undefined as any; + componentInstance.$element = undefined as any; + componentInstance.renderedValue = undefined; + componentInstance.Component = undefined as any; + componentInstance.props = undefined as any; + componentInstance.forceUpdate = undefined; + componentInstance.onUpdate = undefined; +} + +function prepareComponentForFrame(componentInstance: ComponentInstance) { + if (!componentInstance.isMounted) { + return; + } + + componentInstance.hooks.state.byCursor.forEach((hook) => { + hook.value = hook.nextValue; + }); + + componentInstance.prepareForFrame = throttleWithPrimaryRaf(() => prepareComponentForFrame(componentInstance)); + componentInstance.forceUpdate = throttleWithRaf(() => forceUpdateComponent(componentInstance)); +} + +function forceUpdateComponent(componentInstance: ComponentInstance) { + if (!componentInstance.isMounted || !componentInstance.onUpdate) { + return; + } + + const currentElement = componentInstance.$element; + + renderComponent(componentInstance); + + if (componentInstance.$element !== currentElement) { + componentInstance.onUpdate(); + } +} + +export function useState(initial?: T, debugKey?: string): [T, StateHookSetter] { + const { cursor, byCursor } = renderingInstance.hooks.state; + + if (byCursor[cursor] === undefined) { + byCursor[cursor] = { + value: initial, + nextValue: initial, + setter: ((componentInstance) => (newValue: ((current: T) => T) | T) => { + if (byCursor[cursor].nextValue !== newValue) { + byCursor[cursor].nextValue = typeof newValue === 'function' + ? (newValue as (current: T) => T)(byCursor[cursor].value) + : newValue; + + if (!componentInstance.prepareForFrame || !componentInstance.forceUpdate) { + componentInstance.prepareForFrame = throttleWithPrimaryRaf( + () => prepareComponentForFrame(componentInstance), + ); + componentInstance.forceUpdate = throttleWithRaf( + () => forceUpdateComponent(componentInstance), + ); + } + + componentInstance.prepareForFrame(); + componentInstance.forceUpdate(); + + if (DEBUG_MORE) { + if (componentInstance.name !== 'TeactNContainer') { + // eslint-disable-next-line no-console + console.log( + '[Teact.useState]', + componentInstance.name, + // `componentInstance.Component` may be set to `null` by GC helper + componentInstance.Component && (componentInstance.Component as FC_withDebug).DEBUG_contentComponentName + ? `> ${(componentInstance.Component as FC_withDebug).DEBUG_contentComponentName}` + : '', + debugKey + ? `State update for ${debugKey}, next value: ` + : `State update at cursor #${cursor}, next value: `, + byCursor[cursor].nextValue, + ); + } + } + } + })(renderingInstance), + }; + } + + renderingInstance.hooks.state.cursor++; + + return [ + byCursor[cursor].value, + byCursor[cursor].setter, + ]; +} + +function useLayoutEffectBase( + schedulerFn: typeof onTickEnd | typeof requestAnimationFrame, + primarySchedulerFn: typeof onTickEnd | typeof requestAnimationFrame, + effect: () => Function | void, + dependencies?: readonly any[], + debugKey?: string, +) { + const { cursor, byCursor } = renderingInstance.hooks.effects; + const componentInstance = renderingInstance; + + function execCleanup() { + if (!componentInstance.isMounted) { + return; + } + + const { cleanup } = byCursor[cursor]; + if (!cleanup) { + return; + } + + try { + // eslint-disable-next-line @typescript-eslint/naming-convention + let DEBUG_startAt: number | undefined; + if (DEBUG) { + DEBUG_startAt = performance.now(); + } + + cleanup(); + + if (DEBUG) { + const duration = performance.now() - DEBUG_startAt!; + const componentName = componentInstance.name; + if (duration > DEBUG_EFFECT_THRESHOLD) { + // eslint-disable-next-line no-console + console.warn( + `[Teact] Slow cleanup at effect cursor #${cursor}: ${componentName}, ${Math.round(duration)} ms`, + ); + } + } + } catch (err: any) { + handleError(err); + } finally { + byCursor[cursor].cleanup = undefined; + } + } + + function exec() { + if (!componentInstance.isMounted) { + return; + } + + execCleanup(); + + // eslint-disable-next-line @typescript-eslint/naming-convention + let DEBUG_startAt: number | undefined; + if (DEBUG) { + DEBUG_startAt = performance.now(); + } + + const result = effect(); + if (typeof result === 'function') { + byCursor[cursor].cleanup = result; + } + + if (DEBUG) { + const duration = performance.now() - DEBUG_startAt!; + const componentName = componentInstance.name; + if (duration > DEBUG_EFFECT_THRESHOLD) { + // eslint-disable-next-line no-console + console.warn(`[Teact] Slow effect at cursor #${cursor}: ${componentName}, ${Math.round(duration)} ms`); + } + } + } + + if (byCursor[cursor] !== undefined && dependencies && byCursor[cursor].dependencies) { + if (dependencies.some((dependency, i) => dependency !== byCursor[cursor].dependencies![i])) { + if (debugKey) { + const causedBy = dependencies.reduce((res, newValue, i) => { + const prevValue = byCursor[cursor].dependencies![i]; + if (newValue !== prevValue) { + res.push(`${i}: ${prevValue} => ${newValue}`); + } + + return res; + }, []); + + // eslint-disable-next-line no-console + console.log(`[Teact] Effect "${debugKey}" caused by dependencies.`, causedBy.join(', ')); + } + + primarySchedulerFn(execCleanup); + schedulerFn(exec); + } + } else { + if (debugKey) { + // eslint-disable-next-line no-console + console.log(`[Teact] Effect "${debugKey}" caused by missing dependencies.`); + } + + primarySchedulerFn(execCleanup); + schedulerFn(exec); + } + + byCursor[cursor] = { + effect, + dependencies, + cleanup: byCursor[cursor]?.cleanup, + }; + + renderingInstance.hooks.effects.cursor++; +} + +export function useEffect(effect: () => Function | void, dependencies?: readonly any[], debugKey?: string) { + return useLayoutEffectBase(fastRaf, fastRafPrimary, effect, dependencies, debugKey); +} + +export function useLayoutEffect(effect: () => Function | void, dependencies?: readonly any[], debugKey?: string) { + return useLayoutEffectBase(onTickEnd, onTickEndPrimary, effect, dependencies, debugKey); +} + +export function useMemo(resolver: () => T, dependencies: any[], debugKey?: string): T { + const { cursor, byCursor } = renderingInstance.hooks.memos; + let { value } = byCursor[cursor] || {}; + + if ( + byCursor[cursor] === undefined + || dependencies.some((dependency, i) => dependency !== byCursor[cursor].dependencies[i]) + ) { + if (DEBUG && debugKey) { + // eslint-disable-next-line no-console + console.log( + `[Teact.useMemo] ${renderingInstance.name} (${debugKey}): Update is caused by:`, + byCursor[cursor] + ? getUnequalProps(dependencies, byCursor[cursor].dependencies).join(', ') + : '[first render]', + ); + } + + value = resolver(); + } + + byCursor[cursor] = { + value, + dependencies, + }; + + renderingInstance.hooks.memos.cursor++; + + return value; +} + +export function useCallback(newCallback: F, dependencies: any[], debugKey?: string): F { + // eslint-disable-next-line react-hooks/exhaustive-deps + return useMemo(() => newCallback, dependencies, debugKey); +} + +export function useRef(initial: T): { current: T }; +export function useRef(): { current: T | undefined }; // TT way (empty is `undefined`) +export function useRef(initial: null): { current: T | null }; // React way (empty is `null`) +// eslint-disable-next-line no-null/no-null +export function useRef(initial?: T | null) { + const { cursor, byCursor } = renderingInstance.hooks.refs; + if (!byCursor[cursor]) { + byCursor[cursor] = { + current: initial, + }; + } + + renderingInstance.hooks.refs.cursor++; + + return byCursor[cursor]; +} + +export function memo(Component: T, debugKey?: string) { + return function TeactMemoWrapper(props: Props) { + // eslint-disable-next-line react-hooks/exhaustive-deps + return useMemo(() => createElement(Component, props), Object.values(props), debugKey); + } as T; +} + +export default { + createElement, + Fragment, +}; diff --git a/src/lib/teact/teactn.tsx b/src/lib/teact/teactn.tsx new file mode 100644 index 00000000..9d9e3019 --- /dev/null +++ b/src/lib/teact/teactn.tsx @@ -0,0 +1,321 @@ +import type { FC, FC_withDebug, Props } from './teact'; +import React, { useEffect, useState } from './teact'; + +import { DEBUG, DEBUG_MORE } from '../../config'; +import useForceUpdate from '../../hooks/useForceUpdate'; +import generateIdFor from '../../util/generateIdFor'; +import { fastRaf, throttleWithTickEnd } from '../../util/schedulers'; +import arePropsShallowEqual, { getUnequalProps } from '../../util/arePropsShallowEqual'; +import { orderBy } from '../../util/iteratees'; +import { handleError } from '../../util/handleError'; +import { isHeavyAnimating } from '../../hooks/useHeavyAnimationCheck'; + +export default React; + +type GlobalState = + AnyLiteral + & { DEBUG_capturedId?: number }; +type ActionNames = string; +type ActionPayload = any; + +interface ActionOptions { + forceOnHeavyAnimation?: boolean; + // Workaround for iOS gesture history navigation + forceSyncOnIOs?: boolean; +} + +type Actions = Record void>; + +type ActionHandler = ( + global: GlobalState, + actions: Actions, + payload: any, +) => GlobalState | void | Promise; + +type MapStateToProps = ((global: GlobalState, ownProps: OwnProps) => AnyLiteral); + +let currentGlobal = {} as GlobalState; + +// eslint-disable-next-line @typescript-eslint/naming-convention +let DEBUG_currentCapturedId: number | undefined; +// eslint-disable-next-line @typescript-eslint/naming-convention +const DEBUG_releaseCapturedIdThrottled = throttleWithTickEnd(() => { + DEBUG_currentCapturedId = undefined; +}); + +const actionHandlers: Record = {}; +const callbacks: Function[] = [updateContainers]; +const actions = {} as Actions; +const containers = new Map; + ownProps: Props; + mappedProps?: Props; + forceUpdate: Function; + areMappedPropsChanged: boolean; + DEBUG_updates: number; + DEBUG_componentName: string; +}>(); + +const runCallbacksThrottled = throttleWithTickEnd(runCallbacks); + +function runCallbacks(forceOnHeavyAnimation = false) { + if (!forceOnHeavyAnimation && isHeavyAnimating()) { + fastRaf(runCallbacksThrottled); + return; + } + + callbacks.forEach((cb) => cb(currentGlobal)); +} + +export function setGlobal(newGlobal?: GlobalState, options?: ActionOptions) { + if (typeof newGlobal === 'object' && newGlobal !== currentGlobal) { + if (DEBUG) { + if (newGlobal.DEBUG_capturedId && newGlobal.DEBUG_capturedId !== DEBUG_currentCapturedId) { + throw new Error('[TeactN.setGlobal] Attempt to set an outdated global'); + } + + DEBUG_currentCapturedId = undefined; + } + + currentGlobal = newGlobal; + if (options?.forceSyncOnIOs) { + runCallbacks(true); + } else { + runCallbacksThrottled(options?.forceOnHeavyAnimation); + } + } +} + +export function getGlobal() { + if (DEBUG) { + DEBUG_currentCapturedId = Math.random(); + currentGlobal = { + ...currentGlobal, + DEBUG_capturedId: DEBUG_currentCapturedId, + }; + DEBUG_releaseCapturedIdThrottled(); + } + + return currentGlobal; +} + +export function getActions() { + return actions; +} + +let actionQueue: NoneToVoidFunction[] = []; + +function handleAction(name: string, payload?: ActionPayload, options?: ActionOptions) { + actionQueue.push(() => { + actionHandlers[name]?.forEach((handler) => { + const response = handler(DEBUG ? getGlobal() : currentGlobal, actions, payload); + if (!response || typeof response.then === 'function') { + return; + } + + setGlobal(response as GlobalState, options); + }); + }); + + if (actionQueue.length === 1) { + try { + while (actionQueue.length) { + actionQueue[0](); + actionQueue.shift(); + } + } finally { + actionQueue = []; + } + } +} + +function updateContainers() { + // eslint-disable-next-line @typescript-eslint/naming-convention + let DEBUG_startAt: number | undefined; + if (DEBUG) { + DEBUG_startAt = performance.now(); + } + + // eslint-disable-next-line no-restricted-syntax + for (const container of containers.values()) { + const { + mapStateToProps, ownProps, mappedProps, forceUpdate, + } = container; + + let newMappedProps; + + try { + newMappedProps = mapStateToProps(currentGlobal, ownProps); + } catch (err: any) { + handleError(err); + + return; + } + + if (DEBUG) { + if (Object.values(newMappedProps).some(Number.isNaN)) { + // eslint-disable-next-line no-console + console.warn( + // eslint-disable-next-line max-len + `[TeactN] Some of \`${container.DEBUG_componentName}\` mappers contain NaN values. This may cause redundant updates because of incorrect equality check.`, + ); + } + } + + if (Object.keys(newMappedProps).length && !arePropsShallowEqual(mappedProps!, newMappedProps)) { + if (DEBUG_MORE) { + // eslint-disable-next-line no-console + console.log( + '[TeactN] Will update', + container.DEBUG_componentName, + 'caused by', + getUnequalProps(mappedProps!, newMappedProps).join(', '), + ); + } + + container.mappedProps = newMappedProps; + container.areMappedPropsChanged = true; + container.DEBUG_updates++; + + forceUpdate(); + } + } + + if (DEBUG) { + const updateTime = performance.now() - DEBUG_startAt!; + if (updateTime > 7) { + // eslint-disable-next-line no-console + console.warn(`[TeactN] Slow containers update: ${Math.round(updateTime)} ms`); + } + } +} + +export function addActionHandler(name: ActionNames, handler: ActionHandler) { + if (!actionHandlers[name]) { + actionHandlers[name] = []; + + actions[name] = (payload?: ActionPayload, options?: ActionOptions) => { + handleAction(name, payload, options); + }; + } + + actionHandlers[name].push(handler); +} + +export function addCallback(cb: Function) { + callbacks.push(cb); +} + +export function removeCallback(cb: Function) { + const index = callbacks.indexOf(cb); + if (index !== -1) { + callbacks.splice(index, 1); + } +} + +export function withGlobal( + mapStateToProps: MapStateToProps = () => ({}), +) { + return (Component: FC) => { + return function TeactNContainer(props: OwnProps) { + (TeactNContainer as FC_withDebug).DEBUG_contentComponentName = Component.name; + + const [id] = useState(generateIdFor(containers)); + const forceUpdate = useForceUpdate(); + + useEffect(() => { + return () => { + containers.delete(id); + }; + }, [id]); + + let container = containers.get(id); + if (!container) { + container = { + mapStateToProps, + ownProps: props, + areMappedPropsChanged: false, + forceUpdate, + DEBUG_updates: 0, + DEBUG_componentName: Component.name, + }; + + containers.set(id, container); + } + + if (container.areMappedPropsChanged) { + container.areMappedPropsChanged = false; + } + + if (!container.mappedProps || !arePropsShallowEqual(container.ownProps, props)) { + container.ownProps = props; + + try { + container.mappedProps = mapStateToProps(currentGlobal, props); + } catch (err: any) { + handleError(err); + } + } + + // eslint-disable-next-line react/jsx-props-no-spreading + return ; + }; + }; +} + +export function typify() { + type NonTypedActionPayloads = { + [ActionName in NonTypedActionNames]: ActionPayload; + }; + + type ProjectActionTypes = + ActionPayloads + & NonTypedActionPayloads; + + type ProjectActionNames = keyof ProjectActionTypes; + + type ProjectActions = { + [ActionName in ProjectActionNames]: ( + payload?: ProjectActionTypes[ActionName], + options?: ActionOptions, + ) => void; + }; + + type ActionHandlers = { + [ActionName in keyof ProjectActionTypes]: ( + global: ProjectGlobalState, + actions: ProjectActions, + payload: ProjectActionTypes[ActionName], + ) => ProjectGlobalState | void | Promise; + }; + + return { + getGlobal: getGlobal as () => ProjectGlobalState, + setGlobal: setGlobal as (state: ProjectGlobalState, options?: ActionOptions) => void, + getActions: getActions as () => ProjectActions, + addActionHandler: addActionHandler as ( + name: ActionName, + handler: ActionHandlers[ActionName], + ) => void, + withGlobal: withGlobal as ( + mapStateToProps: ((global: ProjectGlobalState, ownProps: OwnProps) => AnyLiteral), + ) => (Component: FC) => FC, + }; +} + +if (DEBUG) { + (window as any).getGlobal = getGlobal; + + document.addEventListener('dblclick', () => { + // eslint-disable-next-line no-console + console.warn( + 'GLOBAL CONTAINERS', + orderBy( + Array.from(containers.values()) + .map(({ DEBUG_componentName, DEBUG_updates }) => ({ DEBUG_componentName, DEBUG_updates })), + 'DEBUG_updates', + 'desc', + ), + ); + }); +} diff --git a/src/styles/_variables.scss b/src/styles/_variables.scss new file mode 100644 index 00000000..3411d074 --- /dev/null +++ b/src/styles/_variables.scss @@ -0,0 +1,168 @@ +//noinspection CssUnknownTarget +:root { + // Color names comes from figma file + --color-white: #fff; + --color-blue: #0088CC; + --color-black: #313D4F; + --color-gray-1: #53657B; + --color-gray-2: #798795; + --color-gray-2-15: #E3E7EC; + --color-gray-3: #91ABB8; + --color-gray-4: #C1D1D9; + --color-green: #2CD36F; + --color-red: #F35B5B; + + --color-background-first: #FFFFFF; + --color-background-second: #F6F8FB; + --color-background-window: #FFFFFF; + --color-background-drop-down: #FFFFFF; + + --color-input-button-text: #53657B; + --color-input-button-background: #F6F8FB; + + --color-blue-button-text: #FFFFFF; + --color-blue-button-text-hover: #FFFFFF; + --color-blue-button-text-active: #BFDBE9; + --color-blue-button-background: #0088CC; + --color-blue-button-background-hover: #16A5ED; + --color-blue-button-background-active: #006EA6; + + --color-red-button-text: #FFFFFF; + --color-red-button-text-hover: #FFFFFF; + --color-red-button-text-active: #F5D2D2; + --color-red-button-background: #F35B5B; + --color-red-button-background-hover: #FF7070; + --color-red-button-background-active: #D74A4A; + + --color-red-warning-text: #FFFFFF; + --color-red-warning-text-75: rgba(255, 255, 255, 0.75); + --color-red-warning-background: rgba(243, 91, 91, 0.9); + + --color-gray-button-text: #2D4C5C; + --color-gray-button-text-hover: #313D4F; + --color-gray-button-text-active: #53657B; + --color-gray-button-background: #DEE6EC; + --color-gray-button-background-hover: #E3EAEF; + --color-gray-button-background-active: #C7D5DC; + + --color-close-button-text: #798795; + --color-close-button-text-hover: #6F7C89; + --color-close-button-text-active: #66727E; + --color-close-button-background: #E3E7EC; + --color-close-button-background-hover: #D2D4DC; + --color-close-button-background-active: #C2C5CE; + + --color-activity-round-blue: #0088CC; + --color-activity-round-orange: #FF9900; + --color-activity-icon: #FFFFFF; + --color-activity-gray-10: #F3F5F9; + --color-activity-gray-text: #53657B; + --color-activity-green-10: #EAFBF1; + --color-activity-green-text: #1EC160; + + --color-separator: rgba(131, 148, 166, 0.3); + --color-linear-effect-1: linear-gradient(90deg, rgba(255, 255, 255, 0) 0%, #FFFFFF 100%); + --color-linear-effect-2: linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.7) 100%); + + --color-interactive-home-button-hover: #FAFBFD; + --color-interactive-input-text-hover-active: #758495; + --color-interactive-popup-menu-hover: rgba(0, 136, 204, 0.07); + --color-interactive-popup-menu-active: rgba(83, 101, 123, 0.07); + --color-interactive-drop-down-menu-hover: #F6F8FB; + --color-interactive-drop-down-menu-active: #ECEEF1; + + --color-tint: rgba(0, 0, 0, 0.45); + + --color-card-text: #FFFFFF; + --color-card-second-text: rgba(255, 255, 255, 0.6); + + --default-shadow: 0 0 1.5625rem 0 #00000026; + + --spinner-white-data: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTEwLjggMjIuNEM2IDIxLjkgMi4xIDE4IDEuNiAxMy4yLjkgNy4xIDUuNCAxLjkgMTEuMyAxLjVjLjQgMCAuNy0uMy43LS43IDAtLjQtLjQtLjgtLjgtLjhDNC44LjQtLjIgNS45IDAgMTIuNS4yIDE4LjYgNS40IDIzLjggMTEuNSAyNGM2LjYuMiAxMi00LjggMTIuNC0xMS4yIDAtLjQtLjMtLjgtLjgtLjgtLjQgMC0uNy4zLS43LjctLjMgNS45LTUuNSAxMC40LTExLjYgOS43eiIgZmlsbD0iI2ZmZmZmZiIvPjwvc3ZnPg==); + --spinner-white-thin-data: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZmlsbD0iI2ZmZmZmZiIgZD0iTTEyIDIzQzUuOSAyMyAxIDE4LjEgMSAxMlM1LjkgMSAxMiAxVjBDNS40IDAgMCA1LjQgMCAxMnM1LjQgMTIgMTIgMTIgMTItNS40IDEyLTEyaC0xYzAgNi4xLTQuOSAxMS0xMSAxMXoiLz48L3N2Zz4=); + --spinner-blue-data: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTEwLjggMjIuNEM2IDIxLjkgMi4xIDE4IDEuNiAxMy4yLjkgNy4xIDUuNCAxLjkgMTEuMyAxLjVjLjQgMCAuNy0uMy43LS43IDAtLjQtLjQtLjgtLjgtLjhDNC44LjQtLjIgNS45IDAgMTIuNS4yIDE4LjYgNS40IDIzLjggMTEuNSAyNGM2LjYuMiAxMi00LjggMTIuNC0xMS4yIDAtLjQtLjMtLjgtLjgtLjgtLjQgMC0uNy4zLS43LjctLjMgNS45LTUuNSAxMC40LTExLjYgOS43eiIgZmlsbD0iIzAwODhDQyIvPjwvc3ZnPg==); + --spinner-dark-blue-data: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTEwLjggMjIuNEM2IDIxLjkgMi4xIDE4IDEuNiAxMy4yLjkgNy4xIDUuNCAxLjkgMTEuMyAxLjVjLjQgMCAuNy0uMy43LS43IDAtLjQtLjQtLjgtLjgtLjhDNC44LjQtLjIgNS45IDAgMTIuNS4yIDE4LjYgNS40IDIzLjggMTEuNSAyNGM2LjYuMiAxMi00LjggMTIuNC0xMS4yIDAtLjQtLjMtLjgtLjgtLjgtLjQgMC0uNy4zLS43LjctLjMgNS45LTUuNSAxMC40LTExLjYgOS43eiIgZmlsbD0iIzAwODhDQyIvPjwvc3ZnPg==); + + --layer-blackout-opacity: 0.3; + + --layer-transition: 300ms cubic-bezier(0.33, 1, 0.68, 1); + --slide-transition: 250ms cubic-bezier(0.25, 1, 0.5, 1); + --select-transition: 200ms ease-out; + + --border-radius-small: 0.625rem; + --border-radius-default: 0.9375rem; + --border-radius-big: 1.5rem; + + --z-below: -1; + --z-modal: 100; + --z-menu-backdrop: 199; + --z-menu-bubble: 200; + --z-notification: 250; + + html.is-ios { + --layer-transition: 450ms cubic-bezier(0.33, 1, 0.68, 1); + --slide-transition: 450ms cubic-bezier(0.25, 1, 0.5, 1); + } + + html.is-android { + --layer-transition: 450ms cubic-bezier(0.25, 1, 0.5, 1); + --slide-transition: 400ms cubic-bezier(0.25, 1, 0.5, 1); + } + + @media (prefers-color-scheme: dark) { + --color-blue: #0C9EE8; + --color-black: #DCEEFF; + --color-gray-1: #A3B8CA; + --color-gray-2: #808C9D; + --color-gray-2-15: #27303D; + --color-gray-3: #7F93A4; + --color-gray-4: #808C9E; + + --color-background-first: #252A3C; + --color-background-second: #1E212E; + --color-background-window: #252A3C; + --color-background-drop-down: #2C3246; + + --color-input-button-text: #A3B8CA; + --color-input-button-background: #2C3246; + + --color-blue-button-text-active: #A5D5F2; + --color-blue-button-background: #0C9EE8; + --color-blue-button-background-hover: #39BAFB; + --color-blue-button-background-active: #0088CC; + + --color-red-button-text-active: #DBC6D2; + --color-red-button-background: #D74A4A; + --color-red-button-background-hover: #F35B5B; + + --color-gray-button-text: #DCEFFF; + --color-gray-button-text-hover: #DCEFFF; + --color-gray-button-text-active: #B3C3D3; + --color-gray-button-background: #424B5C; + --color-gray-button-background-hover: #4F5B68; + --color-gray-button-background-active: #373E4E; + + --color-close-button-text: #808C9D; + --color-close-button-text-hover: #909DAE; + --color-close-button-text-active: #A2B0C2; + --color-close-button-background: #27303D; + --color-close-button-background-hover: #364150; + --color-close-button-background-active: #414C5C; + + --color-activity-round-blue: #469CEC; + --color-activity-gray-10: #2C3345; + --color-activity-gray-text: #A3B8CA; + --color-activity-green-10: #253B41; + --color-activity-green-text: #2CD36F; + + --color-linear-effect-1: linear-gradient(90deg, rgba(37, 42, 60, 0) 0%, #252A3C 100%); + --color-linear-effect-2: linear-gradient(180deg, rgba(37, 42, 60, 0) 0%, rgba(37, 42, 60, 0.7) 100%); + + --color-interactive-home-button-hover: #2B3043; + --color-interactive-input-text-hover-active: #97A9BC; + --color-interactive-popup-menu-hover: rgba(12, 158, 232, 0.07); + --color-interactive-popup-menu-active: rgba(163, 184, 202, 0.07); + --color-interactive-drop-down-menu-hover: #252A3C; + --color-interactive-drop-down-menu-active: #202433; + } +} diff --git a/src/styles/brilliant-icons.css b/src/styles/brilliant-icons.css new file mode 100644 index 00000000..fc76c650 --- /dev/null +++ b/src/styles/brilliant-icons.css @@ -0,0 +1,61 @@ +@font-face { + font-family: "brilliant-icons"; + src: url("./brilliant-icons.woff?865a7017aa8d42caa9e3ff1df60d6a02") format("woff"), +url("./brilliant-icons.woff2?865a7017aa8d42caa9e3ff1df60d6a02") format("woff2"); + font-weight: normal; + font-style: normal; +} + +[class^="icon-"], [class*=" icon-"] { + font-family: brilliant-icons !important; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-style: normal; + font-weight: 400 !important; +} + +.icon-arrow-right::before { + content: "\f101"; +} +.icon-close::before { + content: "\f102"; +} +.icon-copy::before { + content: "\f103"; +} +.icon-eye-closed::before { + content: "\f104"; +} +.icon-eye::before { + content: "\f105"; +} +.icon-menu::before { + content: "\f106"; +} +.icon-paste::before { + content: "\f107"; +} +.icon-qrcode::before { + content: "\f108"; +} +.icon-receive-alt::before { + content: "\f109"; +} +.icon-receive::before { + content: "\f10a"; +} +.icon-search::before { + content: "\f10b"; +} +.icon-send-alt::before { + content: "\f10c"; +} +.icon-send::before { + content: "\f10d"; +} +.icon-share::before { + content: "\f10e"; +} +.icon-tonscan::before { + content: "\f10f"; +} diff --git a/src/styles/brilliant-icons.woff b/src/styles/brilliant-icons.woff new file mode 100644 index 0000000000000000000000000000000000000000..63e11526c4b7d419848c900145734ff2f9d43ae2 GIT binary patch literal 2600 zcmY*ac{J2*8~%+MWtlK|r?I_eM7C^&Cd-&)-*<{+kR@cB5ZNapV;M_@v6V;>*%@zR z%a$d3ipKJWEM-cf;{AEQ?|kQc_c_;j?&~`D{oMC?{&=oXb3Hu(0)W9G1#ljo2>1W+ z!~Fk4-`Z9i03d9jst&>ieODsf+*;u@sOf-Q3xtd2hOxApA0YtLNFXNz0E;p+UM0%Y z_ofG!^8)~D4FIsyy_Q#hdtD{C1HjQ7`!O)pRcwI3iyfe>fGLo~hoh+zQ0 z#sl(0;1O8>;Op-O*0G^ME_MjsNuE?cLKrxg?Qj=S5NL=b&~u&OcNNsYIS?E;|C+;W zh--jT^qXbs@w6=^Cf= zlqAn+X2e2YLHlcByt&XG@po8&lj^Jnz+o>T%RQe?@2AtN)8={8$Kyu%P(M(&1W@-; z4i5yX<6@Mj_!FR_0$R*7pMd7kluZ|c9>1;$AhO7QAMD@AczX9M0#{R;(Je#4zKAs^V;T|;S&z)z6szOE7`*07% zLr4bjb7=I@Ka;o(3}NiTJi=n)SWFiwCon* zsx`J=*LKvp7#cJms53Ra>H9(Ux$v?gZ&i`d+L-S~WQCxsU+Yz_%jWM)KA)$xT(Yoh zuGDRIX00q4iA*%2P;d{@B@y#Pe$NU+(;y00S!RZ%tn!+fhZ64s(}x;ole_4u>^ml& zU=4{3J^m$PvF@6!_D)Jj2^Pzz;>;# zX~o*UmBTYtnb^PA9UCm&M|>X|Ow7JIzmL)4IbKo#O-0Ofe0d-q*&F`*3`2g+4H1liyD#LD-BBNTS6%^7h_Dc&a3uuE^*w9 zry1kWg%pLpshDH0x%lw)&=Z4<6CxP;ExRD2u+`rbHM0f@l^{J-Gj(hw5Oan1OO!}w z+AoL632tTfx{jr}29%t+$IoqH3l90SD56_4!Y!c&p`**G1hj-)zC0qWJH+P{LdtTz z$hIX+Q%o4pj*>rD)%0uWpu&!%*vrJv?|q+PLm1EXNSJ8#cf@fvh_6en+en1c;{xy> zA?r?eV36b-o>|_fQdb_F@{O-69ib7BisPy)uF~Aa2;{-eAlBAK?kEG<8b|h&x$#{($C20 zwAsj{R=Y`B?hvnSD1^W5)kd~ zHx-ihrXBYF$dvPZ<$iLNXs1rSN5h3sqp}1aiE;KlrHcHHZkLL53UB;Y_evG8SC;cX zVl!1Jy0BO%I=`sJ^#dD`l{TP?a(mFlv_wA14-F&U6}fY}`c1 zl0+9%fVT}ev+d5_k=G|Tj;fw|*u4@Kn1>o@ruZg#9~tItqAaiHl|xQ*|s9 z>Lv`;e!NLiLkM>*OUVY@8@7nYUncPz>i8L9A|{LFai;PMrX6}5D9Q zQ&iLWsl@iw?1t$8XjB}2F>VYga;o#KyVoKB*Q zv6uWi{WMWOK^eCK!2zkl|>{sk=5S#?%!{ZhRm&?ImpMhvb}AtadYtw+#9 zpu5}YumuRP<#ZHu$^ZJ@IKd?*vjd(2FUJD_=Sv{=PzPfiBMJqq;4Ft82|6iY22?>{ z5CcdQq=Ti3We%zcb%CZs888bN<9~PYxJ(by2LKim{A*Sc9DdM#>j)s?1^ImFCmC91 zorXclWMsL0E;d9pH4!FxF z38NazT%binJqYAso5r$ zAHJ_&uOn9nnx8~?eB0{oy%rv%E<-2Rru^tQap%(Zn}gLn1o_8g@&VavL|eN!UN24L z2x>i$j*v{jaxUKgI>sa>+3ub@PQfXx;bq?r!#DDnMypjwdzl+&zn@DdFqJiXTbe%= hwrZzFu5*@F{|<_md84$NYrQ4UzQtlnl(Gkae*k(EdyW7A literal 0 HcmV?d00001 diff --git a/src/styles/brilliant-icons.woff2 b/src/styles/brilliant-icons.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..f23054461be3b571cb4cc95950a242c338a3728f GIT binary patch literal 2052 zcmV+f2>bVUPew8T0RR9100;yC3jhEB01;#W00*@I0RR9100000000000000000000 z0000SR0d!Ggft41K#&jtHUcCAKno%O1Rw>3Y6pQd8_y0=lqOOm`eL>a<-8Yf9R#36M3BaOZI6kyWK9YG0zV=9{`y32*P@sT>?j z6X1lq-jVJ6IaVs`2|>ojq~aDpz;i_8W z$XHbfvdy|svtXX#g37aV9|8gZ5o!@F9S>`^)cv3nKsD2n4GbvQ*MIVO2(Uwh1P7dO!3_`& zU+KX4jW#!Ml8JED2LhErpb7|71%YZHP#pwnfIv+Us09MGL7)x@)CGZhAW(q=N&$~; zjsWNaFe}J^5MQs&kYq<>Fe20m+Z`!bUs;jQ;V*W2i|uxY)>K4`ypD+B@Hs8b+r#Or zDGJ(8+0{WUry}x)=TWnvjG5E5U^=C1Mn0@ss(au5eT}@84fX49WzAfmPrv(D=&NSi zCFFEKJ0VGVi%8mWQOp&H3hjs_LDOTsO+vDkl=jS0J{UAm5i(^N$4fwa-rIy!%L=9q zL)SyS4vV?kqqSxs+g=wp&2)ZAJ{&LkDsf%S*Bq%aPH5W$BX<^R#kiH|I374$eYnWe zhL6=9YsekfPUPFOh5Edq={YlNseQw2n{+6viH7;A=r4nwowFcH5Yq!GlQd(f)p-MI zlsc2fX{yNqT2Qire6dX`imcF8DL4SbA%#*$tu0{cW=((^aU>d9In^9ZGZu9(B3fNC zs*a^i73P@PwWW{dKuXW4X)R-rO!myXf$BsoHYWkh1>XYPOY>HGFO;Q7R?g>yl_^*A zb-U&2yGZt-=W@?Hpgs6(V{U06zf?+XPqfVjsipIgo+Lif={CpAt%|(~IJ4QaEMKl9 z?MLhIrmP?zl67x#saTVO_UHc!;SM?W(fW4}>bX!qGwU_?H8j=Sns38%K^==F!7x zH&-vq%+Z2fe?rUrVJDZIG(ncuIpi^;#*CI7>m)gTy(GpjirLfl*w`Zwhnd)4zx zeGU0h?_7^xc;7xpf~4>}c)vU8R{RD3vO^JvTPhnN6!;;gpRkU9!if!Kw1q|}m%N;| zCuUoYUY@jj-NDZ@#C?Z_zV}dnHl}rc=V94CS9|K_7b=QxZ|iU+?!CL|m~8JiDfmIq z{f=R)XNWPRvr@7_t&rc?^+usFy4}P4`4i*UWN%OWN=4i4axofe9cu3ieh?RtBZY!z zDEhqf7}LTljD3p2w=`;=ia;>oPzQt~Gg?U|yyUaSk&E+;9idlHYZlGm_Md5z zR(_vwEpW^31+JvKl1cCit!x(NkHu{vf454iWV~KJ!F!Vfim5z?;zpV>d5hhPar3lL z<852)iVpd<*TR9${(67sdb?H*T`$BT!7smbfj18cY7|$5X(T_w-Q%$Auedi{p;D(hF&vbga5d&{K6kEu^GKKd^MCywDuTT z9y_$U!|MCw@{v7S6Wq|Um>B&n_FGhp%?v%*oetmI%1kJ#q1_)G!E}3wSs7j#VZC3w z-jA}_cHOu1M?&4ePw{2I|JZ2a$7T7utn@GcbNe2%S3DB(so^Nao;1|6~!382NAs zerx~(LhT@^z#WHV8(b&=BXfQRD9)cIvk2jgox_`m$s#gxp8rkrg|u_XIKyqO4z+8lC>KXie7Ve!jjG)lF){vuPE^hlA;m{{57 zY|d+`FdSo!6l`ETmt%^oM&PF$<;_#X>ZPSnqIq)Q iDlqEK>6+V_P;A)ElsXx1dZw)$P-sUtK#Ro$0002(h1mcA literal 0 HcmV?d00001 diff --git a/src/styles/index.scss b/src/styles/index.scss new file mode 100644 index 00000000..53f8b32b --- /dev/null +++ b/src/styles/index.scss @@ -0,0 +1,153 @@ +@import "reboot"; + +@import "variables"; + +@import "brilliant-icons"; + +html, body { + overflow: hidden; + + width: 100%; + height: 100%; + margin: 0; + padding: 0; + + background: var(--color-background-first); +} + +body { + overflow: hidden; + + font-family: 'Nunito', -apple-system, BlinkMacSystemFont, "Apple Color Emoji", "Segoe UI", Oxygen, Ubuntu, Cantarell, + "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; + font-size: 16px; + font-weight: 400; + line-height: 1.25; + color: var(--color-gray-1); + text-align: left; + + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + + @media (max-width: 600px) { + height: calc(var(--vh, 1vh) * 100); + } +} + +html.is-ios body, +html.is-macos body { + font-family: 'Nunito', system-ui, -apple-system, BlinkMacSystemFont, "Roboto", "Apple Color Emoji", "Helvetica Neue", sans-serif; +} + +#root { + height: 100%; +} + +#root, +#portals { + font-size: 1.0625rem; +} + +.not-implemented { + opacity: 0.5; + + &, + & * { + cursor: not-allowed !important; + } +} + +* { + box-sizing: border-box; +} + +.custom-scroll, +.custom-scroll-x { + // Fix scroll lock on iOS + pointer-events: auto; + + transition: scrollbar-color 0.3s ease; + + -webkit-overflow-scrolling: touch; + scrollbar-color: rgba(90, 90, 90, 0) transparent; + scrollbar-width: thin; + + &::-webkit-scrollbar-thumb { + background-color: rgba(90, 90, 90, 0); + border-radius: 0.375rem; + // `box-shadow` prevents repaint on macOS when hovering out of scrollable container + box-shadow: 0 0 1px rgba(255, 255, 255, 0.01); + } + + &:hover, + &:focus, + &:focus-within { + scrollbar-color: rgba(90, 90, 90, 0.3) transparent; + + &::-webkit-scrollbar-thumb { + background-color: rgba(90, 90, 90, 0.3); + } + } +} + +body:not(.is-ios) { + .custom-scroll { + &::-webkit-scrollbar { + width: 0.375rem; + } + } + + .custom-scroll-x { + &::-webkit-scrollbar { + height: 0.375rem; + } + } +} + +.flex { + display: flex; + align-items: center; + justify-content: center; +} + +.no-scrollbar { + scrollbar-width: none; + + &::-webkit-scrollbar { + display: none; + } +} + +div[role="button"] { + cursor: pointer; + + outline: none !important; +} + +.opacity-transition { + opacity: 1; + + transition: opacity 0.15s ease; + + &:not(.open) { + opacity: 0; + } + + &:not(.shown) { + display: none; + } + + &.slow { + transition-duration: 0.3s; + } +} + +a { + color: var(--color-blue); + + &:hover, + &:focus { + color: var(--color-blue); + text-decoration: underline; + } +} diff --git a/src/styles/reboot.css b/src/styles/reboot.css new file mode 100644 index 00000000..bd2c293a --- /dev/null +++ b/src/styles/reboot.css @@ -0,0 +1,348 @@ +*, +*::before, +*::after { + box-sizing: border-box; +} + +html { + font-family: sans-serif; + line-height: 1.15; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + + -ms-overflow-style: scrollbar; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +@-ms-viewport { + width: device-width; +} +article, +aside, +dialog, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section { + display: block; +} + +body { + margin: 0; +} + +[tabindex="-1"]:focus { + outline: none !important; +} + +hr { + overflow: visible; + + box-sizing: content-box; + height: 0; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + margin-top: 0; + margin-bottom: 0.5rem; + + font-weight: 500; +} + +abbr[title], +abbr[data-original-title] { + cursor: help; + + text-decoration: underline; + text-decoration: underline dotted; + + border-bottom: 0; +} + +address { + margin-bottom: 1rem; + + font-style: normal; + line-height: inherit; +} + +p, +ol, +ul, +dl { + margin-top: 0; + margin-bottom: 1rem; +} + +ol ol, +ul ul, +ol ul, +ul ol { + margin-bottom: 0; +} + +dd { + margin-bottom: 0.5rem; + margin-left: 0; +} + +blockquote, +figure { + margin: 0 0 1rem; +} + +dfn { + font-style: italic; +} + +dt, +b, +strong { + font-weight: 600; +} + +small { + font-size: 80%; +} + +sub, +sup { + position: relative; + + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +a { + color: var(--color-blue); + text-decoration: none; + + background-color: transparent; + + -webkit-text-decoration-skip: objects; +} +a:hover { + color: #0056b3; + text-decoration: underline; +} + +a:not([href]):not([tabindex]), +a:not([href]):not([tabindex]):hover, +a:not([href]):not([tabindex]):focus { + color: inherit; + text-decoration: none; +} +a:not([href]):not([tabindex]):focus { + outline: 0; +} + +pre, +code, +kbd, +samp { + font: 0.9375rem/1.25 "Courier", "Courier New", "Nimbus Mono L", "Courier 10 Pitch", "FreeMono", sans-serif-monospace, monospace; + font-size-adjust: 0.43; +} + +pre { + overflow: auto; + + margin-top: 0; + margin-bottom: 1rem; + + -ms-overflow-style: scrollbar; +} + +img { + vertical-align: middle; + + border-style: none; +} + +svg:not(:root) { + overflow: hidden; +} + +a, +area, +button, +[role="button"], +input:not([type="range"]), +label, +select, +summary, +textarea { + touch-action: manipulation; +} + +table { + border-collapse: collapse; +} + +caption { + caption-side: bottom; + + padding-top: 0.75rem; + padding-bottom: 0.75rem; + + color: #868e96; + text-align: left; +} + +th { + text-align: inherit; +} + +label { + display: inline-block; + + margin-bottom: 0.5rem; +} + +button { + border-radius: 0; +} + +button:not([class]):focus { + outline: 1px dotted; + outline: 5px auto -webkit-focus-ring-color; +} + +input, +button, +select, +optgroup, +textarea { + margin: 0; + + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +button, +input { + overflow: visible; +} + +button, +select { + text-transform: none; +} + +button, +html [type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + padding: 0; + + border-style: none; +} + +input[type="radio"], +input[type="checkbox"] { + box-sizing: border-box; + padding: 0; +} + +input[type="date"], +input[type="time"], +input[type="datetime-local"], +input[type="month"] { + -webkit-appearance: listbox; +} + +textarea { + resize: vertical; + + overflow: auto; +} + +fieldset { + min-width: 0; + margin: 0; + padding: 0; + + border: 0; +} + +legend { + display: block; + + width: 100%; + max-width: 100%; + margin-bottom: 0.5rem; + padding: 0; + + font-size: 1.5rem; + line-height: inherit; + color: inherit; + white-space: normal; +} + +progress { + vertical-align: baseline; +} + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +[type="search"] { + outline-offset: -2px; + + -webkit-appearance: none; +} + +[type="search"]::-webkit-search-cancel-button, +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +::-webkit-file-upload-button { + font: inherit; + + -webkit-appearance: button; +} + +output { + display: inline-block; +} + +summary { + display: list-item; +} + +template { + display: none; +} + +[hidden] { + display: none !important; +} diff --git a/src/util/PostMessageConnector.ts b/src/util/PostMessageConnector.ts new file mode 100644 index 00000000..f2ba7e54 --- /dev/null +++ b/src/util/PostMessageConnector.ts @@ -0,0 +1,234 @@ +import generateIdFor from './generateIdFor'; + +export interface CancellableCallback { + ( + ...args: any[] + ): void; + + isCanceled?: boolean; + acceptsBuffer?: boolean; +} + +type InitData = { + channel?: string; + type: 'init'; + messageId?: string; + name: 'init'; + args: any; +}; + +type CallMethodData = { + channel?: string; + type: 'callMethod'; + messageId?: string; + name: string; + args: any; +}; + +export type OriginMessageData = InitData | CallMethodData | { + channel?: string; + type: 'cancelProgress'; + messageId: string; +}; + +export interface OriginMessageEvent { + data: OriginMessageData; +} + +export type ApiUpdate = + { type: string } + & any; + +export type WorkerMessageData = { + channel?: string; + type: 'update'; + update: ApiUpdate; +} | { + channel?: string; + type: 'methodResponse'; + messageId: string; + response?: any; + error?: { message: string }; +} | { + channel?: string; + type: 'methodCallback'; + messageId: string; + callbackArgs: any[]; +} | { + channel?: string; + type: 'unhandledError'; + error?: { message: string }; +}; + +export interface WorkerMessageEvent { + data: WorkerMessageData; +} + +interface RequestStates { + messageId: string; + resolve: Function; + reject: Function; + callback: AnyToVoidFunction; +} + +export class Connector { + private requestStates = new Map(); + + private requestStatesByCallback = new Map(); + + constructor( + public target: Worker | Window | chrome.runtime.Port, + private onUpdate?: (update: ApiUpdate) => void, + private channel?: string, + private targetOrigin = '*', + ) { + } + + // eslint-disable-next-line class-methods-use-this + public destroy() { + } + + init(...args: any[]) { + this.postMessage({ + type: 'init', + args, + }); + } + + request(messageData: { name: string; args: any }) { + const { requestStates, requestStatesByCallback } = this; + + const messageId = generateIdFor(requestStates); + const payload: CallMethodData = { + type: 'callMethod', + messageId, + ...messageData, + }; + + const requestState = { messageId } as RequestStates; + + // Re-wrap type because of `postMessage` + const promise: Promise = new Promise((resolve, reject) => { + Object.assign(requestState, { resolve, reject }); + }); + + if (typeof payload.args[payload.args.length - 1] === 'function') { + const callback = payload.args.pop() as AnyToVoidFunction; + requestState.callback = callback; + requestStatesByCallback.set(callback, requestState); + } + + requestStates.set(messageId, requestState); + promise + .catch(() => undefined) + .finally(() => { + requestStates.delete(messageId); + + if (requestState.callback) { + requestStatesByCallback.delete(requestState.callback); + } + }); + + this.postMessage(payload); + + return promise; + } + + cancelCallback(progressCallback: CancellableCallback) { + progressCallback.isCanceled = true; + + const { messageId } = this.requestStatesByCallback.get(progressCallback) || {}; + if (!messageId) { + return; + } + + this.postMessage({ + type: 'cancelProgress', + messageId, + }); + } + + onMessage(data: WorkerMessageData) { + const { requestStates, channel } = this; + + if (data.channel !== channel) { + return; + } + + if (data.type === 'update' && this.onUpdate) { + this.onUpdate(data.update); + } + if (data.type === 'methodResponse') { + const requestState = requestStates.get(data.messageId); + if (requestState) { + if (data.error) { + requestState.reject(data.error); + } else { + requestState.resolve(data.response); + } + } + } else if (data.type === 'methodCallback') { + const requestState = requestStates.get(data.messageId); + requestState?.callback?.(...data.callbackArgs); + } else if (data.type === 'unhandledError') { + throw new Error(data.error?.message); + } + } + + private postMessage(data: AnyLiteral) { + data.channel = this.channel; + + if (this.target === window) { + this.target.postMessage(data, this.targetOrigin); + } else { + this.target.postMessage(data); + } + } +} + +export function createConnector( + worker: Worker | Window, + onUpdate?: (update: ApiUpdate) => void, + channel?: string, + targetOrigin?: string, +) { + const connector = new Connector(worker, onUpdate, channel, targetOrigin); + + function handleMessage({ data }: WorkerMessageEvent | MessageEvent) { + connector.onMessage(data); + } + + worker.addEventListener('message', handleMessage as any); // TS weirdly complains here + + connector.destroy = () => { + worker.removeEventListener('message', handleMessage as any); + }; + + return connector; +} + +export function createExtensionConnector( + name: string, + onUpdate?: (update: ApiUpdate) => void, + channel?: string, +) { + const connector = new Connector(connect(), onUpdate, channel); + + function connect() { + // eslint-disable-next-line no-restricted-globals + const port = (self as any).chrome.runtime.connect({ name }); + + port.onMessage.addListener((data: WorkerMessageData) => { + connector.onMessage(data); + }); + + // For some reason port can suddenly get disconnected + port.onDisconnect.addListener(() => { + connector.target = connect(); + }); + + return port; + } + + return connector; +} diff --git a/src/util/animation.ts b/src/util/animation.ts new file mode 100644 index 00000000..34cef34a --- /dev/null +++ b/src/util/animation.ts @@ -0,0 +1,95 @@ +import { fastRaf } from './schedulers'; + +interface AnimationInstance { + isCancelled: boolean; +} + +let currentInstance: AnimationInstance | undefined; + +export function animateSingle(tick: Function, instance?: AnimationInstance) { + if (!instance) { + if (currentInstance && !currentInstance.isCancelled) { + currentInstance.isCancelled = true; + } + + instance = { isCancelled: false }; + currentInstance = instance; + } + + if (!instance!.isCancelled && tick()) { + fastRaf(() => { + animateSingle(tick, instance); + }); + } +} + +export function animate(tick: Function) { + if (tick()) { + fastRaf(() => { + animate(tick); + }); + } +} + +export type TimingFn = (t: number) => number; + +export type AnimateNumberProps = { + to: number | number[]; + from: number | number[]; + duration: number; + onUpdate: (value: any) => void; + timing?: TimingFn; + onEnd?: () => void; +}; + +export const timingFunctions = { + linear: (t: number) => t, + easeIn: (t: number) => t ** 1.675, + easeOut: (t: number) => 1 - (1 - t ** 1.675), + easeInOut: (t: number) => 0.5 * (Math.sin((t - 0.5) * Math.PI) + 1), + easeInQuad: (t: number) => t * t, + easeOutQuad: (t: number) => t * (2 - t), + easeInOutQuad: (t: number) => (t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t), + easeInCubic: (t: number) => t * t * t, + easeOutCubic: (t: number) => (--t) * t * t + 1, + easeInOutCubic: (t: number) => (t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1), + easeInQuart: (t: number) => t * t * t * t, + easeOutQuart: (t: number) => 1 - (--t) * t * t * t, + easeInOutQuart: (t: number) => (t < 0.5 ? 8 * t * t * t * t : 1 - 8 * (--t) * t * t * t), + easeInQuint: (t: number) => t * t * t * t * t, + easeOutQuint: (t: number) => 1 + (--t) * t * t * t * t, + easeInOutQuint: (t: number) => (t < 0.5 ? 16 * t * t * t * t * t : 1 + 16 * (--t) * t * t * t * t), +}; + +export function animateNumber({ + timing = timingFunctions.linear, + onUpdate, + duration, + onEnd, + from, + to, +}: AnimateNumberProps) { + const t0 = Date.now(); + let canceled = false; + + animate(() => { + if (canceled) return false; + const t1 = Date.now(); + let t = (t1 - t0) / duration; + if (t > 1) t = 1; + const progress = timing(t); + if (typeof from === 'number' && typeof to === 'number') { + onUpdate(from + ((to - from) * progress)); + } else if (Array.isArray(from) && Array.isArray(to)) { + const result = from.map((f, i) => f + ((to[i] - f) * progress)); + onUpdate(result); + } + if (t === 1 && onEnd) onEnd(); + return t < 1; + }); + + return () => { + canceled = true; + if (onEnd) onEnd(); + }; +} diff --git a/src/util/areDeepEqual.ts b/src/util/areDeepEqual.ts new file mode 100644 index 00000000..21e33e37 --- /dev/null +++ b/src/util/areDeepEqual.ts @@ -0,0 +1,35 @@ +export function areDeepEqual(value1: T, value2: T): boolean { + const type1 = typeof value1; + const type2 = typeof value2; + if (type1 !== type2) { + return false; + } + + if (type1 !== 'object') { + return value1 === value2; + } + + const isArray1 = Array.isArray(value1); + const isArray2 = Array.isArray(value2); + + if (isArray1 !== isArray2) { + return false; + } + + if (isArray1) { + const array1 = value1 as any[]; + const array2 = value2 as any[]; + + if (array1.length !== array2.length) { + return false; + } + + return array1.every((member1, i) => areDeepEqual(member1, array2[i])); + } + + const object1 = value1 as AnyLiteral; + const object2 = value2 as AnyLiteral; + const keys1 = Object.keys(object1); + + return keys1.every((key1) => areDeepEqual(object1[key1], object2[key1])); +} diff --git a/src/util/arePropsShallowEqual.ts b/src/util/arePropsShallowEqual.ts new file mode 100644 index 00000000..ade4c464 --- /dev/null +++ b/src/util/arePropsShallowEqual.ts @@ -0,0 +1,44 @@ +export default function arePropsShallowEqual(currentProps: AnyLiteral, newProps: AnyLiteral) { + if (currentProps === newProps) { + return true; + } + + const currentKeys = Object.keys(currentProps); + const currentKeysLength = currentKeys.length; + const newKeysLength = Object.keys(newProps).length; + + if (currentKeysLength !== newKeysLength) { + return false; + } + + if (currentKeysLength === 0) { + return true; + } + + for (let i = 0; i < currentKeysLength; i++) { + const prop = currentKeys[i]; + if (currentProps[prop] !== newProps[prop]) { + return false; + } + } + + return true; +} + +export function getUnequalProps(currentProps: AnyLiteral, newProps: AnyLiteral) { + const currentKeys = Object.keys(currentProps); + const currentKeysLength = currentKeys.length; + const newKeysLength = Object.keys(newProps).length; + + if (currentKeysLength !== newKeysLength) { + return ['%LENGTH%']; + } + + return currentKeys.reduce((res, prop) => { + if (currentProps[prop] !== newProps[prop]) { + res.push(`${prop}: ${currentProps[prop]} => ${newProps[prop]}`); + } + + return res; + }, [] as string[]); +} diff --git a/src/util/buildClassName.ts b/src/util/buildClassName.ts new file mode 100644 index 00000000..0aef1544 --- /dev/null +++ b/src/util/buildClassName.ts @@ -0,0 +1,28 @@ +type Parts = (string | false | undefined)[]; +type PartsWithGlobals = (string | false | undefined | string[])[]; +type ClassNameBuilder = + ((elementName: string, ...modifiers: PartsWithGlobals) => string) + & Record; + +export default function buildClassName(...parts: Parts) { + return parts.filter(Boolean).join(' '); +} + +export function createClassNameBuilder(componentName: string) { + return ((elementName: string, ...modifiers: PartsWithGlobals) => { + const baseName = elementName === '&' ? componentName : `${componentName}__${elementName}`; + + return modifiers.reduce((acc, modifier) => { + if (modifier) { + // A bit hacky way to pass global class names + if (Array.isArray(modifier)) { + acc.push(...modifier); + } else { + acc.push(`${baseName}--${modifier}`); + } + } + + return acc; + }, [baseName]).join(' '); + }) as ClassNameBuilder; +} diff --git a/src/util/buildStyle.ts b/src/util/buildStyle.ts new file mode 100644 index 00000000..1e4b5568 --- /dev/null +++ b/src/util/buildStyle.ts @@ -0,0 +1,5 @@ +type Parts = (string | false | undefined)[]; + +export default function buildStyle(...parts: Parts) { + return parts.filter(Boolean).join(';'); +} diff --git a/src/util/callbacks.ts b/src/util/callbacks.ts new file mode 100644 index 00000000..853cf363 --- /dev/null +++ b/src/util/callbacks.ts @@ -0,0 +1,66 @@ +export function createCallbackManager() { + const callbacks: AnyToVoidFunction[] = []; + + function addCallback(cb: AnyToVoidFunction) { + callbacks.push(cb); + + return () => { + removeCallback(cb); + }; + } + + function removeCallback(cb: AnyToVoidFunction) { + const index = callbacks.indexOf(cb); + if (index !== -1) { + callbacks.splice(index, 1); + } + } + + function runCallbacks(...args: any[]) { + callbacks.forEach((callback) => { + callback(...args); + }); + } + + function hasCallbacks() { + return Boolean(callbacks.length); + } + + return { + runCallbacks, + addCallback, + removeCallback, + hasCallbacks, + }; +} + +export type CallbackManager = ReturnType; + +export class EventEmitter { + private channels = new Map(); + + on(name: string, handler: AnyToVoidFunction) { + this.resolveChannel(name).addCallback(handler); + return this; + } + + removeListener(name: string, handler: AnyToVoidFunction) { + this.resolveChannel(name).removeCallback(handler); + return this; + } + + emit(name: string, ...args: any) { + this.resolveChannel(name).runCallbacks(...args); + return this; + } + + private resolveChannel(name: string) { + let channel = this.channels.get(name); + if (!channel) { + channel = createCallbackManager(); + this.channels.set(name, channel); + } + + return channel; + } +} diff --git a/src/util/captureEscKeyListener.ts b/src/util/captureEscKeyListener.ts new file mode 100644 index 00000000..2ab04ce3 --- /dev/null +++ b/src/util/captureEscKeyListener.ts @@ -0,0 +1,7 @@ +import captureKeyboardListener from './captureKeyboardListeners'; + +type IHandlerFunction = () => void; + +export default function captureEscKeyListener(handler: IHandlerFunction) { + return captureKeyboardListener({ onEsc: handler }); +} diff --git a/src/util/captureKeyboardListeners.ts b/src/util/captureKeyboardListeners.ts new file mode 100644 index 00000000..cef332fb --- /dev/null +++ b/src/util/captureKeyboardListeners.ts @@ -0,0 +1,88 @@ +type HandlerName = 'onEnter' | 'onBackspace' | 'onDelete' | 'onEsc' | 'onUp' | 'onDown' | 'onLeft' | 'onRight' +| 'onTab'; +type Handler = (e: KeyboardEvent) => void; +type CaptureOptions = Partial>; + +const keyToHandlerName: Record = { + Enter: 'onEnter', + Backspace: 'onBackspace', + Delete: 'onDelete', + Esc: 'onEsc', + Escape: 'onEsc', + ArrowUp: 'onUp', + ArrowDown: 'onDown', + ArrowLeft: 'onLeft', + ArrowRight: 'onRight', + Tab: 'onTab', +}; + +const handlers: Record = { + onEnter: [], + onDelete: [], + onBackspace: [], + onEsc: [], + onUp: [], + onDown: [], + onLeft: [], + onRight: [], + onTab: [], +}; + +export default function captureKeyboardListeners(options: CaptureOptions) { + if (!hasActiveHandlers()) { + document.addEventListener('keydown', handleKeyDown, true); + } + + (Object.keys(options) as Array).forEach((handlerName) => { + const handler = options[handlerName]; + if (!handler) { + return; + } + + const currentEventHandlers = handlers[handlerName]; + if (currentEventHandlers) { + currentEventHandlers.push(handler); + } + }); + + return () => { + releaseKeyboardListener(options); + }; +} + +function hasActiveHandlers() { + return Object.values(handlers).some((keyHandlers) => Boolean(keyHandlers.length)); +} + +function handleKeyDown(e: KeyboardEvent) { + const handlerName = keyToHandlerName[e.key]; + if (!handlerName) { + return; + } + + const { length } = handlers[handlerName]; + if (!length) { + return; + } + e.stopPropagation(); + + const handler = handlers[handlerName][length - 1]; + handler!(e); +} + +function releaseKeyboardListener(options: CaptureOptions) { + (Object.keys(options) as Array).forEach((handlerName) => { + const handler = options[handlerName]; + const currentEventHandlers = handlers[handlerName]; + if (currentEventHandlers) { + const index = currentEventHandlers.findIndex((cb) => cb === handler); + if (index !== -1) { + currentEventHandlers.splice(index, 1); + } + } + }); + + if (!hasActiveHandlers()) { + document.removeEventListener('keydown', handleKeyDown, false); + } +} diff --git a/src/util/clipboard.ts b/src/util/clipboard.ts new file mode 100644 index 00000000..0ffb086e --- /dev/null +++ b/src/util/clipboard.ts @@ -0,0 +1,65 @@ +import { DEBUG } from '../config'; + +export const CLIPBOARD_ITEM_SUPPORTED = window.navigator.clipboard && window.ClipboardItem; + +const textCopyEl = document.createElement('textarea'); +textCopyEl.setAttribute('readonly', ''); +textCopyEl.tabIndex = -1; +textCopyEl.className = 'visually-hidden'; + +export const copyTextToClipboard = (str: string): void => { + textCopyEl.value = str; + document.body.appendChild(textCopyEl); + const selection = document.getSelection(); + + if (selection) { + // Store previous selection + const rangeToRestore = selection.rangeCount > 0 && selection.getRangeAt(0); + textCopyEl.select(); + document.execCommand('copy'); + // Restore the original selection + if (rangeToRestore) { + selection.removeAllRanges(); + selection.addRange(rangeToRestore); + } + } + + document.body.removeChild(textCopyEl); +}; + +export const copyImageToClipboard = (imageUrl?: string) => { + if (!imageUrl) return; + const canvas = document.createElement('canvas'); + const ctx = canvas.getContext('2d'); + const imageEl = new Image(); + imageEl.onload = (e: Event) => { + if (ctx && e.currentTarget) { + const img = e.currentTarget as HTMLImageElement; + canvas.width = img.width; + canvas.height = img.height; + ctx.drawImage(img, 0, 0, img.width, img.height); + canvas.toBlob(copyBlobToClipboard, 'image/png', 1); + } + }; + + imageEl.src = imageUrl; +}; + +async function copyBlobToClipboard(pngBlob: Blob | null) { + if (!pngBlob || !CLIPBOARD_ITEM_SUPPORTED) { + return; + } + + try { + await window.navigator.clipboard.write?.([ + new ClipboardItem({ + [pngBlob.type]: pngBlob, + }), + ]); + } catch (error) { + if (DEBUG) { + // eslint-disable-next-line no-console + console.error(error); + } + } +} diff --git a/src/util/createPostMessageInterface.ts b/src/util/createPostMessageInterface.ts new file mode 100644 index 00000000..5059bbcf --- /dev/null +++ b/src/util/createPostMessageInterface.ts @@ -0,0 +1,172 @@ +import type { + CancellableCallback, OriginMessageEvent, OriginMessageData, WorkerMessageData, ApiUpdate, +} from './PostMessageConnector'; + +import { DEBUG } from '../config'; + +declare const self: WorkerGlobalScope; + +const callbackState = new Map(); + +type ApiConfig = + ((name: string, ...args: any[]) => any | [any, ArrayBuffer[]]) + | Record; +type SendToOrigin = (data: WorkerMessageData, arrayBuffers?: ArrayBuffer[]) => void; + +export function createWorkerInterface(api: ApiConfig, channel?: string) { + function sendToOrigin(data: WorkerMessageData, arrayBuffers?: ArrayBuffer[]) { + data.channel = channel; + + if (arrayBuffers) { + postMessage(data, arrayBuffers); + } else { + postMessage(data); + } + } + + handleErrors(sendToOrigin); + + onmessage = (message: OriginMessageEvent) => { + if (message.data?.channel === channel) { + onMessage(api, message.data, sendToOrigin); + } + }; +} + +export function createExtensionInterface( + portName: string, + api: ApiConfig, + channel?: string, + autoInit?: (onUpdate: (update: ApiUpdate) => void) => void, + cleanUpdater?: (onUpdate: (update: ApiUpdate) => void) => void, +) { + chrome.runtime.onConnect.addListener((port) => { + if (port.name !== portName) { + return; + } + + const dAppUpdater = (update: ApiUpdate) => { + sendToOrigin({ + type: 'update', + update, + }); + }; + + function sendToOrigin(data: WorkerMessageData) { + data.channel = channel; + port.postMessage(data); + } + + handleErrors(sendToOrigin); + + port.onMessage.addListener((data: OriginMessageData) => { + if (data.channel === channel) { + onMessage(api, data, sendToOrigin); + } + }); + + autoInit?.(dAppUpdater); + + port.onDisconnect.addListener(() => { + cleanUpdater?.(dAppUpdater); + }); + }); +} + +async function onMessage( + api: ApiConfig, + data: OriginMessageData, + sendToOrigin: SendToOrigin, +) { + function onUpdate(update: ApiUpdate) { + sendToOrigin({ + type: 'update', + update, + }); + } + + switch (data.type) { + case 'init': { + const { args } = data; + const promise = typeof api === 'function' ? api('init', onUpdate, ...args) : api.init?.(onUpdate, ...args); + await promise; + + break; + } + case 'callMethod': { + const { messageId, name, args } = data; + try { + if (messageId) { + const callback = (...callbackArgs: any[]) => { + const lastArg = callbackArgs[callbackArgs.length - 1]; + + sendToOrigin({ + type: 'methodCallback', + messageId, + callbackArgs, + }, lastArg instanceof ArrayBuffer ? [lastArg] : undefined); + }; + + callbackState.set(messageId, callback); + + args.push(callback as never); + } + + const response = typeof api === 'function' ? await api(name, ...args) : await api[name](...args); + const { arrayBuffer } = (typeof response === 'object' && 'arrayBuffer' in response && response) || {}; + + if (messageId) { + sendToOrigin( + { + type: 'methodResponse', + messageId, + response, + }, + arrayBuffer ? [arrayBuffer] : undefined, + ); + } + } catch (error: any) { + if (DEBUG) { + // eslint-disable-next-line no-console + console.error(error); + } + + if (messageId) { + sendToOrigin({ + type: 'methodResponse', + messageId, + error: { message: error.message }, + }); + } + } + + if (messageId) { + callbackState.delete(messageId); + } + + break; + } + case 'cancelProgress': { + const callback = callbackState.get(data.messageId); + if (callback) { + callback.isCanceled = true; + } + + break; + } + } +} + +function handleErrors(sendToOrigin: SendToOrigin) { + self.onerror = (e) => { + // eslint-disable-next-line no-console + console.error(e); + sendToOrigin({ type: 'unhandledError', error: { message: e.error.message || 'Uncaught exception in worker' } }); + }; + + self.addEventListener('unhandledrejection', (e) => { + // eslint-disable-next-line no-console + console.error(e); + sendToOrigin({ type: 'unhandledError', error: { message: e.reason.message || 'Uncaught rejection in worker' } }); + }); +} diff --git a/src/util/cssAnimationEndListeners.ts b/src/util/cssAnimationEndListeners.ts new file mode 100644 index 00000000..23fe5147 --- /dev/null +++ b/src/util/cssAnimationEndListeners.ts @@ -0,0 +1,40 @@ +// Sometimes event is fired earlier than animation completes +const ANIMATION_END_DELAY = 50; + +export function waitForTransitionEnd(node: Node, handler: NoneToVoidFunction, propertyName?: string) { + waitForEndEvent('transitionend', node, handler, propertyName); +} + +export function waitForAnimationEnd(node: Node, handler: NoneToVoidFunction, animationName?: string) { + waitForEndEvent('animationend', node, handler, animationName); +} + +function waitForEndEvent( + eventType: 'transitionend' | 'animationend', + node: Node, + handler: NoneToVoidFunction, + detailedName?: string, +) { + let isHandled = false; + + node.addEventListener(eventType, function handleAnimationEnd(e: TransitionEvent | AnimationEvent) { + if (isHandled || e.target !== e.currentTarget) { + return; + } + + if (detailedName && ( + (e instanceof TransitionEvent && e.propertyName === detailedName) + || (e instanceof AnimationEvent && e.animationName === detailedName) + )) { + return; + } + + isHandled = true; + + node.removeEventListener(eventType, handleAnimationEnd as EventListener); + + setTimeout(() => { + handler(); + }, ANIMATION_END_DELAY); + } as EventListener); +} diff --git a/src/util/cycleRestrict.ts b/src/util/cycleRestrict.ts new file mode 100644 index 00000000..e9d14b43 --- /dev/null +++ b/src/util/cycleRestrict.ts @@ -0,0 +1,3 @@ +export default function cycleRestrict(length: number, index: number) { + return index - Math.floor(index / length) * length; +} diff --git a/src/util/dateFormat.ts b/src/util/dateFormat.ts new file mode 100644 index 00000000..343e9caa --- /dev/null +++ b/src/util/dateFormat.ts @@ -0,0 +1,65 @@ +import withCache from './withCache'; + +const formatDayToStringWithCache = withCache(( + dayStartAt: number, + noYear?: boolean, + monthFormat: 'short' | 'long' | 'numeric' = 'short', + noDay?: boolean, +) => { + return new Date(dayStartAt).toLocaleString( + 'en-US', + { + year: noYear ? undefined : 'numeric', + month: monthFormat, + day: noDay ? undefined : 'numeric', + }, + ); +}); + +export function formatHumanDay(datetime: string | number) { + if (isToday(datetime)) { + return 'Today'; + } + + if (isYesterday(datetime)) { + return 'Yesterday'; + } + + return formatFullDay(datetime); +} + +export function formatFullDay(datetime: string | number) { + const date = new Date(datetime); + const dayStartAt = getDayStartAt(new Date(datetime)); + const today = getDayStart(new Date()); + const noYear = date.getFullYear() === today.getFullYear(); + + return formatDayToStringWithCache(dayStartAt, noYear, 'long'); +} + +export function formatTime(datetime: string | number) { + const date = new Date(datetime); + + return `${String(date.getHours()).padStart(2, '0')}:${String(date.getMinutes()).padStart(2, '0')}`; +} + +export function getDayStart(datetime: number | Date) { + const date = new Date(datetime); + date.setHours(0, 0, 0, 0); + return date; +} + +export function getDayStartAt(datetime: number | Date) { + return getDayStart(datetime).getTime(); +} + +function isToday(datetime: string | number) { + return getDayStartAt(new Date()) === getDayStartAt(new Date(datetime)); +} + +function isYesterday(datetime: string | number) { + const yesterday = new Date(); + yesterday.setDate(yesterday.getDate() - 1); + + return getDayStartAt(yesterday) === getDayStartAt(new Date(datetime)); +} diff --git a/src/util/environment.ts b/src/util/environment.ts new file mode 100644 index 00000000..b711c01e --- /dev/null +++ b/src/util/environment.ts @@ -0,0 +1,42 @@ +import { + MOBILE_SCREEN_MAX_WIDTH, + MOBILE_SCREEN_LANDSCAPE_MAX_HEIGHT, + MOBILE_SCREEN_LANDSCAPE_MAX_WIDTH, +} from '../config'; + +export function getPlatform() { + const { userAgent, platform } = window.navigator; + const macosPlatforms = ['Macintosh', 'MacIntel', 'MacPPC', 'Mac68K']; + const windowsPlatforms = ['Win32', 'Win64', 'Windows', 'WinCE']; + const iosPlatforms = ['iPhone', 'iPad', 'iPod']; + let os: 'macOS' | 'iOS' | 'Windows' | 'Android' | 'Linux' | undefined; + + if (macosPlatforms.indexOf(platform) !== -1) { + os = 'macOS'; + } else if (iosPlatforms.indexOf(platform) !== -1) { + os = 'iOS'; + } else if (windowsPlatforms.indexOf(platform) !== -1) { + os = 'Windows'; + } else if (/Android/.test(userAgent)) { + os = 'Android'; + } else if (/Linux/.test(platform)) { + os = 'Linux'; + } + + return os; +} + +export const PLATFORM_ENV = getPlatform(); +export const IS_MAC_OS = PLATFORM_ENV === 'macOS'; +export const IS_IOS = PLATFORM_ENV === 'iOS'; +export const IS_ANDROID = PLATFORM_ENV === 'Android'; +export const IS_SAFARI = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); +export const IS_TOUCH_ENV = window.matchMedia('(pointer: coarse)').matches; +export const IS_EXTENSION = Boolean(window.chrome && chrome.runtime && chrome.runtime.id); + +// Keep in mind the landscape orientation +export const IS_SINGLE_COLUMN_LAYOUT = window.innerWidth <= MOBILE_SCREEN_MAX_WIDTH || ( + window.innerWidth <= MOBILE_SCREEN_LANDSCAPE_MAX_WIDTH && window.innerHeight <= MOBILE_SCREEN_LANDSCAPE_MAX_HEIGHT +); + +export const DPR = window.devicePixelRatio || 1; diff --git a/src/util/fastSmoothScrollHorizontal.ts b/src/util/fastSmoothScrollHorizontal.ts new file mode 100644 index 00000000..d739bbae --- /dev/null +++ b/src/util/fastSmoothScrollHorizontal.ts @@ -0,0 +1,54 @@ +import { animate } from './animation'; +import { fastRaf } from './schedulers'; + +const DEFAULT_DURATION = 300; + +export default function fastSmoothScrollHorizontal(container: HTMLElement, left: number, duration = DEFAULT_DURATION) { + // if (getGlobal().settings.byKey.animationLevel === ANIMATION_LEVEL_MIN) { + // duration = 0; + // } + + scrollWithJs(container, left, duration); +} + +function scrollWithJs(container: HTMLElement, left: number, duration: number) { + const isRtl = container.getAttribute('dir') === 'rtl'; + const { scrollLeft, offsetWidth: containerWidth, scrollWidth } = container; + let path = left - scrollLeft; + + if (path < 0) { + const remainingPath = -scrollLeft * (isRtl ? -1 : 1); + path = Math.max(path, remainingPath); + } else if (path > 0) { + const remainingPath = scrollWidth - (scrollLeft + containerWidth); + path = Math.min(path, remainingPath); + } + + if (path === 0) { + return; + } + + const target = scrollLeft + path; + + if (duration === 0) { + container.scrollLeft = target; + return; + } + + const startAt = Date.now(); + + fastRaf(() => { + animate(() => { + const t = Math.min((Date.now() - startAt) / duration, 1); + + const currentPath = path * (1 - transition(t)); + container.scrollLeft = Math.round(target - currentPath); + + return t < 1; + }); + }); +} + +function transition(t: number) { + return 1 - ((1 - t) ** 3.5); +} diff --git a/src/util/forceReflow.ts b/src/util/forceReflow.ts new file mode 100644 index 00000000..8d5c72ee --- /dev/null +++ b/src/util/forceReflow.ts @@ -0,0 +1,5 @@ +// Used before applying CSS transition +export default function forceReflow(element: HTMLElement) { + // eslint-disable-next-line @typescript-eslint/no-unused-expressions + element.offsetWidth; +} diff --git a/src/util/formatNumber.ts b/src/util/formatNumber.ts new file mode 100644 index 00000000..6bc15111 --- /dev/null +++ b/src/util/formatNumber.ts @@ -0,0 +1,29 @@ +import withCache from './withCache'; + +export const formatInteger = withCache((value: number, fractionDigits = 2) => { + const fixed = value.toFixed(Math.min(fractionDigits, 100)); + let [wholePart, fractionPart] = fixed.split('.'); + + fractionPart = fractionPart.replace(/0+$/, ''); + if (fractionPart === '') { + wholePart = wholePart.replace(/^-0$/, '0'); + } + wholePart = wholePart.replace(/\d(?=(\d{3})+($|\.))/g, '$&,'); + + return [ + wholePart, + fractionPart, + ].filter(Boolean).join('.'); +}); + +export function formatCurrency(value: number, currency: string, fractionDigits?: number) { + const formatted = formatInteger(value, fractionDigits); + return currency === '$' ? `$${formatted}` : `${formatted} ${currency}`; +} + +export function formatCurrencyExtended(value: number, currency: string, noSign = false) { + const integerLength = String(Math.round(value)).length; + const prefix = !noSign ? (value > 0 ? '+\u202F' : '\u2212\u202F') : ''; + + return prefix + formatCurrency(noSign ? value : Math.abs(value), currency, 10 - integerLength); +} diff --git a/src/util/generateIdFor.ts b/src/util/generateIdFor.ts new file mode 100644 index 00000000..2dda752e --- /dev/null +++ b/src/util/generateIdFor.ts @@ -0,0 +1,11 @@ +const generateIdFor = (store: AnyLiteral) => { + let id; + + do { + id = String(Math.random()).replace('0.', 'id'); + } while (store.hasOwnProperty(id)); + + return id; +}; + +export default generateIdFor; diff --git a/src/util/handleError.ts b/src/util/handleError.ts new file mode 100644 index 00000000..bcde4f00 --- /dev/null +++ b/src/util/handleError.ts @@ -0,0 +1,30 @@ +import { DEBUG_ALERT_MSG } from '../config'; +import { throttle } from './schedulers'; + +window.addEventListener('error', handleErrorEvent); +window.addEventListener('unhandledrejection', handleErrorEvent); + +// eslint-disable-next-line prefer-destructuring +const APP_ENV = process.env.APP_ENV; + +function handleErrorEvent(e: ErrorEvent | PromiseRejectionEvent) { + // https://stackoverflow.com/questions/49384120/resizeobserver-loop-limit-exceeded + if (e instanceof ErrorEvent && e.message === 'ResizeObserver loop limit exceeded') { + return; + } + + e.preventDefault(); + + handleError(e instanceof ErrorEvent ? (e.error || e.message) : e.reason); +} + +const throttledAlert = throttle(window.alert, 1000); + +export function handleError(err: Error) { + // eslint-disable-next-line no-console + console.error(err); + + if (APP_ENV === 'development' || APP_ENV === 'staging') { + throttledAlert(`${DEBUG_ALERT_MSG}\n\n${(err?.message) || err}\n${err?.stack}`); + } +} diff --git a/src/util/iteratees.ts b/src/util/iteratees.ts new file mode 100644 index 00000000..a84190d1 --- /dev/null +++ b/src/util/iteratees.ts @@ -0,0 +1,152 @@ +type CollectionByKey = Record; + +type OrderDirection = + 'asc' + | 'desc'; + +interface OrderCallback { + (member: T): any; +} + +export function buildCollectionByKey(collection: T[], key: keyof T) { + return collection.reduce((byKey: CollectionByKey, member: T) => { + byKey[member[key]] = member; + + return byKey; + }, {}); +} + +export function mapValues( + byKey: CollectionByKey, + callback: (member: M, key: string, index: number, originalByKey: CollectionByKey) => R, +): CollectionByKey { + return Object.keys(byKey).reduce((newByKey: CollectionByKey, key, index) => { + newByKey[key] = callback(byKey[key], key, index, byKey); + return newByKey; + }, {}); +} + +export function pick(object: T, keys: K[]) { + return keys.reduce((result, key) => { + result[key] = object[key]; + return result; + }, {} as Pick); +} + +export function pickTruthy(object: T, keys: K[]) { + return keys.reduce((result, key) => { + if (object[key]) { + result[key] = object[key]; + } + + return result; + }, {} as Pick); +} + +export function omit(object: T, keys: K[]) { + const stringKeys = new Set(keys.map(String)); + const savedKeys = Object.keys(object) + .filter((key) => !stringKeys.has(key)) as Array>; + + return pick(object, savedKeys); +} + +export function orderBy( + collection: T[], + orderRule: (keyof T) | OrderCallback | ((keyof T) | OrderCallback)[], + mode: OrderDirection | [OrderDirection, OrderDirection] = 'asc', +): T[] { + function compareValues(a: T, b: T, currentOrderRule: (keyof T) | OrderCallback, isAsc: boolean) { + const aValue = (typeof currentOrderRule === 'function' ? currentOrderRule(a) : a[currentOrderRule]) || 0; + const bValue = (typeof currentOrderRule === 'function' ? currentOrderRule(b) : b[currentOrderRule]) || 0; + + return isAsc ? aValue - bValue : bValue - aValue; + } + + if (Array.isArray(orderRule)) { + const [mode1, mode2] = Array.isArray(mode) ? mode : [mode, mode]; + const [orderRule1, orderRule2] = orderRule; + const isAsc1 = mode1 === 'asc'; + const isAsc2 = mode2 === 'asc'; + + return collection.sort((a, b) => { + return compareValues(a, b, orderRule1, isAsc1) || compareValues(a, b, orderRule2, isAsc2); + }); + } + + const isAsc = mode === 'asc'; + return collection.sort((a, b) => { + return compareValues(a, b, orderRule, isAsc); + }); +} + +export function flatten(array: any[]) { + return array.reduce((result, member) => { + if (Array.isArray(member)) { + return result.concat(member); + } else { + result.push(member); + return result; + } + }, []); +} + +export function unique(array: T[]): T[] { + return Array.from(new Set(array)); +} + +export function compact(array: T[]) { + return array.filter(Boolean); +} + +export function areSortedArraysEqual(array1: any[], array2: any[]) { + if (array1.length !== array2.length) { + return false; + } + + return array1.every((item, i) => item === array2[i]); +} + +export function areSortedArraysIntersecting(array1: any[], array2: any[]) { + return array1[0] <= array2[array2.length - 1] && array1[array1.length - 1] >= array2[0]; +} + +export function findIntersectionWithSet(array: T[], set: Set): T[] { + return array.filter((a) => set.has(a)); +} + +export function split(array: any[], chunkSize: number) { + const result = []; + for (let i = 0; i < array.length; i += chunkSize) { + result.push(array.slice(i, i + chunkSize)); + } + + return result; +} + +export function cloneDeep(value: T): T { + if (typeof value !== 'object') { + return value; + } + + if (Array.isArray(value)) { + return value.map(cloneDeep) as typeof value; + } + + return Object.keys(value).reduce((acc, key) => { + acc[key as keyof T] = cloneDeep(value[key as keyof T]); + return acc; + }, {} as T); +} + +export function findLast(array: Array, predicate: (value: T, index: number, obj: T[]) => boolean): T | undefined { + let cursor = array.length; + + while (cursor--) { + if (predicate(array[cursor], cursor, array)) { + return array[cursor]; + } + } + + return undefined; +} diff --git a/src/util/memoized.ts b/src/util/memoized.ts new file mode 100644 index 00000000..db868ed4 --- /dev/null +++ b/src/util/memoized.ts @@ -0,0 +1,19 @@ +import { areSortedArraysEqual } from './iteratees'; + +const cache = new WeakMap(); + +export default function memoized(fn: T) { + return (...args: Parameters): ReturnType => { + const cached = cache.get(fn); + if (cached && areSortedArraysEqual(cached.lastArgs, args)) { + return cached.lastResult; + } + + const result = fn(...args); + cache.set(fn, { lastArgs: args, lastResult: result }); + return result; + }; +} diff --git a/src/util/round.ts b/src/util/round.ts new file mode 100644 index 00000000..aaba75aa --- /dev/null +++ b/src/util/round.ts @@ -0,0 +1,3 @@ +export function round(value: number, precision = 0) { + return parseFloat(value.toFixed(precision)); +} diff --git a/src/util/saveCaretPosition.ts b/src/util/saveCaretPosition.ts new file mode 100644 index 00000000..12871a1c --- /dev/null +++ b/src/util/saveCaretPosition.ts @@ -0,0 +1,41 @@ +export function saveCaretPosition(context: HTMLElement) { + const selection = window.getSelection(); + if (!selection || selection.rangeCount === 0) { + return undefined; + } + + const range = selection.getRangeAt(0); + range.setStart(context, 0); + const len = range.toString().length || 0; + + return function restore() { + try { + const pos = getTextNodeAtPosition(context, len); + selection.removeAllRanges(); + const newRange = new Range(); + newRange.setStart(pos.node, pos.position); + selection.addRange(newRange); + } catch (e) { + // ignore + } + }; +} + +function getTextNodeAtPosition(root: HTMLElement, index: number) { + const NODE_TYPE = NodeFilter.SHOW_TEXT; + const treeWalker = document.createTreeWalker(root, NODE_TYPE, (elem) => { + if (index > elem.textContent!.length) { + index -= elem.textContent!.length; + return NodeFilter.FILTER_REJECT; + } + + return NodeFilter.FILTER_ACCEPT; + }); + + const node = treeWalker.nextNode(); + + return { + node: node || root, + position: index, + }; +} diff --git a/src/util/schedulers.ts b/src/util/schedulers.ts new file mode 100644 index 00000000..cffd92d9 --- /dev/null +++ b/src/util/schedulers.ts @@ -0,0 +1,192 @@ +type Scheduler = + typeof requestAnimationFrame + | typeof onTickEnd; + +export function debounce( + fn: F, + ms: number, + shouldRunFirst = true, + shouldRunLast = true, +) { + let waitingTimeout: number | undefined; + + return (...args: Parameters) => { + if (waitingTimeout) { + clearTimeout(waitingTimeout); + waitingTimeout = undefined; + } else if (shouldRunFirst) { + fn(...args); + } + + // eslint-disable-next-line no-restricted-globals + waitingTimeout = self.setTimeout(() => { + if (shouldRunLast) { + fn(...args); + } + + waitingTimeout = undefined; + }, ms); + }; +} + +export function throttle( + fn: F, + ms: number, + shouldRunFirst = true, +) { + let interval: number | undefined; + let isPending: boolean; + let args: Parameters; + + return (..._args: Parameters) => { + isPending = true; + args = _args; + + if (!interval) { + if (shouldRunFirst) { + isPending = false; + fn(...args); + } + + // eslint-disable-next-line no-restricted-globals + interval = self.setInterval(() => { + if (!isPending) { + // eslint-disable-next-line no-restricted-globals + self.clearInterval(interval!); + interval = undefined; + return; + } + + isPending = false; + fn(...args); + }, ms); + } + }; +} + +export function throttleWithRaf(fn: F) { + return throttleWith(fastRaf, fn); +} + +export function throttleWithPrimaryRaf(fn: F) { + return throttleWith(fastRafPrimary, fn); +} + +export function throttleWithTickEnd(fn: F) { + return throttleWith(onTickEnd, fn); +} + +export function throttleWith(schedulerFn: Scheduler, fn: F) { + let waiting = false; + let args: Parameters; + + return (..._args: Parameters) => { + args = _args; + + if (!waiting) { + waiting = true; + + schedulerFn(() => { + waiting = false; + fn(...args); + }); + } + }; +} + +export function onIdle(cb: NoneToVoidFunction, timeout?: number) { + // eslint-disable-next-line no-restricted-globals + if (self.requestIdleCallback) { + // eslint-disable-next-line no-restricted-globals + self.requestIdleCallback(cb, { timeout }); + } else { + onTickEnd(cb); + } +} + +export const pause = (ms: number) => new Promise((resolve) => { + setTimeout(() => resolve(), ms); +}); + +export function rafPromise() { + return new Promise((resolve) => { + fastRaf(resolve); + }); +} + +let fastRafCallbacks: NoneToVoidFunction[] | undefined; +let fastRafPrimaryCallbacks: NoneToVoidFunction[] | undefined; + +// May result in an immediate execution if called from another `requestAnimationFrame` callback +export function fastRaf(callback: NoneToVoidFunction, isPrimary = false) { + if (!fastRafCallbacks) { + fastRafCallbacks = isPrimary ? [] : [callback]; + fastRafPrimaryCallbacks = isPrimary ? [callback] : []; + + requestAnimationFrame(() => { + const currentCallbacks = fastRafCallbacks!; + const currentPrimaryCallbacks = fastRafPrimaryCallbacks!; + fastRafCallbacks = undefined; + fastRafPrimaryCallbacks = undefined; + currentPrimaryCallbacks.forEach((cb) => cb()); + currentCallbacks.forEach((cb) => cb()); + }); + } else if (isPrimary) { + fastRafPrimaryCallbacks!.push(callback); + } else { + fastRafCallbacks.push(callback); + } +} + +export function fastRafPrimary(callback: NoneToVoidFunction) { + fastRaf(callback, true); +} + +let onTickEndCallbacks: NoneToVoidFunction[] | undefined; +let onTickEndPrimaryCallbacks: NoneToVoidFunction[] | undefined; + +export function onTickEnd(callback: NoneToVoidFunction, isPrimary = false) { + if (!onTickEndCallbacks) { + onTickEndCallbacks = isPrimary ? [] : [callback]; + onTickEndPrimaryCallbacks = isPrimary ? [callback] : []; + + Promise.resolve().then(() => { + const currentCallbacks = onTickEndCallbacks!; + const currentPrimaryCallbacks = onTickEndPrimaryCallbacks!; + onTickEndCallbacks = undefined; + onTickEndPrimaryCallbacks = undefined; + currentPrimaryCallbacks.forEach((cb) => cb()); + currentCallbacks.forEach((cb) => cb()); + }); + } else if (isPrimary) { + onTickEndPrimaryCallbacks!.push(callback); + } else { + onTickEndCallbacks.push(callback); + } +} + +export function onTickEndPrimary(callback: NoneToVoidFunction) { + onTickEnd(callback, true); +} + +let beforeUnloadCallbacks: NoneToVoidFunction[] | undefined; + +export function onBeforeUnload(callback: NoneToVoidFunction, isLast = false) { + if (!beforeUnloadCallbacks) { + beforeUnloadCallbacks = []; + // eslint-disable-next-line no-restricted-globals + self.addEventListener('beforeunload', () => { + beforeUnloadCallbacks!.forEach((cb) => cb()); + }); + } + + if (isLast) { + beforeUnloadCallbacks.push(callback); + } else { + beforeUnloadCallbacks.unshift(callback); + } + + return () => { + beforeUnloadCallbacks = beforeUnloadCallbacks!.filter((cb) => cb !== callback); + }; +} diff --git a/src/util/shortenAddress.ts b/src/util/shortenAddress.ts new file mode 100644 index 00000000..cf8c9999 --- /dev/null +++ b/src/util/shortenAddress.ts @@ -0,0 +1,9 @@ +import withCache from './withCache'; + +const DEFAULT_SHIFT = 6; + +export const shortenAddress = withCache((address: string, shift = DEFAULT_SHIFT, fromRight = shift) => { + if (!address) return undefined; + + return `${address.slice(0, shift)}...${address.slice(-fromRight)}`; +}); diff --git a/src/util/trapFocus.ts b/src/util/trapFocus.ts new file mode 100644 index 00000000..29746f7d --- /dev/null +++ b/src/util/trapFocus.ts @@ -0,0 +1,39 @@ +export default function trapFocus(element: HTMLElement) { + function handleKeyDown(e: KeyboardEvent) { + if (e.key !== 'Tab') { + return; + } + + e.preventDefault(); + e.stopPropagation(); + + const focusableElements = Array.from( + element.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'), + ) as HTMLElement[]; + if (!focusableElements.length) { + return; + } + + const currentFocusedIndex = focusableElements.findIndex((em) => em.isSameNode(document.activeElement)); + let newFocusedIndex = 0; + if (currentFocusedIndex >= 0) { + if (e.shiftKey) { + newFocusedIndex = currentFocusedIndex > 0 + ? currentFocusedIndex - 1 + : focusableElements.length - 1; + } else { + newFocusedIndex = currentFocusedIndex < focusableElements.length - 1 + ? currentFocusedIndex + 1 + : 0; + } + } + + focusableElements[newFocusedIndex].focus(); + } + + document.addEventListener('keydown', handleKeyDown, false); + + return () => { + document.removeEventListener('keydown', handleKeyDown, false); + }; +} diff --git a/src/util/windowSize.ts b/src/util/windowSize.ts new file mode 100644 index 00000000..2ac6e716 --- /dev/null +++ b/src/util/windowSize.ts @@ -0,0 +1,20 @@ +import { IS_IOS } from './environment'; + +window.addEventListener('orientationchange', updateSizes); +if (IS_IOS) { + window.visualViewport.addEventListener('resize', updateSizes); +} else { + window.addEventListener('resize', updateSizes); +} + +export function updateSizes() { + let height: number; + if (IS_IOS) { + height = window.visualViewport.height + window.visualViewport.pageTop; + } else { + height = window.innerHeight; + } + const vh = height * 0.01; + + document.documentElement.style.setProperty('--vh', `${vh}px`); +} diff --git a/src/util/withCache.ts b/src/util/withCache.ts new file mode 100644 index 00000000..5041a586 --- /dev/null +++ b/src/util/withCache.ts @@ -0,0 +1,24 @@ +const cache = new WeakMap>(); + +export default function withCache(fn: T) { + return (...args: Parameters): ReturnType => { + let fnCache = cache.get(fn); + const cacheKey = args.map(String).join('_'); + + if (fnCache) { + const cached = fnCache.get(cacheKey); + if (cached) { + return cached; + } + } else { + fnCache = new Map(); + cache.set(fn, fnCache); + } + + const newValue = fn(...args); + + fnCache.set(cacheKey, newValue); + + return newValue; + }; +} diff --git a/tests/init.js b/tests/init.js new file mode 100644 index 00000000..60e671e1 --- /dev/null +++ b/tests/init.js @@ -0,0 +1,58 @@ +import '@testing-library/jest-dom'; + +import { Buffer } from 'buffer/'; +import { Crypto } from '@peculiar/webcrypto'; + +require('dotenv') + .config(); + +jest.mock('../src/api/gramjs/worker/provider'); +jest.mock('../src/util/oggToWav'); +jest.mock('../src/util/webpToPng'); +jest.mock('../src/util/voiceRecording'); +jest.mock('../src/lib/rlottie/RLottie'); + +Object.assign(global, { + Buffer, + crypto: new Crypto(), +}); + +Object.defineProperty(window, 'matchMedia', { + writable: true, + value: jest.fn() + .mockImplementation((query) => ({ + matches: false, + media: query, + onchange: null, + addListener: jest.fn(), // Deprecated + removeListener: jest.fn(), // Deprecated + addEventListener: jest.fn(), + removeEventListener: jest.fn(), + dispatchEvent: jest.fn(), + })), +}); + +Object.defineProperty(global.Element.prototype, 'innerText', { + get() { + const el = this.cloneNode(true); // can skip if mutability isn't a concern + el.querySelectorAll('script,style') + .forEach((s) => s.remove()); + return el.textContent; + }, + configurable: true, // make it so that it doesn't blow chunks on re-running tests with things like --watch +}); + +Object.defineProperty(global, 'IntersectionObserver', { + writable: true, + configurable: true, + value: class { + observe() { + } + + unobserve() { + } + + disconnect() { + } + }, +}); diff --git a/tests/initApp.tsx b/tests/initApp.tsx new file mode 100644 index 00000000..1f88e932 --- /dev/null +++ b/tests/initApp.tsx @@ -0,0 +1,23 @@ +import React from '../src/lib/teact/teact'; +import TeactDOM from '../src/lib/teact/teact-dom'; + +import '../src/global/init'; +import { getActions } from '../src/lib/teact/teactn'; +import Main from '../src/components/main/Main'; + +const initApp = () => { + return new Promise(() => { + const root = document.createElement('div'); + document.body.appendChild(root); + + getActions().init(); + getActions().initApi(); + + TeactDOM.render( +

    , + root, + ); + }); +}; + +export default initApp; diff --git a/tests/staticFileMock.js b/tests/staticFileMock.js new file mode 100644 index 00000000..b2b70519 --- /dev/null +++ b/tests/staticFileMock.js @@ -0,0 +1,2 @@ +// This fixed an error related to the CSS and loading gif breaking my Jest test +module.exports = 'test-file-stub'; diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..13c7bc29 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,29 @@ +{ + "compilerOptions": { + // We don't care about this since Webpack runs Babel after TypeScript + "target": "esnext", + "lib": [ + "dom", + "dom.iterable", + "webworker", + "es2019" + ], + "allowJs": true, + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react" + }, + "include": [ + "src", + "tests", + "plugins", + ] +} diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 00000000..c10791eb --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,220 @@ +const path = require('path'); +const dotenv = require('dotenv'); + +const { + DefinePlugin, + EnvironmentPlugin, + ProvidePlugin, + NormalModuleReplacementPlugin, +} = require('webpack'); +const HtmlPlugin = require('html-webpack-plugin'); +const MiniCssExtractPlugin = require('mini-css-extract-plugin'); +const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer'); +const { GitRevisionPlugin } = require('git-revision-webpack-plugin'); +const CopyWebpackPlugin = require('copy-webpack-plugin'); + +const { + HEAD, + ENV_EXTENSION, +} = process.env; + +const gitRevisionPlugin = new GitRevisionPlugin(); +const branch = HEAD || gitRevisionPlugin.branch(); +const appRevision = (!branch || branch === 'HEAD') ? gitRevisionPlugin.commithash().substring(0, 7) : branch; +const appVersion = require('./package.json').version; + +dotenv.config(); + +module.exports = (_env, { mode = 'production' }) => { + return { + mode, + target: 'web', + + entry: { + main: './src/index.tsx', + extensionServiceWorker: './src/extension/serviceWorker.ts', + extensionContentScript: './src/extension/contentScript.ts', + extensionProvider: './src/extension/provider.ts', + }, + + devServer: { + port: 4321, + host: '0.0.0.0', + allowedHosts: 'all', + hot: false, + static: [ + { + directory: path.resolve(__dirname, 'public'), + }, + { + directory: path.resolve(__dirname, 'node_modules/emoji-data-ios'), + }, + { + directory: path.resolve(__dirname, 'node_modules/opus-recorder/dist'), + }, + { + directory: path.resolve(__dirname, 'src/lib/webp'), + }, + { + directory: path.resolve(__dirname, 'src/lib/rlottie'), + }, + { + directory: path.resolve(__dirname, 'src/lib/secret-sauce'), + }, + ], + devMiddleware: { + stats: 'minimal', + }, + }, + + output: { + filename: (pathData) => (pathData.chunk.name.startsWith('extension') ? '[name].js' : '[name].[contenthash].js'), + chunkFilename: '[id].[chunkhash].js', + assetModuleFilename: '[name].[contenthash][ext]', + path: path.resolve(__dirname, 'dist'), + clean: true, + }, + + module: { + rules: [ + { + test: /\.(ts|tsx|js)$/, + loader: 'babel-loader', + exclude: /node_modules/, + }, + { + test: /\.css$/, + use: [ + MiniCssExtractPlugin.loader, + { + loader: 'css-loader', + options: { + importLoaders: 1, + }, + }, + 'postcss-loader', + ], + }, + { + test: /\.module\.scss$/, + use: [ + MiniCssExtractPlugin.loader, + { + loader: 'css-loader', + options: { + modules: { + exportLocalsConvention: 'camelCase', + auto: true, + localIdentName: mode === 'production' ? '[hash:base64]' : '[name]__[local]', + }, + }, + }, + 'postcss-loader', + 'sass-loader', + ], + }, + { + test: /\.scss$/, + exclude: /\.module\.scss$/, + use: [ + MiniCssExtractPlugin.loader, + 'css-loader', + 'postcss-loader', + 'sass-loader', + ], + }, + { + test: /\.(woff(2)?|ttf|eot|svg|png|jpg|tgs)(\?v=\d+\.\d+\.\d+)?$/, + type: 'asset/resource', + }, + { + test: /\.wasm$/, + type: 'asset/resource', + }, + { + test: /\.(txt|tl)$/i, + type: 'asset/source', + }, + ], + }, + + resolve: { + extensions: ['.js', '.ts', '.tsx'], + }, + + plugins: [ + new HtmlPlugin({ + template: 'src/index.html', + chunks: ['main'], + }), + new MiniCssExtractPlugin({ + filename: '[name].[contenthash].css', + chunkFilename: '[name].[chunkhash].css', + ignoreOrder: true, + }), + new EnvironmentPlugin({ + APP_ENV: 'production', + APP_MOCKED_CLIENT: '', + APP_NAME: null, + APP_VERSION: appVersion, + APP_REVISION: appRevision, + TEST_SESSION: null, + TONWEB_API_KEY: undefined, + TONWEB_TESTNET_API_KEY: null, + TONWEB_MAINNET_API_URL: null, + TONWEB_TESTNET_API_URL: null, + BRILLIANT_API_BASE_URL: null, + TONAPIIO_SERVER_KEY: null, + TONAPIIO_BASE_URL: null, + PROXY: null, + }), + new DefinePlugin({ + APP_REVISION: DefinePlugin.runtimeValue(() => { + const { + branch, + commit, + } = getGitMetadata(); + return JSON.stringify((!branch || branch === 'HEAD') ? commit : branch); + }, mode === 'development' ? true : []), + }), + new ProvidePlugin({ + Buffer: ['buffer', 'Buffer'], + }), + new CopyWebpackPlugin({ + patterns: [{ + from: 'src/extension/manifest.json', + transform: (content) => content.toString().replace('%%VERSION%%', appVersion), + }], + }), + ...(mode === 'production' ? [ + new BundleAnalyzerPlugin({ + analyzerMode: 'static', + openAnalyzer: false, + }), + ] : []), + ...(ENV_EXTENSION === '1' ? [new NormalModuleReplacementPlugin( + /src\/api\/providers\/worker\/index\.ts/, + '../extension/index.ts', + )] : []), + ], + + devtool: ENV_EXTENSION === '1' ? 'cheap-source-map' : 'source-map', + + ...(ENV_EXTENSION === '1' && { + optimization: { + minimize: false, + }, + }), + }; +}; + +function getGitMetadata() { + const gitRevisionPlugin = new GitRevisionPlugin(); + const branch = HEAD || gitRevisionPlugin.branch(); + const commit = gitRevisionPlugin.commithash().substring(0, 7); + + return { + branch, + commit, + }; +}