From 53742d0134e163025932ae54d57322573eb157af Mon Sep 17 00:00:00 2001 From: Arkaprabha Chakraborty Date: Wed, 18 Feb 2026 13:16:51 +0530 Subject: [PATCH] init --- .eslintrc.js | 4 + .github/workflows/build-release-android.yml | 139 + .gitignore | 117 + .prettierrc.js | 5 + .watchmanconfig | 1 + App.tsx | 98 + Gemfile | 16 + README.md | 97 + __tests__/App.test.tsx | 13 + android/app/build.gradle | 151 + android/app/debug.keystore | Bin 0 -> 2257 bytes android/app/proguard-rules.pro | 47 + android/app/src/main/AndroidManifest.xml | 27 + .../main/java/com/expensso/MainActivity.kt | 22 + .../main/java/com/expensso/MainApplication.kt | 27 + .../res/drawable/rn_edit_text_material.xml | 37 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 5844 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 5844 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 3276 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 3276 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 8713 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 8713 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 15358 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 15358 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 22918 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 22918 bytes android/app/src/main/res/values/strings.xml | 3 + android/app/src/main/res/values/styles.xml | 9 + android/build.gradle | 21 + android/gradle.properties | 44 + android/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 45457 bytes .../gradle/wrapper/gradle-wrapper.properties | 7 + android/gradlew | 251 + android/gradlew.bat | 99 + android/settings.gradle | 6 + app.json | 4 + assets/app-icon.png | Bin 0 -> 117460 bytes babel.config.js | 6 + index.js | 9 + ios/.xcode.env | 11 + ios/Expensso.xcodeproj/project.pbxproj | 475 + .../xcshareddata/xcschemes/Expensso.xcscheme | 88 + ios/Expensso/AppDelegate.swift | 48 + .../AppIcon.appiconset/Contents.json | 62 + .../AppIcon.appiconset/Icon-1024.png | Bin 0 -> 264691 bytes .../AppIcon.appiconset/Icon-20@2x.png | Bin 0 -> 2565 bytes .../AppIcon.appiconset/Icon-20@3x.png | Bin 0 -> 4445 bytes .../AppIcon.appiconset/Icon-29@2x.png | Bin 0 -> 4284 bytes .../AppIcon.appiconset/Icon-29@3x.png | Bin 0 -> 7592 bytes .../AppIcon.appiconset/Icon-40@2x.png | Bin 0 -> 6685 bytes .../AppIcon.appiconset/Icon-40@3x.png | Bin 0 -> 11810 bytes .../AppIcon.appiconset/Icon-60@2x.png | Bin 0 -> 11810 bytes .../AppIcon.appiconset/Icon-60@3x.png | Bin 0 -> 20906 bytes ios/Expensso/Images.xcassets/Contents.json | 6 + ios/Expensso/Info.plist | 59 + ios/Expensso/LaunchScreen.storyboard | 47 + ios/Expensso/PrivacyInfo.xcprivacy | 37 + ios/Podfile | 34 + jest.config.js | 3 + metro.config.js | 11 + package-lock.json | 13673 ++++++++++++++++ package.json | 70 + src/components/CustomBottomSheet.tsx | 433 + src/components/EmptyState.tsx | 43 + src/components/SectionHeader.tsx | 54 + src/components/SummaryCard.tsx | 69 + src/components/TransactionItem.tsx | 106 + src/components/dashboard/AssetChipRow.tsx | 164 + .../dashboard/FinancialHealthGauges.tsx | 277 + src/components/dashboard/NetWorthHeroCard.tsx | 200 + .../dashboard/RecentActivityList.tsx | 223 + .../dashboard/WealthDistributionChart.tsx | 181 + src/components/dashboard/index.ts | 5 + src/components/index.ts | 11 + src/constants/index.ts | 142 + src/db/database.ts | 167 + src/db/index.ts | 2 + src/db/queries.ts | 445 + src/hooks/index.ts | 2 + src/hooks/useAppInit.ts | 53 + src/hooks/useThemeColors.ts | 32 + src/i18n/en.ts | 99 + src/i18n/index.ts | 17 + src/navigation/AppNavigator.tsx | 93 + src/screens/DashboardScreen.tsx | 429 + src/screens/ExpensesScreen.tsx | 552 + src/screens/ModernDashboard.tsx | 213 + src/screens/NetWorthScreen.tsx | 633 + src/screens/SettingsScreen.tsx | 379 + src/screens/index.ts | 5 + src/store/expenseStore.ts | 257 + src/store/index.ts | 4 + src/store/mmkv.ts | 72 + src/store/netWorthStore.ts | 101 + src/store/settingsStore.ts | 53 + src/theme/ThemeProvider.tsx | 36 + src/theme/index.ts | 12 + src/theme/md3.ts | 380 + src/types/index.ts | 118 + src/utils/formatting.ts | 122 + src/utils/index.ts | 9 + tsconfig.json | 13 + 102 files changed, 22090 insertions(+) create mode 100644 .eslintrc.js create mode 100644 .github/workflows/build-release-android.yml create mode 100644 .gitignore create mode 100644 .prettierrc.js create mode 100644 .watchmanconfig create mode 100644 App.tsx create mode 100644 Gemfile create mode 100644 README.md create mode 100644 __tests__/App.test.tsx create mode 100644 android/app/build.gradle create mode 100644 android/app/debug.keystore create mode 100644 android/app/proguard-rules.pro create mode 100644 android/app/src/main/AndroidManifest.xml create mode 100644 android/app/src/main/java/com/expensso/MainActivity.kt create mode 100644 android/app/src/main/java/com/expensso/MainApplication.kt create mode 100644 android/app/src/main/res/drawable/rn_edit_text_material.xml create mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 android/app/src/main/res/values/strings.xml create mode 100644 android/app/src/main/res/values/styles.xml create mode 100644 android/build.gradle create mode 100644 android/gradle.properties create mode 100644 android/gradle/wrapper/gradle-wrapper.jar create mode 100644 android/gradle/wrapper/gradle-wrapper.properties create mode 100755 android/gradlew create mode 100644 android/gradlew.bat create mode 100644 android/settings.gradle create mode 100644 app.json create mode 100644 assets/app-icon.png create mode 100644 babel.config.js create mode 100644 index.js create mode 100644 ios/.xcode.env create mode 100644 ios/Expensso.xcodeproj/project.pbxproj create mode 100644 ios/Expensso.xcodeproj/xcshareddata/xcschemes/Expensso.xcscheme create mode 100644 ios/Expensso/AppDelegate.swift create mode 100644 ios/Expensso/Images.xcassets/AppIcon.appiconset/Contents.json create mode 100644 ios/Expensso/Images.xcassets/AppIcon.appiconset/Icon-1024.png create mode 100644 ios/Expensso/Images.xcassets/AppIcon.appiconset/Icon-20@2x.png create mode 100644 ios/Expensso/Images.xcassets/AppIcon.appiconset/Icon-20@3x.png create mode 100644 ios/Expensso/Images.xcassets/AppIcon.appiconset/Icon-29@2x.png create mode 100644 ios/Expensso/Images.xcassets/AppIcon.appiconset/Icon-29@3x.png create mode 100644 ios/Expensso/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png create mode 100644 ios/Expensso/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png create mode 100644 ios/Expensso/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png create mode 100644 ios/Expensso/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png create mode 100644 ios/Expensso/Images.xcassets/Contents.json create mode 100644 ios/Expensso/Info.plist create mode 100644 ios/Expensso/LaunchScreen.storyboard create mode 100644 ios/Expensso/PrivacyInfo.xcprivacy create mode 100644 ios/Podfile create mode 100644 jest.config.js create mode 100644 metro.config.js create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 src/components/CustomBottomSheet.tsx create mode 100644 src/components/EmptyState.tsx create mode 100644 src/components/SectionHeader.tsx create mode 100644 src/components/SummaryCard.tsx create mode 100644 src/components/TransactionItem.tsx create mode 100644 src/components/dashboard/AssetChipRow.tsx create mode 100644 src/components/dashboard/FinancialHealthGauges.tsx create mode 100644 src/components/dashboard/NetWorthHeroCard.tsx create mode 100644 src/components/dashboard/RecentActivityList.tsx create mode 100644 src/components/dashboard/WealthDistributionChart.tsx create mode 100644 src/components/dashboard/index.ts create mode 100644 src/components/index.ts create mode 100644 src/constants/index.ts create mode 100644 src/db/database.ts create mode 100644 src/db/index.ts create mode 100644 src/db/queries.ts create mode 100644 src/hooks/index.ts create mode 100644 src/hooks/useAppInit.ts create mode 100644 src/hooks/useThemeColors.ts create mode 100644 src/i18n/en.ts create mode 100644 src/i18n/index.ts create mode 100644 src/navigation/AppNavigator.tsx create mode 100644 src/screens/DashboardScreen.tsx create mode 100644 src/screens/ExpensesScreen.tsx create mode 100644 src/screens/ModernDashboard.tsx create mode 100644 src/screens/NetWorthScreen.tsx create mode 100644 src/screens/SettingsScreen.tsx create mode 100644 src/screens/index.ts create mode 100644 src/store/expenseStore.ts create mode 100644 src/store/index.ts create mode 100644 src/store/mmkv.ts create mode 100644 src/store/netWorthStore.ts create mode 100644 src/store/settingsStore.ts create mode 100644 src/theme/ThemeProvider.tsx create mode 100644 src/theme/index.ts create mode 100644 src/theme/md3.ts create mode 100644 src/types/index.ts create mode 100644 src/utils/formatting.ts create mode 100644 src/utils/index.ts create mode 100644 tsconfig.json diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..187894b --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,4 @@ +module.exports = { + root: true, + extends: '@react-native', +}; diff --git a/.github/workflows/build-release-android.yml b/.github/workflows/build-release-android.yml new file mode 100644 index 0000000..91c0a6b --- /dev/null +++ b/.github/workflows/build-release-android.yml @@ -0,0 +1,139 @@ +name: Build and Release Android APK + +# Required repository secrets: +# RELEASE_KEYSTORE_BASE64 — base64-encoded release keystore file +# Generate: base64 -i my-release-key.keystore | pbcopy +# KEYSTORE_PASSWORD — keystore store password +# KEY_ALIAS — key alias inside the keystore +# KEY_PASSWORD — key password + +on: + push: + tags: + - 'v*.*.*' + workflow_dispatch: + inputs: + version: + description: 'Version tag (e.g., v0.1.0-alpha)' + required: true + default: 'v0.1.0-alpha' + +permissions: + contents: write + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + + - name: Setup Bun + uses: oven-sh/setup-bun@v2 + with: + bun-version: latest + + - name: Setup Java 17 + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '17' + + - name: Setup Android SDK + uses: android-actions/setup-android@v3 + + # Cache Gradle wrapper + caches to dramatically speed up subsequent builds + - name: Cache Gradle + uses: actions/cache@v4 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: gradle-${{ runner.os }}-${{ hashFiles('android/**/*.gradle*', 'android/gradle/wrapper/gradle-wrapper.properties') }} + restore-keys: gradle-${{ runner.os }}- + + # Cache node_modules to skip re-installing unchanged deps + - name: Cache node_modules + uses: actions/cache@v4 + with: + path: node_modules + key: bun-${{ runner.os }}-${{ hashFiles('bun.lockb') }} + restore-keys: bun-${{ runner.os }}- + + - name: Install JS dependencies + run: bun install --frozen-lockfile + + - name: Make gradlew executable + run: chmod +x android/gradlew + + # Decode the base64 keystore secret and write keystore.properties so + # android/app/build.gradle can pick up the release signing credentials. + - name: Configure release signing + env: + RELEASE_KEYSTORE_BASE64: ${{ secrets.RELEASE_KEYSTORE_BASE64 }} + KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }} + KEY_ALIAS: ${{ secrets.KEY_ALIAS }} + KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }} + run: | + echo "$RELEASE_KEYSTORE_BASE64" | base64 --decode > android/app/expensso-release.keystore + { + echo "storeFile=$(pwd)/android/app/expensso-release.keystore" + echo "storePassword=$KEYSTORE_PASSWORD" + echo "keyAlias=$KEY_ALIAS" + echo "keyPassword=$KEY_PASSWORD" + } > android/keystore.properties + + - name: Get version from package.json + id: pkg + run: | + VERSION=$(node -p "require('./package.json').version") + echo "version=$VERSION" >> $GITHUB_OUTPUT + + - name: Build release APKs + run: bun run build:release + + # ABI splits produce multiple APKs; rename them all for clarity. + # Outputs: Expensso-v0.1.0-alpha-arm64-v8a.apk, Expensso-v0.1.0-alpha-universal.apk, etc. + - name: Rename APKs + run: | + VERSION="${{ steps.pkg.outputs.version }}" + APK_DIR="android/app/build/outputs/apk/release" + for apk in "$APK_DIR"/app-*-release.apk; do + base=$(basename "$apk") + # Strip leading "app-" and trailing "-release.apk", add our prefix + abi="${base#app-}" + abi="${abi%-release.apk}" + mv "$apk" "$APK_DIR/Expensso-v${VERSION}-${abi}.apk" + done + + - name: Create GitHub Release + uses: softprops/action-gh-release@v2 + with: + tag_name: ${{ github.event.inputs.version || github.ref_name }} + name: Expensso v${{ steps.pkg.outputs.version }} + draft: false + prerelease: false + files: android/app/build/outputs/apk/release/Expensso-*.apk + body: | + ## Expensso v${{ steps.pkg.outputs.version }} + + ### APK variants + | File | Recommended for | + |------|----------------| + | `Expensso-v${{ steps.pkg.outputs.version }}-universal.apk` | Any device (largest) | + | `Expensso-v${{ steps.pkg.outputs.version }}-arm64-v8a.apk` | Modern phones (64-bit) | + | `Expensso-v${{ steps.pkg.outputs.version }}-armeabi-v7a.apk` | Older phones (32-bit) | + | `Expensso-v${{ steps.pkg.outputs.version }}-x86_64.apk` | x86 emulators / Chromebooks | + + ### Installation + 1. Download the APK for your device (universal if unsure). + 2. Enable **Install from unknown sources** in device settings. + 3. Open the downloaded APK to install. + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57b037c --- /dev/null +++ b/.gitignore @@ -0,0 +1,117 @@ +# ===== macOS ===== +.DS_Store +.AppleDouble +.LSOverride +Icon? +._* +.Spotlight-V100 +.Trashes + +# ===== Xcode ===== +build/ +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata +*.xccheckout +*.moved-aside +DerivedData +*.hmap +*.ipa +*.xcuserstate +**/.xcode.env.local +*.xcscmblueprint +*.xcworkspace +!*.xcodeproj/*.xcworkspace +!default.xcworkspace +*.origmeta + +# ===== Android / IntelliJ ===== +build/ +.idea +.gradle +local.properties +*.iml +*.hprof +.cxx/ +.kotlin/ +# Keystores — never commit release keystores +*.keystore +!debug.keystore +# Signing credentials file (generated by CI or locally) +android/keystore.properties + +# ===== Node.js ===== +node_modules/ +npm-debug.log +yarn-error.log +.npm/ + +# ===== Bun ===== +# bun.lockb is intentionally committed for reproducible installs + +# ===== Environment / Secrets ===== +.env +.env.* +.env.local +.env.production +.env.staging +!.env.example + +# ===== TypeScript ===== +*.tsbuildinfo +dist/ +out/ + +# ===== Fastlane ===== +**/fastlane/report.xml +**/fastlane/Preview.html +**/fastlane/screenshots +**/fastlane/test_output + +# ===== Bundle artifacts ===== +*.jsbundle + +# ===== Ruby / CocoaPods ===== +**/Pods/ +/vendor/bundle/ +# Bundler local machine config (machine-specific gem paths, never commit) +.bundle/ + +# ===== Metro ===== +.metro-health-check* + +# ===== Testing ===== +/coverage + +# ===== Yarn ===== +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/sdks +!.yarn/versions + +# ===== Editor ===== +.vscode/* +!.vscode/extensions.json +!.vscode/settings.json +!.vscode/launch.json +.idea/ +*.swp +*.swo +*~ + +# ===== Logs ===== +*.log +logs/ + +# ===== OS thumbnails ===== +Thumbs.db +ehthumbs.db +Desktop.ini diff --git a/.prettierrc.js b/.prettierrc.js new file mode 100644 index 0000000..06860c8 --- /dev/null +++ b/.prettierrc.js @@ -0,0 +1,5 @@ +module.exports = { + arrowParens: 'avoid', + singleQuote: true, + trailingComma: 'all', +}; diff --git a/.watchmanconfig b/.watchmanconfig new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/.watchmanconfig @@ -0,0 +1 @@ +{} diff --git a/App.tsx b/App.tsx new file mode 100644 index 0000000..1a81888 --- /dev/null +++ b/App.tsx @@ -0,0 +1,98 @@ +/** + * Expensso — Expense & Net Worth Tracker + * React Native CLI (No Expo) + */ + +import React from 'react'; +import { + View, + Text, + StyleSheet, + ActivityIndicator, + StatusBar, +} from 'react-native'; +import {SafeAreaProvider} from 'react-native-safe-area-context'; +import {GestureHandlerRootView} from 'react-native-gesture-handler'; +import {QueryClient, QueryClientProvider} from '@tanstack/react-query'; + +import './src/i18n'; // Initialize i18n +import AppNavigator from './src/navigation/AppNavigator'; +import {useAppInit} from './src/hooks'; +import {COLORS} from './src/constants'; +import {ThemeProvider} from './src/theme'; + +const queryClient = new QueryClient({ + defaultOptions: { + queries: { + staleTime: 5 * 60 * 1000, // 5 min + retry: 2, + }, + }, +}); + +const SplashScreen: React.FC<{error?: string | null}> = ({error}) => ( + + + Expensso + Track. Plan. Grow. + {error ? ( + {error} + ) : ( + + )} + +); + +const splashStyles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + backgroundColor: COLORS.background, + }, + logo: { + fontSize: 42, + fontWeight: '800', + color: COLORS.primary, + letterSpacing: -1, + }, + tagline: { + fontSize: 15, + color: COLORS.textSecondary, + marginTop: 4, + }, + loader: { + marginTop: 32, + }, + error: { + marginTop: 24, + fontSize: 14, + color: COLORS.danger, + textAlign: 'center', + paddingHorizontal: 32, + }, +}); + +const App: React.FC = () => { + const {isReady, error} = useAppInit(); + + return ( + + + + + {isReady ? : } + + + + + ); +}; + +const styles = StyleSheet.create({ + root: { + flex: 1, + }, +}); + +export default App; diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..6a4c5f1 --- /dev/null +++ b/Gemfile @@ -0,0 +1,16 @@ +source 'https://rubygems.org' + +# You may use http://rbenv.org/ or https://rvm.io/ to install and use this version +ruby ">= 2.6.10" + +# Exclude problematic versions of cocoapods and activesupport that causes build failures. +gem 'cocoapods', '>= 1.13', '!= 1.15.0', '!= 1.15.1' +gem 'activesupport', '>= 6.1.7.5', '!= 7.1.0' +gem 'xcodeproj', '< 1.26.0' +gem 'concurrent-ruby', '< 1.3.4' + +# Ruby 3.4.0 has removed some libraries from the standard library. +gem 'bigdecimal' +gem 'logger' +gem 'benchmark' +gem 'mutex_m' diff --git a/README.md b/README.md new file mode 100644 index 0000000..3e2c3f8 --- /dev/null +++ b/README.md @@ -0,0 +1,97 @@ +This is a new [**React Native**](https://reactnative.dev) project, bootstrapped using [`@react-native-community/cli`](https://github.com/react-native-community/cli). + +# Getting Started + +> **Note**: Make sure you have completed the [Set Up Your Environment](https://reactnative.dev/docs/set-up-your-environment) guide before proceeding. + +## Step 1: Start Metro + +First, you will need to run **Metro**, the JavaScript build tool for React Native. + +To start the Metro dev server, run the following command from the root of your React Native project: + +```sh +# Using npm +npm start + +# OR using Yarn +yarn start +``` + +## Step 2: Build and run your app + +With Metro running, open a new terminal window/pane from the root of your React Native project, and use one of the following commands to build and run your Android or iOS app: + +### Android + +```sh +# Using npm +npm run android + +# OR using Yarn +yarn android +``` + +### iOS + +For iOS, remember to install CocoaPods dependencies (this only needs to be run on first clone or after updating native deps). + +The first time you create a new project, run the Ruby bundler to install CocoaPods itself: + +```sh +bundle install +``` + +Then, and every time you update your native dependencies, run: + +```sh +bundle exec pod install +``` + +For more information, please visit [CocoaPods Getting Started guide](https://guides.cocoapods.org/using/getting-started.html). + +```sh +# Using npm +npm run ios + +# OR using Yarn +yarn ios +``` + +If everything is set up correctly, you should see your new app running in the Android Emulator, iOS Simulator, or your connected device. + +This is one way to run your app — you can also build it directly from Android Studio or Xcode. + +## Step 3: Modify your app + +Now that you have successfully run the app, let's make changes! + +Open `App.tsx` in your text editor of choice and make some changes. When you save, your app will automatically update and reflect these changes — this is powered by [Fast Refresh](https://reactnative.dev/docs/fast-refresh). + +When you want to forcefully reload, for example to reset the state of your app, you can perform a full reload: + +- **Android**: Press the R key twice or select **"Reload"** from the **Dev Menu**, accessed via Ctrl + M (Windows/Linux) or Cmd ⌘ + M (macOS). +- **iOS**: Press R in iOS Simulator. + +## Congratulations! :tada: + +You've successfully run and modified your React Native App. :partying_face: + +### Now what? + +- If you want to add this new React Native code to an existing application, check out the [Integration guide](https://reactnative.dev/docs/integration-with-existing-apps). +- If you're curious to learn more about React Native, check out the [docs](https://reactnative.dev/docs/getting-started). + +# Troubleshooting + +If you're having issues getting the above steps to work, see the [Troubleshooting](https://reactnative.dev/docs/troubleshooting) page. + +# Learn More + +To learn more about React Native, take a look at the following resources: + +- [React Native Website](https://reactnative.dev) - learn more about React Native. +- [Getting Started](https://reactnative.dev/docs/environment-setup) - an **overview** of React Native and how setup your environment. +- [Learn the Basics](https://reactnative.dev/docs/getting-started) - a **guided tour** of the React Native **basics**. +- [Blog](https://reactnative.dev/blog) - read the latest official React Native **Blog** posts. +- [`@facebook/react-native`](https://github.com/facebook/react-native) - the Open Source; GitHub **repository** for React Native. diff --git a/__tests__/App.test.tsx b/__tests__/App.test.tsx new file mode 100644 index 0000000..e532f70 --- /dev/null +++ b/__tests__/App.test.tsx @@ -0,0 +1,13 @@ +/** + * @format + */ + +import React from 'react'; +import ReactTestRenderer from 'react-test-renderer'; +import App from '../App'; + +test('renders correctly', async () => { + await ReactTestRenderer.act(() => { + ReactTestRenderer.create(); + }); +}); diff --git a/android/app/build.gradle b/android/app/build.gradle new file mode 100644 index 0000000..9ad45b9 --- /dev/null +++ b/android/app/build.gradle @@ -0,0 +1,151 @@ +apply plugin: "com.android.application" +apply plugin: "org.jetbrains.kotlin.android" +apply plugin: "com.facebook.react" +apply from: file("../../node_modules/react-native-vector-icons/fonts.gradle") + +// Load keystore signing credentials from android/keystore.properties (never committed). +// Generate this file locally or let CI create it from secrets. +def keystorePropertiesFile = rootProject.file("keystore.properties") +def keystoreProperties = new Properties() +if (keystorePropertiesFile.exists()) { + keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) +} + +/** + * This is the configuration block to customize your React Native Android app. + * By default you don't need to apply any configuration, just uncomment the lines you need. + */ +react { + /* Folders */ + // The root of your project, i.e. where "package.json" lives. Default is '../..' + // root = file("../../") + // The folder where the react-native NPM package is. Default is ../../node_modules/react-native + // reactNativeDir = file("../../node_modules/react-native") + // The folder where the react-native Codegen package is. Default is ../../node_modules/@react-native/codegen + // codegenDir = file("../../node_modules/@react-native/codegen") + // The cli.js file which is the React Native CLI entrypoint. Default is ../../node_modules/react-native/cli.js + // cliFile = file("../../node_modules/react-native/cli.js") + + /* Variants */ + // The list of variants to that are debuggable. For those we're going to + // skip the bundling of the JS bundle and the assets. Default is "debug", "debugOptimized". + // If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants. + // debuggableVariants = ["liteDebug", "liteDebugOptimized", "prodDebug", "prodDebugOptimized"] + + /* Bundling */ + // A list containing the node command and its flags. Default is just 'node'. + // nodeExecutableAndArgs = ["node"] + // + // The command to run when bundling. By default is 'bundle' + // bundleCommand = "ram-bundle" + // + // The path to the CLI configuration file. Default is empty. + // bundleConfig = file(../rn-cli.config.js) + // + // The name of the generated asset file containing your JS bundle + // bundleAssetName = "MyApplication.android.bundle" + // + // The entry file for bundle generation. Default is 'index.android.js' or 'index.js' + // entryFile = file("../js/MyApplication.android.js") + // + // A list of extra flags to pass to the 'bundle' commands. + // See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle + // extraPackagerArgs = [] + + /* Hermes Commands */ + // The hermes compiler command to run. By default it is 'hermesc' + // hermesCommand = "$rootDir/my-custom-hermesc/bin/hermesc" + // + // The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map" + // hermesFlags = ["-O", "-output-source-map"] + + /* Autolinking */ + autolinkLibrariesWithApp() +} + +/** + * Set this to true to Run Proguard on Release builds to minify the Java bytecode. + */ +def enableProguardInReleaseBuilds = true + +/** + * The preferred build flavor of JavaScriptCore (JSC) + * + * For example, to use the international variant, you can use: + * `def jscFlavor = io.github.react-native-community:jsc-android-intl:2026004.+` + * + * The international variant includes ICU i18n library and necessary data + * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that + * give correct results when using with locales other than en-US. Note that + * this variant is about 6MiB larger per architecture than default. + */ +def jscFlavor = 'io.github.react-native-community:jsc-android:2026004.+' + +android { + ndkVersion rootProject.ext.ndkVersion + buildToolsVersion rootProject.ext.buildToolsVersion + compileSdk rootProject.ext.compileSdkVersion + + namespace "com.expensso" + defaultConfig { + applicationId "com.expensso" + minSdkVersion rootProject.ext.minSdkVersion + targetSdkVersion rootProject.ext.targetSdkVersion + versionCode 1 + versionName "1.0" + } + signingConfigs { + debug { + storeFile file('debug.keystore') + storePassword 'android' + keyAlias 'androiddebugkey' + keyPassword 'android' + } + release { + if (keystorePropertiesFile.exists()) { + storeFile file(keystoreProperties['storeFile']) + storePassword keystoreProperties['storePassword'] + keyAlias keystoreProperties['keyAlias'] + keyPassword keystoreProperties['keyPassword'] + } else { + // Fallback: unsigned local builds. Install via adb only. + storeFile file('debug.keystore') + storePassword 'android' + keyAlias 'androiddebugkey' + keyPassword 'android' + } + } + } + buildTypes { + debug { + signingConfig signingConfigs.debug + } + release { + signingConfig signingConfigs.release + minifyEnabled enableProguardInReleaseBuilds + shrinkResources enableProguardInReleaseBuilds + proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" + } + } + + // Generate per-ABI APKs to reduce download size + splits { + abi { + enable true + reset() + include "armeabi-v7a", "arm64-v8a", "x86", "x86_64" + universalApk true + } + } +} + +dependencies { + // The version of react-native is set by the React Native Gradle Plugin + implementation("com.facebook.react:react-android") + + if (hermesEnabled.toBoolean()) { + implementation("com.facebook.react:hermes-android") + } else { + implementation jscFlavor + } +} diff --git a/android/app/debug.keystore b/android/app/debug.keystore new file mode 100644 index 0000000000000000000000000000000000000000..364e105ed39fbfd62001429a68140672b06ec0de GIT binary patch literal 2257 zcmchYXEfYt8;7T1^dLH$VOTZ%2NOdOH5j5LYLtZ0q7x-V8_6gU5)#7dkq{HTmsfNq zB3ZqcAxeY^G10@?efK?Q&)M(qInVv!xjx+IKEL}p*K@LYvIzo#AZG>st5|P)KF1_Z;y){W{<7K{nl!CPuE z_^(!C(Ol0n8 zK13*rzAtW>(wULKPRYLd7G18F8#1P`V*9`(Poj26eOXYyBVZPno~Cvvhx7vPjAuZo zF?VD!zB~QG(!zbw#qsxT8%BSpqMZ4f70ZPn-3y$L8{EVbbN9$H`B&Z1quk9tgp5FM zuxp3pJ0b8u|3+#5bkJ4SRnCF2l7#DyLYXYY8*?OuAwK4E6J{0N=O3QNVzQ$L#FKkR zi-c@&!nDvezOV$i$Lr}iF$XEcwnybQ6WZrMKuw8gCL^U#D;q3t&HpTbqyD%vG=TeDlzCT~MXUPC|Leb-Uk+ z=vnMd(|>ld?Fh>V8poP;q;;nc@en$|rnP0ytzD&fFkCeUE^kG9Kx4wUh!!rpjwKDP zyw_e|a^x_w3E zP}}@$g>*LLJ4i0`Gx)qltL}@;mDv}D*xR^oeWcWdPkW@Uu)B^X&4W1$p6}ze!zudJ zyiLg@uggoMIArBr*27EZV7djDg@W1MaL+rcZ-lrANJQ%%>u8)ZMWU@R2qtnmG(acP z0d_^!t>}5W zpT`*2NR+0+SpTHb+6Js4b;%LJB;B_-ChhnU5py}iJtku*hm5F0!iql8Hrpcy1aYbT z1*dKC5ua6pMX@@iONI?Hpr%h;&YaXp9n!ND7-=a%BD7v&g zOO41M6EbE24mJ#S$Ui0-brR5ML%@|ndz^)YLMMV1atna{Fw<;TF@>d&F|!Z>8eg>>hkFrV)W+uv=`^F9^e zzzM2*oOjT9%gLoub%(R57p-`TXFe#oh1_{&N-YN z<}artH|m=d8TQuKSWE)Z%puU|g|^^NFwC#N=@dPhasyYjoy(fdEVfKR@cXKHZV-`06HsP`|Ftx;8(YD$fFXumLWbGnu$GMqRncXYY9mwz9$ap zQtfZB^_BeNYITh^hA7+(XNFox5WMeG_LtJ%*Q}$8VKDI_p8^pqX)}NMb`0e|wgF7D zuQACY_Ua<1ri{;Jwt@_1sW9zzdgnyh_O#8y+C;LcZq6=4e^cs6KvmK@$vVpKFGbQ= z$)Eux5C|Fx;Gtmv9^#Y-g@7Rt7*eLp5n!gJmn7&B_L$G?NCN`AP>cXQEz}%F%K;vUs{+l4Q{}eWW;ATe2 zqvXzxoIDy(u;F2q1JH7Sf;{jy_j})F+cKlIOmNfjBGHoG^CN zM|Ho&&X|L-36f}Q-obEACz`sI%2f&k>z5c$2TyTSj~vmO)BW~+N^kt`Jt@R|s!){H ze1_eCrlNaPkJQhL$WG&iRvF*YG=gXd1IyYQ9ew|iYn7r~g!wOnw;@n42>enAxBv*A zEmV*N#sxdicyNM=A4|yaOC5MByts}s_Hpfj|y<6G=o=!3S@eIFKDdpR7|FY>L&Wat&oW&cm&X~ z5Bt>Fcq(fgnvlvLSYg&o6>&fY`ODg4`V^lWWD=%oJ#Kbad2u~! zLECFS*??>|vDsNR&pH=Ze0Eo`sC_G`OjoEKVHY|wmwlX&(XBE<@sx3Hd^gtd-fNwUHsylg06p`U2y_={u}Bc; +} + +# ─── React Native Reanimated ───────────────────────────────────────── +-keep class com.swmansion.reanimated.** { *; } +-keep class com.facebook.react.turbomodule.** { *; } + +# ─── React Native Gesture Handler ──────────────────────────────────── +-keep class com.swmansion.gesturehandler.** { *; } + +# ─── React Native SQLite Storage ───────────────────────────────────── +-keep class org.pgsqlite.** { *; } + +# ─── React Native MMKV ─────────────────────────────────────────────── +-keep class com.tencent.mmkv.** { *; } + +# ─── React Native Screens ──────────────────────────────────────────── +-keep class com.swmansion.rnscreens.** { *; } + +# ─── React Native SVG ──────────────────────────────────────────────── +-keep class com.horcrux.svg.** { *; } + +# ─── React Native Vector Icons ─────────────────────────────────────── +-keep class com.oblador.vectoricons.** { *; } + +# ─── General Android optimisation ──────────────────────────────────── +-dontwarn javax.annotation.** +-dontwarn sun.misc.** +-keepattributes *Annotation* +-keepattributes Signature +-keepattributes SourceFile,LineNumberTable diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..fb78f39 --- /dev/null +++ b/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + diff --git a/android/app/src/main/java/com/expensso/MainActivity.kt b/android/app/src/main/java/com/expensso/MainActivity.kt new file mode 100644 index 0000000..6416b28 --- /dev/null +++ b/android/app/src/main/java/com/expensso/MainActivity.kt @@ -0,0 +1,22 @@ +package com.expensso + +import com.facebook.react.ReactActivity +import com.facebook.react.ReactActivityDelegate +import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled +import com.facebook.react.defaults.DefaultReactActivityDelegate + +class MainActivity : ReactActivity() { + + /** + * Returns the name of the main component registered from JavaScript. This is used to schedule + * rendering of the component. + */ + override fun getMainComponentName(): String = "Expensso" + + /** + * Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate] + * which allows you to enable New Architecture with a single boolean flags [fabricEnabled] + */ + override fun createReactActivityDelegate(): ReactActivityDelegate = + DefaultReactActivityDelegate(this, mainComponentName, fabricEnabled) +} diff --git a/android/app/src/main/java/com/expensso/MainApplication.kt b/android/app/src/main/java/com/expensso/MainApplication.kt new file mode 100644 index 0000000..674e315 --- /dev/null +++ b/android/app/src/main/java/com/expensso/MainApplication.kt @@ -0,0 +1,27 @@ +package com.expensso + +import android.app.Application +import com.facebook.react.PackageList +import com.facebook.react.ReactApplication +import com.facebook.react.ReactHost +import com.facebook.react.ReactNativeApplicationEntryPoint.loadReactNative +import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost + +class MainApplication : Application(), ReactApplication { + + override val reactHost: ReactHost by lazy { + getDefaultReactHost( + context = applicationContext, + packageList = + PackageList(this).packages.apply { + // Packages that cannot be autolinked yet can be added manually here, for example: + // add(MyReactNativePackage()) + }, + ) + } + + override fun onCreate() { + super.onCreate() + loadReactNative(this) + } +} diff --git a/android/app/src/main/res/drawable/rn_edit_text_material.xml b/android/app/src/main/res/drawable/rn_edit_text_material.xml new file mode 100644 index 0000000..5c25e72 --- /dev/null +++ b/android/app/src/main/res/drawable/rn_edit_text_material.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..e0f650569c810922dfbfbfa07aa80cfa86f8f5c1 GIT binary patch literal 5844 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 SUHI4S1pswG+I5;>$o~Kg?-nQk literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..e0f650569c810922dfbfbfa07aa80cfa86f8f5c1 GIT binary patch literal 5844 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 SUHI4S1pswG+I5;>$o~Kg?-nQk literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..811e686e2cd66bccc837a59dafd0d0df4b1214bb GIT binary patch literal 3276 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 AGXMYp literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..811e686e2cd66bccc837a59dafd0d0df4b1214bb GIT binary patch literal 3276 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 AGXMYp literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..dea7d2dd6ca1d0dc5965942b5ce5942a0ad948c0 GIT binary patch literal 8713 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 a{{)&G!>6eU-~Mg@0E)6|GIdgr(EkJXmnupC literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..dea7d2dd6ca1d0dc5965942b5ce5942a0ad948c0 GIT binary patch literal 8713 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 a{{)&G!>6eU-~Mg@0E)6|GIdgr(EkJXmnupC literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..a092d4179ffd9e53696cd0573dd172836b85a041 GIT binary patch literal 15358 zcmYLw19T=$(C!=Cwyig|ZQIGlwrz8>vF&VZ+qSW>t-br*`=9^LIW*=a zT~$#^3X%x0xUc{K06|(xOywUY{zuTD|L&ILZa4n`+(KAh7yxKUfcrFt_*W)2l~R!h z0K6#yfWS}y;QgN{@Du=W0|Ef&MgRa$Isky>nBAew_wRwHnU=JHmh=t7xTdRGx2x&c@=HU|BiNmR(GbXq@u?*Y^^Xkom)D!Eb-gbE zf3n+Owp)p5+a|APdb&NXr!rVs|75X#&9F-rDXU%p%^TMfldvzDJDONbZ5ZB|B`Z1K zWWVtqt~tt@nvdZfn{bSsj++G5rfMVyO_HRpG;YpEeewR9wQ$>35a@3+dc1UxA4tVD zld9W@2Nu-s$;>z2j=UfIlEaLkx%6ntO839VODpcuQ03Rrk^MRLW+X3z>)5)kj?9`N zAAi)h)7~6&0~{s=G`bx%xq(2+nNZp|>&ogRXtBjoHImWPA9gDZ--jYf%ZAr3gGl%d zYSH7G#EIk$;>US{9q%^%h(%r4*#Lx4idS+V*?+kesoX>HnH@T7u?r+ zji6T^DC4y1npg36Ys!vLlU&u9<4d#$dwX$qop16j+PXL~nl?y{Wv)!G+v`=~h_qt% zX%(DvbX{xvcCH6oi@t|4tFomo{Kc$dty+d3))DE*;&dL91M# z;`E@HP_qfQNy)Cs6@jdNz>U`$a|eaqZ`IaiWD3(2Z66!XD~CWqmf$HEraM7{ZE-#r z1Wdy+<6L&w`P|0Pv>HNnFC?lmY_K^s zjSauTHM?wb2O{!7I^mUJ+)gz@@Z#K)vAv}*NrNvTqLF=+7R5;Xd~(jLZkGkjMb^AC zWm!fNZrP|WNs!0wD5fPgx26ZtHc*Fk5vW1GJF}ik;UQtekx^|~3$y_#Du9rWe$^Al zDvtO3H@z42@P3@H5oWdi<{;|>$g^Em>E1nq&KELAvgOR zC4HJ<{8Ne;pfCrkR{Lz{KZyTO#7{=6?*L8bo)1?bru3Tx0~Ibiza3f>JM&B?t$g^} z{iQu)6yBQ{W0AGN+8ZmT71=_q$F#2QKnv%&IF7XR7^(}<_1 zxKii6g9*b?EGujQjM1B#dN|2CSkdJ zRh{7@+~gj!&Nw+lzT^o*1v6Sd4)hw!tFG0PLKFThxruQ9oV9KE?F}Qgvv zsHIx~8P%4!&wB@zXPF+A!HC&V?C$>ZX~$ti=>H_btPR*5sS2} zqIW57fYMvF`E$k{t?iObidyNthoMn&>SUxZqmtD+GBOt=zatfR6jAP=$fji07ke)F zs&&a|V~$l?pb2NPZ={m9tF!Gjt=FBnbhv&NXmqin@WR-h;*HaRqIHyHMEo?tbto&z zQR*rVQm;xz&7}D15s1sN| zuRLHJ^DGoO1Qcp9M|w3_Hx9&j92$7CE|;Y?DYg|hgNq~2A86jI6@`E+g4&fD>Ku)2 zXrCV{)Pe=_vc%d?Py71b z+-Fh~EqFUVwxq=Z%ZIJOel$=&w;5N+b$mNP{%BkqY^G2riVt>fgqna+;{Y|2!~2LX zx>XZ>%0f1F@#GQ+B>A&nd7y=j*7+L?%=s{vFe(&7gglmZBF(m?giu4JZ>96TL1-Nm zx7)ZRESO~vSx~r-(WxbB*@PY!0e@~?Wt8mFCC5>cRT6HT&pvSYd=eZtxoRx!m`W;1 z9R{DHi+*ViU|@I#_3akWvX*kt?G7miCuKcIIg?CyCfyg?y1NE%GD(oka@!-Og19}! zIEqkjxyB^lMM!ls5*!_-*frfe@}9uIE)?;mF6z`Azns67`{ETe`*Mhos4NkU0w8YHu!FB6_a zJy5=$aXp3`=!9*D7B6AjE}C;S!Wqz%7;#u?yppOwF3J&`h91BNMnz$t?8pWv$hw!L zR@pL1FO!R2-nkM9_H%FU`9bAUp_gtMLMO1q_)47oL>MN*^-u#k z6zR3}TTj|MN?uIX0@GxnVsIp{;MiMtL_9zE5gEHy4?YJY*hF#Jx>))^rY zU0~v{Eu)fUQ$ksLuR8(>AVw)tuVRAJq-Ui%*41k_m!!2TIq=)?{2)2sO#sm-_w{#N zE!)qWjs)#Sw9dFC8{{Js@VK$jy*5ugKBx*Jc*bWBBF-+ zDwucvQKI<0khy~M!!pHs2M_1@hIyTJ$~|@=*)s_~rzcZu&xlPgq83u#SV?|N55q_Z z?g39gccpJ?@ejZjLA=zO``4iwMKZamhNSgGqU5RBk7Yr!jO5c(#zBiI65%TP`FFn_ z^@QXeby>~MBi*}pF^bX;hG+?iP_*{CQ$Px%JIV+ua?8w(ejv+Kgh z#)qYp4951e`m<4sIgUvNHk-NEW<(owO$hnfWV3sCo5QS6KO;r3(c;-2W!r<+Jc4z! zP9}B9$Q-k%5@Io!g0&$WM-%#3ma~=$L~re2Og`^1h@nalKScea(n68t4JjSyN3SL) zqai2P{=323q=8af&#pRS`_gNWz;1N$o&1f3d%ju9r3)lvE>OF?)_bQ(>5Mmaoy0ly zYTXgh)IyRdHV;Su@Ar6>ef;K3%VBG(M=6z(ECN+TshhPw{&nNnL?FrfGF68mMB!`& z8Q74@oTb@%OZm4{Q=X$WGd)o!*;kn%dMzkpH*?_d+tgV0#xKCdIJx6~sp5C>>H zRE`=4?z9q8b*g#2)7xP7XvuDw1k9YoOE1RR@3_gmt?@?9;qH<@i}`8#sv?f7IDu-Uk$V@oSeFeVnAzM@GA62m*Xe9Y%Ddy$`cYd2r>D>8o_5Pk#% z1}z|6r0rl1OKIB;B@%FF>vSukBJOQ>H#s?Ir9ABK@3N1w-pIfY`MK>>{Rda)k)8tgour>>ziokTdYzr0WBYM9;0+@U&5ZMDnbN1@i!)Zx9kpX-63toDLMI}p`i zQDW~4|L*2rR_0n?{v#o|Gncm3!YFi?kq$z#bWD{G;|L%iyLSXwJaY5q{@S|H(AB6*gV1e+h!qMM zBKc!9e9(b`6#ncV_KpDMC!GU5PWPJ6RvY|p44hjCpqPX%G6WfvSjZ$U?DU8xxZ*(; zM~&9vAnY1>TvELCZ>}Ru%@=iK5Z1du7L^9Ae)iO`UT6y9RICTK(>#8V1n9F)S?1y6 zoKf{2(`O6C8wXr{8h*5PTeXxygLTj%EDkh4b;pJ}iOl4uk|c0%jFi84YA(b?>&2%aMa>K3YWE);I-HcH#(!`r%kgzYGs@%eY=d{(j-)qJ_lZrVPed0Wy_I^r z5di^xTYML=FQ0cBDl*0=ICbWBL&2%V(n@b>t z*_4gBq<7=+rRU5_<7dEqm=DxR@%67C3U3SRXZTD0r*$z)%z~)TsVh^RgfSU=HnMaw zxcBt5{Bni)^C<#kOEPS-xWdu7{R8ag^7mJ-V-M4A=M1HJ*-fR;Mt*xiP?@B;5|M)k zQ?4Fw6cQ5!za1g&sYh)0xv?=7zORa^g z_?`E7s~Cn2fWJ|aKUwQ-z0^%aO54?oDk|#A#6K~b9_2EF5#nYp8++>iz=H$#D{rg? z`Y~I8mg2u6LpDCh81cmpV;EvIBxT;UA8O9{vy6w=?kmOQ>wP7^uw&Xc^3wb_KAM7v zQS<#Fo}EIi|ILx%y^Q(^TRLoq=mR4=t2S!ltK-tVS_{ZpOq;dd-PUXI5^u=76C=C* zzy|0b9CJ5Tg*PSz+kA%Zz=8Aon{2dN9mU)Iu;}m3&ddRRPYAeoUfxBe^Du0mp#LyEl z7zH~i9sX8(P0ak}<@9V5dY@ReWJj`XgWJr{Gsetl`RG7VN{&Ey%)!D_*K){l=qz(i zfT+{~in8%U?_0)U^TUf&a$q&$6Cy;2zoCA9j{x>9gs(w>U(T#97VN<_3?!%@WCG*m zf~f1*ynFEYJ-Pd(R`TytdZfqw`9q}rZEab6B1^o45pqhWRrN&RAYuo+j=7C}sWxB* zKtinSm+$+xXWOi^Mg5Y7U#aC|FX%qAQpV6ueoPY!27+uK`RjDpIg;n(A$%s+ee zAj1B^dh!AYg9e+L{cHh(6R-emcYjaiI^mXeIqp@t-6*kKWa(VCZIC(GN*b>_Vd-+p z32X{FdG-Q?gSQp^m%U!2&nD!W4Wb(O`9&bC$EDJiaC`vV&TUZ|lu6Uv0d~})?Qd?8 zkC&gx`tU7j!4u{#7z)8)p@bW6Fek!$5?jzT&J>ggu^bAbt;6fa+3Y3!`D7Y$r5A=F zLh_$$OMzDFoDd;F`V<$OwR&Av%LDpZtJk}&lZH2OBZZhT%O;K5)f%7G8kvz%w}x!E zkSez=+IAWdgVv3@SBMdV@uNo6smVzU!6A-C-(bwUAdlEiut0oKj2MxRo_r6=AA3`l zR&!Fs63Qfz(JaBtLMpww>By#`mUk245Ck1Rj+@n&GFc`}(G0T?fkChUTisrh`9C)` z-zN{h7p8^tumIX;-2pMv`(g}|lzXGn07egIXKxJ&1p{+?VRHpxp4#;{E1dNToOK$U z3@2m#I@}&_ijDFx;>vi!@Y_PQX5Fq;1tbvoMv0~&dxB|noQwh0gt?1p5>VYT}|(j znd~gxY@6~pQR51Eb8~j>=h_;>75K`^clVB#*eC>g3RDJ2radoMR5}U%EQ|Sl$OV0s zZ%ru^rTs*~bqKusL>rWVCDn(Po!Fzwv7@?A^wPZ=$P(!kZ3&EL2}6cNCMdH=H8@MyoBDGQh5(=FpX zDNMSIgT|iQXz@R0ZB?jQYuw&fvLFcu{eH~;jKY%3a@7iISr39jA}%2vZ(pr)IfkTl4r}aAX13si^c;;0y-o8aYG2)Wzxe zSX|m)jp7s4XwlVFRlJr{tw1L%=zm)LVDEpQ=MIGkPF4>{uvlJv!ZR4rtvC0knVpeb zDhei3-ZKm;)>ZTRvm*O2NMm>syVGz~tL`!reQ6l90UIse?T*4aKB2A}#Fb>{y?qe_Oq4RNRrXp6{8tZdJH`d|z{JJPS>bNTFW#551 z;}OLGM5wq!AM&SemP8tICG=%s8wGLIJ>TwJ1-x>U&Yit2~lmFY2n6V7`Lm3>9|J33qsG2 zY4BrW=X8#!)x!nuVX*i*Iy4~>C>?4}x9EZtX1RTRSguQa9K=5e%rd#q`fw3cZpdp= zsvf**3nzb6-cp}4yXMTrR>%ZjxIM}PXQSABY^wO#)!o?D(>sM*2(V>K&CGxNDJix% z3%jE>SsD^~83B!j73j7tgoiDi)#bGqk?rld;a*F!tm0jrcZzlZ>+YA#6fQK&K43|! zXX7qzKtZiVgJN8I{Fa5R9EtGN-@x%~m`*=Ng{(XDKvSq>O3&HpWvyEDUqm z+1BZT6?KaTm;ru9TotY61#CVjyPL=@iyB7UeIwGYLJ)7$OYK5Q?!Z!Ud^JvYX^y5)D>TnW+#HPt;_w^a8RkDx*x z1MYiaKg=85v~z;E`2a2+_q;j7eyrD zOwjSdZ+GtYZ!yzaoF_tYA(b`-3D+Xba)0ljFw`dCF-nba2RhS zRMq87``nVh%QG0MGYqLZP7O`*Me8fNmuvvCKEINmE*mX zUK^`KHf6kAiQ;;O*t~Kb#!xn@QS=Ev1D(SLSO5--aWr!qtk;k(8R&C@r2X4vO)r<; zk^m<DP4AuXKUmqoF>z!@8r1ylE!5anK$mai;E}n^FkXg zOPMalU|TH-Jj>`diM!LF*H=Yr>8=fwQIicTW4{u0 z;EI+thMa0x$SHdIVx#kh+tqf-OO(Dh(&b!@henordZpyHODH^bylV{WUx9bXL^k4w z<<(^kb&bpQ2A78oyWuMLU+9|G>js8C$UiJYl)-4dHPBJ{rg6wrme!7nsD#B7o$m73 zcGysVundQy!J$?UnV)!g-aawiZ?ycqOCP>48NUA0X?EQ56EPQsp$(q!Zwvv&#iV;G zvFWKeclMIa{mQbv&f9djnV~6U|IgIer<$oPU%8dz)|<@57FBm)V;ysQYl%`in&mTR zGV}pjlDTQ>gh2}cYLJ4d3H&D9xwQ@7@<$cjB;w_!c6)1+?dtPHH!q*oeC>mgRRpDu zt(I*4y1soy$RR!rm7cbd^%`=`UWmOD`rxcoWF(h-U&`upYGSi>IG?d3{4uZW&fkx` z+P6WtJ8J*2l}Ox{lT9X~-fMb#4{5w`eA1G&%)1Y)T}g;Glm2Xqyf24E5828WO(i7Q zhkax;fgEVCGn4t`2P8alDbk_)U%WIl6bPzRh#t|4aaDK;@VOKe3}E-iQKaaWL)iVW z3S8LtJ~jIr%SZ>@UpYK% zxGA9|J|xMJSz}`ol9-OkCJ^a>C~I8q2v}~Nna*}0_ktb!v{Y-icuoJ#$y&YIY-sN= z;j}{hc63Cqv01nj7)SOR#P4Yx(bSZOz{v<%dd-7~h(cvtJ}MTgd_`tr0f*47*ON&& z4Nz4~7?wnVg*^~*OYc_#Iv&rHeJG_mwHK+((wuS~G(AAY@fOv~DtgEaOoWuZ_Z6<+ ze7=-Oo>#sU$+6fl&|@&jP6yqq!wK>}1smd-@Fh1hgG^ebBz=|W=%FPGu4fE{${?dXi;m=xBn*gMwwd^SF2U7ZZCUK4 zaAt=vvm>x!*m$x)HCi234hs_2lQo}vS4&z5Hz(%o5-xX;$Eid_Z(0v)AlAlcv5XPn zd74N7mIHVx*_0eXcUruF$xx%JI9B0 zt&8W5$)Y$aVWeGJYHYgGqJkFe6Q7HqH)y?li&7f;l4XJwVL=qc>d?Jhfg&8gNT!c~ z!qW&FCe#<}J`GzzY^6YV?(RIv?kj+LGtW`smFNsEB0LU+g;V?FvwiN{;2EU*Fz zFqpVRsu%J(aU_5A=f=TlMHKd|!4IR5SUGb-eePTh(=8Y6n~yeGT2mr9q0KpOo+hqF(DEZF2XKpI?l#3mbq78J*8x%89b+|C)S)KAN+bgN847 z#6TU2CiyXZU9)y!EZ4mDz>9u{L0ADD1?g4HBMse$Ohy|-l>38(^caAr>_TkG-ke() zJ0yt{6i#$tdpGu!Bcd+F?Y=EeA>$;@C4Lz(WJZ*RSR)^9?dUWM>oW(~p^?JQu)#8evyNCb}8gixy)T z-wCV1ryi7u(H_Jl)Po~Hgv`*{8_STIkRMTcXp#+wUJ# z$8i+9y{yEs=5-RGaqr<<$m>m|Yh1B=y80WJkvRgLL%QcdE|y$`6oh@~L2*b&Rzs(D z88U4gl~=X~X52Ml&vEUm9Z8l8vm)6^086XHIux&5VYQ2LP{I{?$sDrr>nZYu|J+Zf z>Ex5-&K7jS;(t-0BAGQ8JWfMBQzO;_HPp@4^KRNJODpjkIi`lC&_&Hy@4Bkc9NFH9 zW_H>FNi@eRaP&VA;KCf^!!03yveK*DYCl}{e;ptF0IqvosWfin*G(0Yztwx9TDm$X z)g==RO{zJeOSen~7FX{>#9#&z(4=x9GrT!tyTu7ohLZBwM#LSVyV9P^j(!uY5ZioA zx(oU(Lg=nC6v2Shm#wK8B+fX_33^^01r;eM|J#F3lElZsrHgSIJz7O}DsO=Ut_C?KtuMLa^0{1f0`Bj9-(6(oco6ET3gqh;_gvS!lqoFWS zv$Yq+TcIU~qS+e-L`RKXf2I@O|Dn(1tk(M+W4Ex?|6rh0Q=d=jqldHZUSKWT`2@a? zWIiNxa6%aQMa0jJG32)%DRqgxkEINMUj4ao#zjLfUzH|fR;??`i6KWBiYorSn0u)8 zTL}RKL3m7EIEJmiXjK^<2$OfhW-bYk$E!h-mO{=Z6mjyoel-$PAEt-Zb&(U(=&H zsRj9}6Yuc2#|k5`IA)9K(&H^$zt_P1U<+eS$b-_w9tt`Ma|sHZKSj^ikU=2O)r)ON z`5{OHmyr&S-E;0#gt|N=g_4+S3^{J*ZDxJH?sP*ym|7&2`oKkf8w_}^FX?969x0<3 z`~OA|;t~L*`^FZ_3WI*qH^9x5H!TrX>v4TtLDCF4vvN3_og+)d zVx=*|5wVzOEUJ@NQ47(6qeEBEl@t)cYp)?~dcD>ru|zLDk$_1?Yre8TRfi#FI3i9< zC1K&jHfb~nW`hIrM3{RdIn}SpBQwwkqlL<`G?p5(RZKcxPFDmS)t>9qY{^A+7P!%y9=4l3vV<$c!|Jb?yRGKJG!8Yd1z7JlYLSmS?r=)1^k;FGI{0JD+8%%r>;z3O~LE74KAT2b&~igHnw% z9hY!a8^$w+Km^E})2GchRe$@xt>&>A`7X4vUb)*UEMVpdO%m6?q87{Ry++`f81Fc8 zEjcRfOM*n=iVY-sF81n)WjsnU((*uXXXVQgbiR!8KK%8%OA<8Tf2*x1`o0^Bqp(Rc z`oMdF^m;Qi7E3CB6v`O%-+eVSaJy(^RapRV*E4Hz%U1Ch-;nNxDf#lf>s40TBHeuqO_|%7;!r-HhC_)(8q)I(5V=C!jSjHRQi8@oeoHV zl8=d_p=`7BT-AambzZIp%74Db$Aq5HNf<|8+HKB5zmlH;)<*GVn6ATj>#H@r}}Z(<3Lu8g4Zbm~e)^`%91xPI-D9=BSnJ^U6`YdU-nF$qC@wVlT!+DR{tgkVjmI68K$BOS z2yMFqMw6sMG=4t}^s&PzPdz-70I<$7+QwbUuvD)8^@z9Yrz2050nj*nyHi3>o9<8$JH#gOxX*c~6K z_q(2i$JX;&!0|PQsf+3f1~8}$9?)j1r@n5l&dkCvD6}Ai{JsdJ@(AnMla1AW-y13s ziHR8`Ek}%-0mE#uu?(U{MKs57?RZ+xI9vDPVi}Lx;p zzj7Ra-$|PbRme@Z-D>ti;P6Dk=hvnr-1NALGo@c;_|R$gni5e9=~D(K(RuGbioKo< z2Uax8ivHU>qrgczGb`vdC>t-Il{Mw1|v1m^zh*7J!|Dkqq})m>2rBM z;shheP`ViN|G@qs_q0Z`*J}v$D6^b-l?j~gvD=QG;4h(y<%8gXO30;(+vxb_#a{^X zQb$SdP+@nO95$@h{xmx~VSidyPamJLUL^F39;m$&fOysr z`06yQ`FuCs8L8$0Pqu&;_=rn)y(0Qct6vxL(@b&8ai+y>61@bupr}+huu?W`m6>FJ zlsPrD0ussqU+H$iS00N)edl8$8&UlH@O&>2rm@T+qvO5`DP>_{u@UZ{+azLO z$>J6pU$9IQ(7`B!8?bXR3zIHY?ECU;X6WDa8H3b;(-0k)jW{%R;%w*-|Mm46n0`>$R!UTI>T1W3_ zu{SunFvIt;=(*yG>TT+J2C0Ivv*01P`PE#&iL7!ZDQpvLCq@(@W)>j}oSNjph2%{G;&UCp=1enc#EQ zkB8~c2B!OGifbb|jHE$TNQ25L_5p=pF?B2vUjd6E*s2*I78#;kvvNV?EwIMNPJ0|GP%gp7(bznJJx>@yyR@%Dn( z^3M;?zl7W=TaL#sF|D<_-&fgx399L5Z`Pic;7ZMoni&iPh|q)wf@*P@z~{-wCq!b^ zCdJ2<#*LqKLL{Q*ieUrbp&BGl&p!HEudaBl`)`8$~+Z}|C+VZ}0z_(Xd@xR`O^y;%+ z2$oMIDxv&Lb63cmVB1Q~&$lSQ^LyIq$lRE;5BU7Gx(&fo04jR)Py$t}&+-D+MGg7d z&Z0`MB~0SL;|3^$Ga3MKsliVpB{hr+N(z(}VL8p<6DmB2PN=8hLOW!`GZY@RUln+C zu1k@q(&E+|&dpKW_U*5ou5vQS%2i`Phlofjj?U?`KCYo$nLa696D4LvCy74FwIS#IlU3W`ZFef}HD z)I1fVEKMcMIWTEgKH$CeE)Z8NLUX-z*MI&Qf$ok2y)0N%H9V|)Bo=MJEW8q%gP9zI zy+686aK>s?dIox>JmK5_G4Si6qVvS>mPyk&Ixrnt^g$OYzv^U! z9MS_u235jI8lJM43l5YZ^r5a7iOQkW{KT>{5ZN3b^m&Rw)x%y}_7Er{y4-VQ5gY7# zq+OCixCUW{QZsTMW@tnz*crzor7x9m?aii6s-oLrHQkLBCte~3ca;4cjsql@JPr#J z=RWpdM^OB9Su1uCYWCU0bjT^w%|pY+#(@8!W%u?Phh;wP*--jBcBE{H3S9x=uCSaP zgz~+@JN2^yF%-G|JXz|Ld=aoQDNLov?Xj^<;4`E+j>*;Y?Ksk#_tyQ#h(aNI4kRf* z+iWJ%Bn-OzCCDGqYhHeq%?u0S_TPx_es9TPd}7;6!mLp_d><1b?M6Olgq18Hb&iD% z1%n?3!8J2dlIG(Z^RQpa$#m~GXe#1Lg3)6akq?U(w>VggOaArs->+_U;sfoW1H45u zK^SKdQw%vKKHlm(EI%S&CY&QtVSs~iaYJX_%(Q)CW_v&&{REgFJuP*89Sk<^e8Rcn z;VSac(7B?qc=ajiyP!vVK8lt7L?}kP2`)DK^Y<*LgzHw)qYNmxjc-_^?C~kUV*SfKZ>e%Hjf-Fxd}xRdSN!W-7g5DMpdf>HwVbcDeGuw7zNdH@n%anlZ#$+rI4eab3Puq)OAV*R9w|V zD6JhvE+WujGJL$F$q8y)Zpeg%&(aDJg=X?(mY`nm^+S&DasHZ1FU#nrkzjBcgJP> zmb2A9a~}XE0)%?8L(&_MG2sil`_@beny6+;jCLf-lE*u3-=z&VG8$DRD zfqsPLK2k<`n~AGXJCK@OkN(XgN^f^4bvB&WgH>IJGK@N3H9(;)EX5!sag5=%{#X{Ue~@0pWE&3Y$f>4b=eG2t5^yOuIbj#(Q7? zE70kVr{h8yG<+;^Y@PM{eU{2TEXTdq`7;&cXTN8BGbrw?*VagZn%30VJ{kSIrG^3T z<-rB-=Mf>8*pW(lBhLtEpUM2Bf z)J#NY6sZ}#^M1TL<$d_3zUvzv4j!RVcr=j1;+{U0R5d0`9MVPJ8_jVCX`PsaPvX$^ zjX#Vxx8@M8Z%&I2{R-ymI+_VTt&(ez2m$F9Ia$qqMpbSV^PHn!3#IY_q$jklWIz%cCk*to9~ zsHEKu86nCs)kBEoz9_VzhewU4L`cF>PINs$H5mwBHwOwy<>0B1 zu!xZn-j%1HD!Ca!hk-1f^9{wtdyINxKX#SxCNirs_E$BPgGKSHJiBD&!2zXz1z#B* z_Z&Z%GrfI&G1&a_M7ow-*P#0$H=Kd&gfn81$g*{S8Y`Q$O?@+q@f7l`WFf|#@eRjnb<-_EeS!itEQeIM>IBz6)#Nh?zI-}6tPpvF-&9wGH( zVdtXyap*AI&_=Wn;dru$uApr5Fe~^=r&7jZ6h{+nLlw}HI}b4hge;M72k!dbj|42= zp~__@f0#N%P|FUek>VWf(EA=;&&LX~!fPMH)ni(#^}|~kt7xC+rL~tJ_7qd^8*07F z$#kTM>0R`+Gkt}Tul&>J@I|CqK!6gZL5y=`yaoA2J)qde=O~r573>7cMSqd>=GDkZW+= zaE)iT*2Tki{Cdkq=%Y}8D}0>`yUbDECKDQHTI$-2Ch0qcj#pOy*xc$W`!-WkZ{)*) z$qu@slOO4iCBvzVdW4UTwRS9{;HelqREh!fHFL>MkleW^QcecQzC9FGY1p0*8l+TV zS#Wu1yoY^&<^2~N7W74yPB}AXKghHpWpcLhNIZNf!J(WPJ1cKTwa&@rISE^qX4>() zB^pvi>vjl^3H#ieKlgpZ`Vw?R0sDKQ8%xVXpQy55Cn!WWm88PtDx{<05tOCpHMU06 zb3P}izv9(O+A4#Kn;-(!bnu^*KefeCe>i7cJz5yEL@Ydt^)CyHdnb@x3Q>>{aR{8p zTBDpSjupldGilD4${<@40)TEwOrS6&uPPY9%iGlYFTIiixJ;Od!KYJr@bVXGi&v6N UB=v3UzrvF&VZ+qSW>t-br*`=9^LIW*=a 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 UB=v3UzrVG^W02Bxt@Lvl+ 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 jd}{P;NIVG^W02Bxt@Lvl+ z|A-$5=l}8IK$HNG|B?UeHrx^b`oB7I|M0&@@*n+I=l>!|KG6Sa|C8kd|3B@%e31Xo z|5weg3GVA3KsiWiIs*VODE|=rUe=d)aEAxi- zVjCDsN|`>fu^G5pNFb-}da8=5qmNUsmEqQ%5uHk1U)uc|s197^>E?Q=ghVXC)tk(Q$Rb8^~E=^8cNVLq3hLoC>x$Q5;1|7&u_tEWNjDTRDo5A{xRA&cofT*gn?fZUM9{V6;@0&cr>XNQl%VStBwh=1Ag6(FgteYQmlP^f zuh!KriId4dk+&{9R=6!jCp5WJd}nc2{OXPVu0Z%_{18_*yoMC`Yf4O~wR3+kk|GlZ zL(QdjYG0?LgGl7$)pl+_KKbbP5=PwXuycQdAPM%#A(Kqd=vQSsdw1EC4Cai>qN#G- z@5Hskz;bv$cpt@iu@)^C=)ABNmVrO^T>?N5TQ&EuS*UxvNjf|W2SZCIYP{G(5P=mI zkle|IGw|eRcwT|rD;v$}-2TQN~qp>ru30+TK ze>1vhBY7j_{;m}pYEI&H^}1HoO|&9d+1c3awA0;RGRtF>`Yh$z+!Jn*BnA6Gn&Tle zi{;ZfnYIg=(>+kaEhGYh*sK|8VK6+Y`fwAQR+pd4?CEG9HtH@3YSParKbNyeZGOv# zl_O6gUqGZ?^oE3NAqY5#f~Y$~YqX2D%N6Z5;cz=jXjmzZ!m)@1W7div$Ga=1sKX&C zYv`>Odm#A>2Pz1VCstD9db#O4ph#+?v(a{0CoXpr zB7FggAqv9bF$_*Vc0{2l#?j*BhM*#>sC}^O@h9`7G0Z{+MLb6RJQw$^Qv&ZY=4LE7 zmFXS1`WIvY`AdCK>eRhG)EShcn*7xc!GuMK;J~`b>78SEPa)z6=WO-&(_<^+^xPk# z*>#~_kp93372)Zr!lB^hm4%3+XM2>$5KvHlYXgA}i`yA4vL~srr<}NRe`L`d6n?f-FsQiOO#Pq z;W05oh@uOONAg##&xD5e z4*b9mA-s&gDhd&OG`_|)=2qWq{AX!ouLW^`^X5?M2KY`qb6R9_B1;^uNO;t5(i3@e zb941nrJIyJC-^T(2|t_@ctlSwGKRxmpadwqfvWdvaXm@@GEfu~#V)N1j6PFVky|yH zN?oKfAG_XqFdZ)1)orJL+zzJC565P>xXRB|qQe-asAZ2{+b^I))|(#Qq5f4#sDpxu zhTyGDaA>`3zyY$HMGhMgd6llqbxchOcDd6m4uw7^KoUTY4P9(7pVBKqb9v9o4WY?m!ms-XxQMZ)n1+H43!P{cVBO<1L&d?_V|1Ti9c-XvQdVE~$B z?vQ|%cYWRWI|kONWT+VKQb`{WVrL;Xyd*$M(wU=2>uXMDC7W;~IbCRVH=MatUS?6= zJBd|#N8Cngw8Jj(5hX!txk}|4U}1&K|pf%!2&$u*Z-ozgk4=V~LMT;BRHn}^nX;dC+5V;ai`vfW|Cvp7gKjJoX@=bN(w;h3`Q5)SA%GKC0S(Hc(UPM!nvlBDD}dW_l75FJWL-n|I;W=bszw zF%Brwwqd(qHUal6u^jL!{Dc)%C=`n8wF%5xBl4oUHkw}EIEW65tM1EIjYZN$I4^hAk+CtE5G#@C+^NB&9|Sm<#m9#6%s|#$;8EMZTcE zTRIIGL{JuS?M^&L`1kpP$;)dH3x)3`Hwuc(T7lz|S=?l{|0Wk)8Q&w7i4rHZ|D_8B zNpiw$3vrWs_SOElRisbrR1dnWD^B#JBrr zXEen`aT1&WM^GCWEZNBBoy0UTs)#lw_YtEa3wSbhEKLl_3%)j%PuvuiIX zjneDqG_S!S2S}dPj9k*Wq{%jHgW|LP=GR%G`IQ@-NfXZBzfNuF~Lgl976pnGHR%wT%>g$tI-Ipp~BhgmP>=9b}~ES z+4gHPGNHh|!;3Q5T4SyBA;k@E9hy}0hz`Rf!&wHx-67}8{CYQDsIu&!)Ox=}BLVdo zkjbIJ+SX;emLI=`2aZauoI(AA2J`WuleB)~f&Fjws0_&N0hV9jvQ1LnV0n!sLE7ZnoIm~*jAJZx%3U>Wamb2366C0feurS6 zl?j=O$ZX(3pDsCYeqrfb-TH(?URt=oM|!y1N9)=NHE2W|zq?)S&y3FmDWwRQ6AmyW zadR`8;r-)F?VsESYRwGDCs%G{==G#9D%jiVJhRQ4lY&(y3Nb8dqp4a`U&Hwh<51Ow z!{b8~+XhFZ*N*1&^fWr?>>qV^hr*D5eKaO3M5ft-}1E`Z?DYN(IC&rs#|N0Q8*!5M4`)>BY*40w*7>uYzzfVJRhzVv4&a%0eZ z6V`-Z;yQak28y%Wn9`DDVrWR%tX(w{TkAQ{qy85&mSqN3V+gP^d}km+Ou5wu)kOYc zjil0v6ghP+`~HCN4HW!Y<;p>)q1%g9lB^yDI*ivNw<$~qwtg6MYx03t7aiVuF1;RZ z#Rg`@9%ihqFfl_pj#9-h9~T;h;Ydn9o%VB3q#%+zos8*waRJ}HLWrOW1OTxH>6h-z zlPl*i5?sP_s(8DxY`LPH@jiCsWsWE(=P7w6!oDQo<4f0)<{AcwOu6A%^b}@EF%S{1 zuf#K{Y+-?!;h;`Cvxu*_0Q**&yeM*Fe(QOC5XtVe1=oFFwYMnl6Nq4ndKr)T8ei=| z?)$M0jmm^!Z3x}~s;&WVj|Eie)?bySGey%QbA)b`L6EZ*O8G4ld>NoQKuZ45Ehs~b z?BUWo;!Iq>Oj_A_epey_2L4NAou-H$qkYIb-|zQ1h=p~DX2f+i`Bj-6?cQT-R3|u0GaNul0yTK zq>JR5A{tZyZDQZ~tY>)d2@U?RDvI8?NM|o6Psa&e83RNLZXVE(B_e`X{N(tRTW;%< zMr&QWPA1Ac*&Huwri0b*~3kuQ#Tz&}2Ss&;`hjwgYTYwF+bEzi6*!u2mRsWV07R zU<0LS>uV08^+#KLlOK;5*#mH`?p#1MlHx4pQWX={kAL~s$?$^lAr*J3XI}L6tjYj{ zOcnf_jAVy7(!@A?#G}7dyh8z5{IL|DHs0fK16XNYV&V>kMSZE>$Mfx zqR2me`AyS+AUy3{7_Vcz?_p1Cx)4!PH}GZx^+{lRm@Ygs*~OihK}= zR2XcDAmLvR^<51NCS$nh8l)(x&Nq-VoglbL zCyxj)g3zkCSQynRu*M}>b<>Ie#=u)U4tzflst6oFxI#rlh^6ynw4A+(f@aM)9@@>P zwf=k|@wo#OfG;lut{1}+bb)9oO3`kVrEqynH(M1fJ&re^> zN%KE5&d8B797YM>8-Yqqo{QsaVz*{;^qfK8Nu*LbG?j$0$2lTT>qHNC=|z;LVyz%e^@pva9~Hx z*eUEg$1O|&Itd+uqgrMVEa5EDFobGtV!c&-MLr*T=s3BZp+sqg{<>_`t-g)L{mgb9 z^#xPH5}Bv~LXm9^9X{O~B+P1Pp1Fc2MF|SLk^7TZ|vZIdC;wD5*mx zSv+RyP1PrI+YgCocKcCmV~E1k_;w!9WLHOM!XYR^@u;v&P~*34Y#AN5`kJ$bP<>@5 z${TKq4_+eUaRQK=l}S+7xyqbIWD{cvluyBFkW~@HWDAX`*w~d%YPh%XF)Otk z)D2c*rQB=9;ZRVduT+r^6Uk>W`MFaRP)F~F1KW-D9FN_s44&qIzzJiCyNXolyvnVf zbKtApQcDcI_A(U$xETDa2JZ6OU^gU8N8Lcs7t?5RRX}l>3=bwqzlA3RPX+3-H^?b2@z* zDrJw8>m2qT3G>6x8xcBYLvsYjDS1sEcvM*zBOC)xN?==5Dgrq&J(e8jLDL*mC3 z^E5)8j1}StfOe&aAd`PG#-xk?5uT4t)RN-b&J`V3YF+(Hhi?jb(RnOrGoa)GzQu`~ z3PS)p)0HUani$Mhl2~X((s>Sr!YBK##5Qnxo$AlXtkiI5qx$ z$uP2QG%d&dlhoah;Xw0eI&dwd!~#z17q`=gUaIriqDvBE4{2Q{ab*H>;zHk6XNfzA zZ>O&(fAy5SsOUrG1(I9oj$#j65D2Bq@IdFkVAXU?nOPYD4}v#9()_HDw6P;Q(SN9_ zX`L&uu{gy~ca5O?MufjO&<6mm|B;-7HQg|pYP5cVc=3(s!pb;glnsrQFQh+7p!Fcs zWz#NJEqr-ggCrH~{wCa^mX5ffEuXy~?N( zC>3qqAp}Y~fIJA1#)`?Mdp8$%yW!5ZazSSIs}u*wL{tbZvG)sVeeiDqU&vOIBf~Jx z4kMC82Q<6`e`@P1;Z&FQ{1tnD+?^sJF)NmbV*VoD4zsGroWiP%3`u~}68O;3V;5)9 z!}+*|AZiT9x5XQF6KCl_-wHgNnaKryAjDHHR}vA~4k+=x0XEvzy@7-vaiL&FQthGKn5`lwhXJVtPTfV+~t&`RZ>0DLqzbH!{dbk+RgG56Uzp@fm!)ofeG>^3Iam-4KC--SqMZ zHp|PrA`Kud0^8%Pt=Hka`b@{eUbEe0x7-3(DNsJ3SRP>6E(48TY z2gq7rru$uXIJSod725N4F^J;l&Blon+WBYG&>peJZGXn@W}n1I2rE96k)kqQ_2>ee zn*tXxD5Uj-kX}x9Z*}Z(#4bUAF)EQ-A@ngH%}f~i83_k%LC*8O#|%nS@O?iW!h?Il zfWj%+(IX*fCJvdpTD1WKxt>}yvCcZ3pJCJ(Cs=yl`sTo!@aJ1<_ri2V%6leC3@I=Q zk%`4;MUYs&Gc9#;tfruN%kobXONs!jjGL_v%k!-Ym{M7tc7v5?S!?1z=&`lqyS?Zj z#y&WyECmuKNSs$;X=0@KMKHwv$CAy%XAfR}d$ZpHG&D3693(WWr?byyug>>Q+w^G+ zg9Oo|S*XpA?;gipEBd&`0!$KSqmCK2@#KX2Ag*vbRaAD{H=zP0R(K$}o?yzNH))dj}!*IW)BLXAd|`uYhftG}HokMcj5{Wnf` zeePG1)^}6>u0bn!bo1v21W7fK`fn*_0H_%OFw25HG1XUH*#o7rnXNVpg{sLXwhq(w zO4++jo_2bH0zC0^hqLz{zK>GnRwD~oIUh)r{@#!)3a11d^OJalKJT@U$;QYf(K$^o zdKQUD!JxJUJZ!3!q)QcrDQ%U~q(+IKB6%|l1OdR)Ewa}3yxuD3E7NlEWl|4n-Qe-u zujR_`c)a8^6bKE~v`FzC78i&Cq6ah>(>b60Rn8Q?0X>WcfgQoAv4YKFDTFA|2jLfF zEHo6o<*JV1cD6h(Hrox}Rq(o*?DjdU#bbHNG#^qgq)rPJB_CEQXO}kFh}kZ2{!>*w zYKIY=NK{!qiXKltx1J)pRg{>{CL@sgW0BBO0MTOB{(i+=9CcyUThOkOIB(B8CXe|@l@ z&E};2$i*utKL7T{Z$EZsXXC2m_2C|81fB7OM|!Zf=3C4ej{aN>2<)%tgI-HX9=Psl zeE@=RTWz&o-i_VmeqNg;Dfgb{F@9Ba3W5sDM~zHdN@?UZ~I_z z;wfUy7l_XJ31Y{g!3e)VWwJsRoMsJ4jGpnNE7)hNNY06pMxGA6oMxY4A1Y64)>NRV zHV>~>Gqeo{Z%+31u>RTieQ&B{rv9yEQOc|NWmMJym0`r}l_mj$J8|XUbrUg)%Wv(D z3H|-H$>8_)?7vEvMNm!oFW>j7ID&}MKnOzng%Ez9*}{2}O%wkyO~CxQ?usbV4E-2AwI)WrIv%2xRD>sKA31v-Xl@TC>@^N3*IEtW)e`|kql+dYOzYY9MRz~ieM)ym z_nnx-a#xZ2I^!uv0ROZ+geqQde74R@CJ$K;0Hxvg#+_#aL&$kj!{gP0@WQ+%y++n~6@Xkqm1w zo_8PB$J|~x3l3K(6JA?CP@2}p~WIRyC-1a!$H}HYHzwI&; zO?+7XUZ_D?wnB4bQc{b6_i->ibMv!$^}Xt#lqv2^$Xy9GZjf!Xl1AY7dO$LH>Ua25 z$bQdA5GR}!G%&5z(tCe%>IKVPEN5800s!roeLGtoweLy@33n%cGDz$q?l%Yj}>xdt`q!^MxClh{Uq}C#X{!~bLOrK(S8psai!`}87TeNYw>3=ap zjXxTY610NNl1T``N{_VvdWrSlRqS!@Tn(Qmw`GLHhr&Q@?zuaMvgL8D++rEMlEDfK*Pg9gX zz{c8*2`eDA)!#NRf&*w$07FGU_&#{6yI-vZPbk7Nxlwj`a!!0T5xf8heD7c z%F0IVMr+43w=Z3sRe$pwMC+;W%*`1v0_WdTqX}LY*R$08PMcky5=2RHF&)nCR{0*m zcNm`s&eEW3*#O0$B8o7+(gIO~ zpUoa02D6pdO=B02=K7UOsu&MlV+eVH4@W(DZ?>0{{W@iL>XlXDJo;ih`N!pk6}F?Zn|~=+ zQq^%JcDmL!tHoYR{g3NlZB5pMbgQuymdGRFqEmrobeO*X<4kQlLVrwZ3cA>{J3n93ee+qVl#32g53Iz6n$=2D!(mv) zf=m+}x|(njvi>l&5W3A(4{j+hDfG_sdCBa#{XP|T?)nX9^+ewW>>N?vN6Cufx+Awb zeeTb=wY>M^Cp{l4>hGbxwagM2dw%<^mS&l%iAh2xJq$rSrY}TA@mm!GN%mGL#eaXG zPB`2h{~@I9cRUjUxWo{@_hxkNc}i_c%(k~FMeP;({w{6-IZ|vY*cCTCrzxU_Q>Gnb;>j8;2?=imMFl{IzKGh&o2eSOu29)TB@(pI z^m=eeZMNIc;25{jcdaZ=wJ4~~T&S!zM^hSCd?q?6tt$0<%YXIcKsXx!(TU8kIj_z~7 zKx43Q( zwo*r;T{a|*PFl%+STsYdnuJj}$%9=xBrPbkFdzVvaylV(Vj=QIOU?kz|jwfnVM>ocRz2P*YkdKvMkfU9JfMPPg%_h zN&Ywr)~^~I+*NELD)UE)=obuxm|=fD5PW!}Gqhay!A~6jsguH&3+ys{0AaKL*ZCDz zUeEdTlptG`Nnw<&bbQ57{b<^{@9o&2+^6ghQuyQ?F;p;|5g9Ss-9206z3JT_w1$b; zyS`@=2bz;%+}8jOH&;b<3|;gU?nvltCgcE9i`T*^gk)Gbdwl-Rt9uSt^VT6`A$2)z zbv0{uH=44#zVlKjswk@u^Y|}krZy-w)#^{X=c&lQQ#qeVD=w249Ew~eq8W_9fqZDa z%a8Vk;lvL#fua)f0K0wBN%6wNnYJqq|2GKgb}L@a6NH{6ISTCc!7J_>x)P;xbx+R@ zn}G)dT=ondR^J2nMRIn__1e*Vq+oG^MeExLGdjz7(Bl2)uu2N245dLx5@!PEO=D!~5Y9q$%xkeJN@VQU_x`o3`|_E5y`jqc{}**q@)i_>Ux zxs4V-Fttj9efAnrL=r4vyW1k@r0uryPpV24jENDGt1NU;*d`3R`NwvC&vQjmulZ?& zLXwiT>&2QCtNfR|uhr-my~~G>0xBjQFKWp>Wq5 zo?_Y28x30xU(bR_Q;&^MW8vmsbO=1_@(pGEVAX~5lIPEKSu6DV-4-(!p^YnaS^w5E z6f5ASC68o4V3&wu*c$-`>kTceMonhuedPm8dq3FV*!*ijt9FH5D4OzE=s1{}LDc!? zgT05t=Xx3zKl=iKRSg?J_Is~+v{oQKlhO7{GwiB zpb*`b+wE$;*LGEJ_?nx8&Q5!-I+PZ?*_p)+y$!whZkt2KHD>MA;Is5kb+O6jNezyg zy>2hIwgh{vR+lx5Ehyof0rh0GE}*HuCv1x`AOZ^v7#^08b3D%uRZP0jSXpn1M1l_( zlo2DYFiC;KtpD3$!UxN&ZV{`Xt=sg7rt#y_yeZbQ=bkHI|Ma zg)6o&QCfwkDarZ)t}$2{n!LR=j|TFN1Xp7*HkPpltwx@j!#BFeoh_+0yMLS?I&!pE z{%&+Mn2erGY?C2fu^v2aXspK@Vm2wit|yDwDM80GE~~21b*NxkDwf}ZB6ADkg^5Wj z3>whZd=6jo5tj!sSEPckgX-s3QE%SOEWYSC@4~o!3ry%)vmvS}Zo52N(B=pl!Ul+D zdNAK-HGiM-GzJ#8@A|MmC9kGUzkzqk5NYzZ(PQN5CRHX@BctvkvSGm1G(a%r%E0dA z7fw8WG;RDjt*HCj@4o+N-(O89+hcgP;1M(~}tfD9GxA!7+ zYxWJuM#}3&8C6vAt7!)b@!guks;CErHaa2gtIfqPBBIIBs72{OS}KY2X)A3umW-RC z2uswVnt9sNxoZ!Cckt-)#FaGA;u=nTmO9(Ve3%tlI!!i97x1);<{2ksQ*p6E=2EX) zV5Io>@62}Y?vI{zy`) z1@HuxM0Te$S^s7+tkC8*T7Q%}!wurM?8YJgCOk%?NBZSyy+2u0)C>av0^tN*^) z2c+&3U!5Q%D zXc^Y)jpmo+chc|se}V#;r{v2T5>&X1C5J+{cNh76VE{_s0{3eF=9N2@BZtju`yR}W zBbJPKb1Py{I4HQ(-p5KfFIe0ek+mc$H0OGgqh`C!3QKKj>iuB5#`^cd1RrE@s7YFi z?q@`8_A+I9GgPUH;6Nm^d{pV8nr431cC@v~{ZWJyMcFtD#tix}z9u9WniOlS2HG#9 z!{S1XCg0h93Vj#8x#ZLwnTBRXX4VRB+^U|eucK@AYE9nF%V94aCMOB6Or|=V8*Yc8 z>senr)B?@#{117r&<`Q1CDD+DgPdm1O?b>i!8X+B2~qaGKwCx#H2cR6B3am^=A(aTtFSM{``~)(!*k>5yG9 ztUAq4`Gf1ck7`zOycX@yO-W@2eshwbJ&HE8*}uqr07+(kLTp(>2qrbCU3W^C2}u{$ z(sGp>UoU_yKiGqY5XNLGWEtmj!LS!{ZnA|YmWxI!QBAl7s}_XWP*?s@0+0+N&R4Mq ziwsLiNe{37s%9LXVO&MMps$!yH4XT(l&Ni1{h*HkEt_ezp~F;8`?1;rJu`XIQ@P?ihy)PuH% zf_(R{eine*YMH+(AM(pIM@(kaqpZ(BAZ*V?0q*5)5v5go&)_r5w`+rLno=m?$Fa^(+*+=#;ZpJ+@8!w_H(%eq|S!{nUZ zA=}+oVITt`0de9<@bQQ?)o|fycopS9$@Ff`6>8*do4VbKdDz$jrEzC+QjQcVrV7V# zdGpBX`UinG7>qw9m?|jO-tZ=M7hOt}w(z$DyaMbE31T>+^7{dI%h^G`y!LhfEC>X8 z#`At23>ITHcHNYTT%gYq5J_tf^S1Lt$^0dk3U;=T9#O6#G^gn5G{_}ZI+5mC!o-SX zpjcT>W#z?xH6N2hvVy67IQF}3a=YS%5alUcgK#P8ep{QpS_mvz&q=w-gqVk;Rf{*vL}VX2@bVNn@a!X^!oCSN=~E<-7QbqOg+^F>D>l!TOuPytB=?7YlN2hR=J&Ky>q&q}u6wW#w) zptW9vW25$`XlkK-(H$Vz#Myh|arVthV;8Kt#0K$qy7f2EQpqeKtBC?l6%|<{<-@-t zclJ8n!~<(*0N2dU0f~3FysjSgeuh;TtudIqi4GCV>86$fT9^+*V! zd!{R4cBM%~`p??neaaCjc`dWBq+DVhaT7Dx?~!=y2^U#M?vx%;rY1|x5>VRGk|d&Abu)SdzU(FV2S{(pO`;W++1Nz_QH%Lyf*DAML{B z&;Uque;%<;tF~5)O)wJNcP3R(@w{r8FO5k2<`yctyN2!cU}4b(U~D1KKbhp;*iInO z?@&>!Ts+Mre8~NpBw9u=V$gi^dzOwbd}sBKuikD&`Ny5^eExr%HB=cwOM@K0UEa!% zG~ASyN{#CZik_z|8HoN_F|L(oXsqZj{SpK-zC$bL60A0phg4o20BJ=l;TV4N*fVv( z7KNgloM%JcSfSU3saKE5^LqJ)NM5v@ZrLyBBE;j7TrLF8aB49%OZ*Htt>2w3e-D)pgf~e`oF}V5*tBAt$B36-* zHg+&q5%oR*1K*QDCv?-qLOc6_+%2U=G~6XD_d}78N6koSL9%!(sN>mi7*+exWhaL|>xBpUs2Ot3`&O+_WFp zOKtg2JZ&CMX*TTN^c^7$4rjN?v)6OB1nR(0yISB0CWX6168Di^4nRUikirTmRGbOvR0%}F%$C2nGKC@-RYBW@LEk{G_8&LkS z-tG555-Zo$4&#IqlU679*rlbSLfW#mSu=gfXUy7EVRe(o%R6^qdQ3q^H~tsRNRscf z8NTN*2a=?*SGPa>Nv7y}jDVmCFho_Ac9Z=D>!0m4OcyFP9K&?@RYcc}K*$@Peto%h zO6W5mG%fEmIHTC+5N1yRKvL?MdJZ2=iyc-(`X&61? zO==&g0^9&BRh~@*M`KyE87TIA-gA8rERCrlvA+>H zuES$ehW?%g5UIY%0C_*@Oh6U3e-=ex5@Y%;)hVdUxQW5pP|O?L z8qXBRGqTKnpOXzJm?RgXpCOb&BxDsv1CycJy)!Wn=awq){S`y%owXBQ%vaOvJALES-kOcD8ZVdWCdarPKHLA(-`g-FT2`wS8Rgc}hec zehvv8473B0_$FzuKW%ldZa;52vhe#3 z9zGe20v(T;QR-%)koEVs%4)lHU(J}C0QaG{#jkJ!5lTY*E&r0h3pRu*Vx(`U?_qgc z?wnn%?}-_@xbh!M)S$0BLg2E96&WH%>%gjlZw4(zY4Ax8dkpaa=AnUIf(AMm#oSAM z34xeM_*{xjr$HDFF0ewiMl5E5p`M@_4t8vJ9BR;@Vz6-tI8AC_#P2yz!kOWI3^pf# z1gmtI>*h-;9nC>0`h}#PUsf-c)yw-TeF?A2RmMKx+YH?3Ivj)RzjE}VM|?d7Y_2T2 zfpMbE{c))peNs57!`J!m>YyHqOs+zOo(SrrS_nZm5jHrrXpn26Q@n(64bRKXs6+~5I^Je$bsooY zW1WDH?eYNDnq%0tlOAqutV(ecIrnjh^B}(x=2%(1=ZC=0!${uP{BanDqJr(ZR#`Wd7)8Q)T8Z>krd~I z(bf^g)_7^`{eEf4r{p6w40|Xd3!qe^1t#-X$nJ#SOVt$IPw8Db(AsQbbb8f_7?tlLi)O9yT_3!(uL1U;{3jsCsdC?Ivk zvLyU|&sW$B9mL25jVgjA>{LzzqBX_}>1ybT8?K_Ma5%o|a+}j3o|TUbB|a<5Z7CijV!c!x@2;iNstQd$%If$ujg^8CaPrjGvc2kYt3!tt z{#0#4v&S@tio)=SMBCpQ6!~1+P$Fe5qz8Rc_IxL9Vj?~uXtZKMhb7m(Q!sJL-^vv7 z?=*PAx#1f))2YqQdjT(ZAw!u)I@xjz1XMWiGC!A@z0bD2#|iBGOw0!2ld6RSK$-Sj z#s>Xd{YY`m`Xgwos~A|E?>`t0v_pwqPy!-`ZMh$@{47|bSOVAT!H3K=m4nJB%thXV ziMpxzqQcvgGOgIDE8(|Duna~0gr)B&+2oRg*YfsjGoYYG6dRnC{*b>NI!L{KEQkyT z$HTi{3tZLxeBT~L|8&ew`r52ltZRh>NU?AqsvaEZg(oE1$N;C|?R=bl1_Ltjs~Rba z6xqRs5;55k_$so(#Z*CI!CM>gu2s3}^OV*ytR@Qu?9ziYY!MxUQ6&m2Wc|aKow}Y% z*uX>`QTw=1G|sB^%A~*ghfEfKs5`bmljbE6?a|D2Tt{Q&<<3_8(^V9xTs~$MTLB@3 z?6y1ib11VTpN;6Wsi|TT*rH^Q$D6a&+ARsH3B+MNgCi}M{D>50#jjQnoMZC5SItp! z5vddX_YoZ73oY&Vad-x&`RolK4zMF1WdwLk?p=M z^kBsgqWG?%4_FC=LB#4Mq)QsY8QoCR_v8ieY#>VINa(lt;K(A7j!ON- zW`oTy`{%H? zbB#Z*#%5-}$-Mi4_Jyz_joSBR;g9>5fm4dXft%5}RFd~+SWv1Bz2RMu&)tDbmHfRB zk@HCn&!l51-YCmvc*<&}81ay!4_;3-%-rnKc7i4F{7;0!3G9E`kRbh;lrexp21GVc zcDp)ioP>aCSocv%KIynSdY_k zwC7r^^`|~z@qJx7YrC2H49y1|{n};lzz|bHfa*Kxf0l#n`G?0{EA9<)3ZqjZ^gU;z z!*N}s6ai!Tm9x7(&*NDPGh+)BxmuaT)0kvT$Pr8;!K|R2(5X0{B_8$EQaQ-sth0#@ z%>}`4NXC;I1)yY@W;PU{1iEE`IIo4Kg0tY@^l6*XAY)NlEq}MH4dVO5T`v6@SAwAI zA~4Jcq_5JNmo))MsA_bX&X@KGqvzG{0itRY`h-4LF8xkxIJuwYwrP655gq4zIbBA@ zM(Oij;PNu9#SFVO7s#G0N&CdL76YMWr8x*qo`tIs1skBiAR7uT{h%4h1s_xmYEDSa z_CTjd>o*A;?o9R+dbS2mhF=Y!dy+RgjN{pJyjZQ*$&Zx>)dtW9^>@_Vfj~6{HS2gE zTRHGMr}L6!3k_rUsllzJMGJF25V~*XU!3k?V#$%L$Fr&YfBsJZ@E8y0{di~uZ*5FW zajFX(ic@$H-gG5n0HkAabO~aRu*L;eHnvhVS+xyEFxeHCU`Vne^z0Ax;Kb^SZh5p# zhi)Fs$mHbvv$Or#d8V3CysDQ$v#qVW`<7d7sjam4nl7~4x%c4t(o%`jJ!H&r)_I8z2j1g?!N8&!Utk*Ft}=xW%}4-58dp`3 zSSgtO*g{}Y|8x@rLgpn5wJ*bwco+l%GV9P#u}{%BoG(FMCtF#`RJS1Ui1oJtiNQ zx$H*xqR4iWLRTjpb)^P^?u|(kR8h;eINx{P*PnQOICNaA)dnT(+FZGCW-w5JZ_9&; zM90))*8#((fBsG=P%aIb(Y3(>ht z%#lOcDcn_(?5*tDD-C4iw8$7sOexGH4I2j#;A7rr|LHC)LqNr23!#kd*s=i`!a#;4 zCX1t;wl?jx(}`xaQL%S!-L!oEbo6poFZ_1rrq%coK<9pk-1O83*{O$WfgZ<3-+uA< zjmsCvsxbkMtr>x6@wx2~rc^Ju;a}!VE<}9msrz60=XIHWbScnYi*_wl(ILG$H<*S^ z)1uOhBCn=l4yGuEpH?tDv{m!q*cQ0hI~op*IqA2*zwHUE`?e>I9IaUR?fqAuo|Tn_ zjc@I`_wU;8p!VJS6&1I^lOP=J^eT&XNB{nBkK(;o zXb|wy12@0@)Lob?5O)fj^&(v*&RxyiMk+3V>qpqs6~1TA%ahyGI>+x{>Ms9=_xC$8Y!efKqy! zQwk=g{Ks@@AQ5GgCroOXAb?YoV3h&mP_c|#IB@fZQlPY0t<$1I_v;>c7wd6TiwTXy z9=Y+tZ$5ZA(@%pJ94g6UGhhrKIY6VzlbH~r(cc5GaU!s0s>IIV}If`&(KJohAWfShnj>s9x?IPCBfQiV$x`s%%x{{4R! zBdQrAv1<#7;YVk_IGsbso&4+HU*8Ug3A6e1^`~*%NhDB71B{d@x!|VYD_Rm_6KXN1 z3QxIo48??fiK7bUA{k=sOX*Seuuw1-E^6KW&kwzgyj3sYn@`>M$^$q0v-SA9{Xs#g zsbU6@Fs%_mf3a1^p2LnjY1DCN;rJ=aKq@ii?`JkYBY;H8+cvKKdeIh4`{LfKPQ_%Yc|3@>%}Ay>QDw;DgXr?$t6N|IW=hardR8x)chBV~mzQqGV+O8P>cmAA3!Y-L$%M8XUTl&q7NC{7%wQdQi(#})TH*QNK6)Z$RPwtdsOyDmL(%i3l9 zt@zZq%t0fE5|?5sZ;>pDf|iX=66$yEwfFWrcr25p@X_@9^S++}1VKPF??3zCYY*Rw zqkTvgTwasq6y;drhj(gGoyZuTstD$@a01)4553mBb^Gc`Kr+*sDYQ%947b1B2NitT5?6K?5~Z?j^IiD zbcu$8eGeIT(an$5IAFMA%f|b!Ib-eOZy7xV5K5exY6irF6U0oNNQ;@nuF1rjh()k8 z@#ITxI{y4?L>=(|`ON+tNTlp063^dv{Tq+nj{PV6vQ51QXaQxk|5SOXj0<+Y?bXQU) ze>9>PwDx$=Zy=zHojB#nXmAI6=C*>#JifC%Zyh{$b=SvjXmYUOKyJ( zU*xR*7~uPG_g{17%7wFNvRz}C`Efc%eB?#xn6x-Ql20b*3k@kH;`6`x3|)x6!w*}7rvzy5sos_$lS zpG@*?HHt`tvYNu49hMghl`~Ean-Dvl9=Chx+;2jGQ2!A}RFAzMefArGP>xw&ee|E( zuf%Kv^_N*~$fzzU-L;+a&!QqJ+q}VpNm%&!tYpddt*2df!*20h8&VtX@)6PytfLy?TQ%DSfpjU zZg;*s8K1^V%Y%*ZCt3F!fWDhG87E|+BZBf!VJvkhr@WS`CLZFqmAE>9%22@o80=iPV{qd}(r929#B6OVimXei(pg zfG>h!p5}+0e8Kp0|4_&uph(jkJ#3-i3lH4<@k@_;+;m)eHS{1|EfUF+9X%96JxeZz zl5)zVkCcxDO{CFqsKzt04t6;O6Q=o0J*VE3Z{xr zUMQt0KiLr94>tO^6?ul3ef${|f=5lyCZ;FEq431_W3RdU`K4z}`|yQF zXHWhpP+p1?C+*A4h>!YLilB6rN^0Or`H_sNK%-CS4~-=cz7HtnX>eQpo zyclbiDFs8w5haP$OXfd!&tDeJ_>ww3{NlzX1qGpj>=co2oG3A2rr?g(j`Ku$LqnA^%FN= zv}WnN(=NNopPi#cR4sz`V6{1W3>=OhY9ma2%$)f4wzVs<3?GdJFZK{MaRkb*&ZOo* zck)-76L0d+`c*z?t9Yjb)}VIoGvwf-PCex4Q=7J+Zhno>!6|(ozWDG*FFYEoD8)zY zQ@ArnlP$^-rw8vEJ?1=9 zxk((N8?mXfp`=t!6Uc=oFC#toR6E}Z`5 z^v~bLhZAs+AZkhs_2P$_5LwQF*bE|*1<9c}Rc@s)PzDC5&{81-8QFQQJ9fwP_|UP( zcj`4z)(E6!OfrB7Gd_R!ttakUy9E8^OuSkfrj#`QD>UdV;I3#O8~L;099B&zC8uO1 zX^Mq^4h9tl;;*{*rIE*+nwBw%_S3KX4L~K^H(z(!a2#fX&Oc?|4j^*Mpqefv6R1+c zt|0}h7?G7-%J7dzFn#D7eAtP{op&YH#|Y&Qk&9>%^yQ_yFkP^8&Xg7NXKY@(yu4%w z&fP)B1vyb)fG3N!;0DYwb4f|i>{*mQ#CPM^n>{d(Hy%K{01ee@^gVDh7(Owi=a}Yn!NYc2buGz79!;Y<+%6DzWDjd9c@7}co)eLll zWfEC=`I*@{IO(EEi`JM<;a{hwE!x-@My4mN(?Cyo_T&kly!yldm{Qu6n@)lblrLrH*{sd5< zvizAJMfk!OlhEOaH`Cv-_dy3Ab;{5&us$biBB2WGY2~@dPbYqul#Ptq?w<;ixvKO^#lCUdPO?(1PS`ndDIrV3r{Ou zO5M;(AVGK7cX<0gV+QyZOt9I`~4-g$S9&6yjq2N*sap_!WP^6TXNVt%U zjg%mcry~)jl+k73$CKmZWfQGupM%F;e*06^Rx#*k`|rM=0fdY}(1EIommaur;_Lsx z+lS9;1@t4Mb5HUxGE<&LY7`){CokizB+S&>(?}C^ct64q9eFI?Xxg$Z_62w7(I3}l zE!!6~ZH~%ZHtea?e#{NC_knVJ#BF=Yj?J4^FU6<0)~{T=eZ%UC(j5RW=4jpY)ia$J zE*IGAyUMVX$Re{Bj729o+5>bo zxT9Y{@7p+@fEF%dvI#pqa`Ovv3yTVy7U5&7xdqMOgCQJrAMkF4jT{t-7y^EtU{x7b za95UaJv^YdiDyk-AzWM@B&Z~||6aHvMyAK-q>q~F$d+=eDj1snv^7Gt(765Tp zNf?+Q`|ACdKYr)2MAlJ!C8c(L~J6^OHGOa z%tWa`6A*$Ae>@r^a+Es0Y!b&riX@Iyu($y0Q?Lx1;36vxB#XAx z;K8X|Su= zNPd1k01Zk8uP5Y{av#{I=jR@APaIgS{r3-gWVk1BHmx~doQ9tp4p#T%e zKANBC3|_EE?FBj}Cmaf?^~8%8q05@kSG9zd4Nl0qsO03Pu}v<@B$F8myJ``ll1DJv zESE%O4&&|^JH1^x!N1uXi;Kbz@L=WW<^&W0Ns}UICLBTrLuikrM z!PL*ncI}{%U?1(xsFt+IkwkBos%TM*QjnlTt{kayR@$gZoM6IHB%TJCX3hB_hw)GV z;s9m+$gm$P%zQGS`VX$pQJ7}X2rr( zA;tq18;Ry1GL@t?QWTxe52s0Nn5_aW?5Ks5F%;rXa|&`ah?zuCBK&OGLS`tg#5dg8 z$6m=13u3A$jL(hRYR%_^3jDFEp6PQ|ojwJod0Z7urRjV_(arH8M z4;70qfg~)8L8S~R;W&R=>p|pNQLkpp z_f#*Uvh=O=teHtX0T87Nw=GLG07%l52o?+^BHYP%G#-tj?TDsH5pRJ>oH2{Vb=Eq0OP6oKXQrY)X1X~lwBn>VZqRFva=92FDZjk#umum}b= zT@WXu8B(xuz|OREO*Q1fnv&W=tKK5A^RRqVZQO)0Bh6oNv&y4!ni^4DoCh61>2aDG zZ~zQC`8Ws>ua21I_2=XlWBFYFgL)ryC`PvMg<&1DHme+y2eH%|fNc4&WFL)2wryCm zX6gKu3udiZJO>|CD=*!F{S2U>_3-r0Ojg7d_5Bc)+Y(Y0hiFa5<-2vUkt=IjQv6z{ zphy%_Ti~i0+5iM(2)>w=s%I2i9uQmgj503b^M7L-UsNi2%qvTo(-#dB9KoV{_?lI@!}1S)pNqajFn zynYj;pgWtQh+mr4#Y;(FYg*Dxb=fK|otbo2ii;$|u>l?%fK>H>{7V9+dPMEQV^gSK z@R4fz!m!teS_T{WJG5-yrG2+PKuqgSJu!1`Rs>KY79Y*8F5T-EfKnu*6)2wQLhjzV zecQ%$J2$V{yk_O*^((Mxx@_l`KzSLCxj-l+jnzF6J>pR9tIF-=x_*dqpds`#w4JSK^|yo7Ds31>f?Fil&u&MPd+$uF=Es7hH3|I|X)16REPP<2__ zb!-ofq9=t7QB@Uzin5CG-B^x@IV@bU(GC+7=ut(2!C+MtChP!=aIh*Gszh^$$^wfX zrP?C2QpG~R0{Bp!U}+EKeN4NcB~X jd}{P;NI + Expensso + diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..7ba83a2 --- /dev/null +++ b/android/app/src/main/res/values/styles.xml @@ -0,0 +1,9 @@ + + + + + + diff --git a/android/build.gradle b/android/build.gradle new file mode 100644 index 0000000..dad99b0 --- /dev/null +++ b/android/build.gradle @@ -0,0 +1,21 @@ +buildscript { + ext { + buildToolsVersion = "36.0.0" + minSdkVersion = 24 + compileSdkVersion = 36 + targetSdkVersion = 36 + ndkVersion = "27.1.12297006" + kotlinVersion = "2.1.20" + } + repositories { + google() + mavenCentral() + } + dependencies { + classpath("com.android.tools.build:gradle") + classpath("com.facebook.react:react-native-gradle-plugin") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin") + } +} + +apply plugin: "com.facebook.react.rootproject" diff --git a/android/gradle.properties b/android/gradle.properties new file mode 100644 index 0000000..9afe615 --- /dev/null +++ b/android/gradle.properties @@ -0,0 +1,44 @@ +# Project-wide Gradle settings. + +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. + +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html + +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +# Default value: -Xmx512m -XX:MaxMetaspaceSize=256m +org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m + +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true + +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app's APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true + +# Use this property to specify which architecture you want to build. +# You can also override it from the CLI using +# ./gradlew -PreactNativeArchitectures=x86_64 +reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64 + +# Use this property to enable support to the new architecture. +# This will allow you to use TurboModules and the Fabric render in +# your application. You should enable this flag either if you want +# to write custom TurboModules/Fabric components OR use libraries that +# are providing them. +newArchEnabled=true + +# Use this property to enable or disable the Hermes JS engine. +# If set to false, you will be using JSC instead. +hermesEnabled=true + +# Use this property to enable edge-to-edge display support. +# This allows your app to draw behind system bars for an immersive UI. +# Note: Only works with ReactActivity and should not be used with custom Activity. +edgeToEdgeEnabled=false diff --git a/android/gradle/wrapper/gradle-wrapper.jar b/android/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..8bdaf60c75ab801e22807dde59e12a8735a34077 GIT binary patch literal 45457 zcma&NW0YlEwk;ePwr$(aux;D69T}N{9ky*d!_2U4+qUuIRNZ#Jck8}7U+vcB{`IjNZqX3eq5;s6ddAkU&5{L|^Ow`ym2B0m+K02+~Q)i807X3X94qi>j)C0e$=H zm31v`=T&y}ACuKx7G~yWSYncG=NFB>O2);i9EmJ(9jSamq?Crj$g~1l3m-4M7;BWn zau2S&sSA0b0Rhg>6YlVLQa;D#)1yw+eGs~36Q$}5?avIRne3TQZXb<^e}?T69w<9~ zUmx1cG0uZ?Kd;Brd$$>r>&MrY*3$t^PWF1+J+G_xmpHW=>mly$<>~wHH+Bt3mzN7W zhR)g{_veH6>*KxLJ~~s{9HZm!UeC86d_>42NRqd$ev8zSMq4kt)q*>8kJ8p|^wuKx zq2Is_HJPoQ_apSoT?zJj7vXBp!xejBc^7F|zU0rhy%Ub*Dy#jJs!>1?CmJ-gulPVX zKit>RVmjL=G?>jytf^U@mfnC*1-7EVag@%ROu*#kA+)Rxq?MGK0v-dp^kM?nyMngb z_poL>GLThB7xAO*I7&?4^Nj`<@O@>&0M-QxIi zD@n}s%CYI4Be19C$lAb9Bbm6!R{&A;=yh=#fnFyb`s7S5W3?arZf?$khCwkGN!+GY~GT8-`!6pFr zbFBVEF`kAgtecfjJ`flN2Z!$$8}6hV>Tu;+rN%$X^t8fI>tXQnRn^$UhXO8Gu zt$~QON8`doV&{h}=2!}+xJKrNPcIQid?WuHUC-i%P^F(^z#XB`&&`xTK&L+i8a3a@ zkV-Jy;AnyQ`N=&KONV_^-0WJA{b|c#_l=v!19U@hS~M-*ix16$r01GN3#naZ|DxY2 z76nbjbOnFcx4bKbEoH~^=EikiZ)_*kOb>nW6>_vjf-UCf0uUy~QBb7~WfVO6qN@ns zz=XEG0s5Yp`mlmUad)8!(QDgIzY=OK%_hhPStbyYYd|~zDIc3J4 zy9y%wZOW>}eG4&&;Z>vj&Mjg+>4gL! z(@oCTFf-I^54t=*4AhKRoE-0Ky=qg3XK2Mu!Bmw@z>y(|a#(6PcfbVTw-dUqyx4x4 z3O#+hW1ANwSv-U+9otHE#U9T>(nWx>^7RO_aI>${jvfZQ{mUwiaxHau!H z0Nc}ucJu+bKux?l!dQ2QA(r@(5KZl(Or=U!=2K*8?D=ZT-IAcAX!5OI3w@`sF@$($ zbDk0p&3X0P%B0aKdijO|s})70K&mk1DC|P##b=k@fcJ|lo@JNWRUc>KL?6dJpvtSUK zxR|w8Bo6K&y~Bd}gvuz*3z z@sPJr{(!?mi@okhudaM{t3gp9TJ!|@j4eO1C&=@h#|QLCUKLaKVL z!lls$%N&ZG7yO#jK?U>bJ+^F@K#A4d&Jz4boGmptagnK!Qu{Ob>%+60xRYK>iffd_ z>6%0K)p!VwP$^@Apm%NrS6TpKJwj_Q=k~?4=_*NIe~eh_QtRaqX4t-rJAGYdB{pGq zSXX)-dR8mQ)X|;8@_=J6Dk7MfMp;x)^aZeCtScHs12t3vL+p-6!qhPkOM1OYQ z8YXW5tWp)Th(+$m7SnV_hNGKAP`JF4URkkNc@YV9}FK$9k zR&qgi$Cj#4bC1VK%#U)f%(+oQJ+EqvV{uAq1YG0riLvGxW@)m;*ayU-BSW61COFy0 z(-l>GJqYl;*x1PnRZ(p3Lm}* zlkpWyCoYtg9pAZ5RU^%w=vN{3Y<6WImxj(*SCcJsFj?o6CZ~>cWW^foliM#qN#We{ zwsL!u1$rzC1#4~bILZm*a!T{^kCci$XOJADm)P;y^%x5)#G#_!2uNp^S;cE`*ASCn;}H7pP^RRA z6lfXK(r4dy<_}R|(7%Lyo>QFP#s31E8zsYA${gSUykUV@?lyDNF=KhTeF^*lu7C*{ zBCIjy;bIE;9inJ$IT8_jL%)Q{7itmncYlkf2`lHl(gTwD%LmEPo^gskydVxMd~Do` zO8EzF!yn!r|BEgPjhW#>g(unY#n}=#4J;3FD2ThN5LpO0tI2~pqICaFAGT%%;3Xx$ z>~Ng(64xH-RV^Rj4=A_q1Ee8kcF}8HN{5kjYX0ADh}jq{q18x(pV!23pVsK5S}{M#p8|+LvfKx|_3;9{+6cu7%5o-+R@z>TlTft#kcJ`s2-j zUe4dgpInZU!<}aTGuwgdWJZ#8TPiV9QW<-o!ibBn&)?!ZDomECehvT7GSCRyF#VN2&5GShch9*}4p;8TX~cW*<#( zv-HmU7&+YUWO__NN3UbTFJ&^#3vxW4U9q5=&ORa+2M$4rskA4xV$rFSEYBGy55b{z z!)$_fYXiY?-GWDhGZXgTw}#ilrw=BiN(DGO*W7Vw(} zjUexksYLt_Nq?pl_nVa@c1W#edQKbT>VSN1NK?DulHkFpI-LXl7{;dl@z0#v?x%U& z8k8M1X6%TwR4BQ_eEWJASvMTy?@fQubBU__A_US567I-~;_VcX^NJ-E(ZPR^NASj1 zVP!LIf8QKtcdeH#w6ak50At)e={eF_Ns6J2Iko6dn8Qwa6!NQHZMGsD zhzWeSFK<{hJV*!cIHxjgR+e#lkUHCss-j)$g zF}DyS531TUXKPPIoePo{yH%qEr-dLMOhv^sC&@9YI~uvl?rBp^A-57{aH_wLg0&a|UxKLlYZQ24fpb24Qjil`4OCyt0<1eu>5i1Acv zaZtQRF)Q;?Aw3idg;8Yg9Cb#)03?pQ@O*bCloG zC^|TnJl`GXN*8iI;Ql&_QIY0ik}rqB;cNZ-qagp=qmci9eScHsRXG$zRNdf4SleJ} z7||<#PCW~0>3u8PP=-DjNhD(^(B0AFF+(oKOiQyO5#v4nI|v_D5@c2;zE`}DK!%;H zUn|IZ6P;rl*5`E(srr6@-hpae!jW=-G zC<*R?RLwL;#+hxN4fJ!oP4fX`vC3&)o!#l4y@MrmbmL{t;VP%7tMA-&vju_L zhtHbOL4`O;h*5^e3F{b9(mDwY6JwL8w`oi28xOyj`pVo!75hngQDNg7^D$h4t&1p2 ziWD_!ap3GM(S)?@UwWk=Szym^eDxSx3NaR}+l1~(@0car6tfP#sZRTb~w!WAS{+|SgUN3Tv`J4OMf z9ta_f>-`!`I@KA=CXj_J>CE7T`yGmej0}61sE(%nZa1WC_tV6odiysHA5gzfWN-`uXF46mhJGLpvNTBmx$!i zF67bAz~E|P{L6t1B+K|Cutp&h$fDjyq9JFy$7c_tB(Q$sR)#iMQH3{Og1AyD^lyQwX6#B|*ecl{-_;*B>~WSFInaRE_q6 zpK#uCprrCb`MU^AGddA#SS{P7-OS9h%+1`~9v-s^{s8faWNpt*Pmk_ECjt(wrpr{C_xdAqR(@!ERTSs@F%^DkE@No}wqol~pS^e7>ksF_NhL0?6R4g`P- zk8lMrVir~b(KY+hk5LQngwm`ZQT5t1^7AzHB2My6o)_ejR0{VxU<*r-Gld`l6tfA` zKoj%x9=>Ce|1R|1*aC}|F0R32^KMLAHN}MA<8NNaZ^j?HKxSwxz`N2hK8lEb{jE0& zg4G_6F@#NyDN?=i@=)eidKhlg!nQoA{`PgaH{;t|M#5z}a`u?^gy{5L~I2smLR z*4RmNxHqf9>D>sXSemHK!h4uPwMRb+W`6F>Q6j@isZ>-F=)B2*sTCD9A^jjUy)hjAw71B&$u}R(^R; zY9H3k8$|ounk>)EOi_;JAKV8U8ICSD@NrqB!&=)Ah_5hzp?L9Sw@c>>#f_kUhhm=p z1jRz8X7)~|VwO(MF3PS(|CL++1n|KT3*dhGjg!t_vR|8Yg($ z+$S$K=J`K6eG#^(J54=4&X#+7Car=_aeAuC>dHE+%v9HFu>r%ry|rwkrO-XPhR_#K zS{2Unv!_CvS7}Mb6IIT$D4Gq5v$Pvi5nbYB+1Yc&RY;3;XDihlvhhIG6AhAHsBYsm zK@MgSzs~y|+f|j-lsXKT0(%E2SkEb)p+|EkV5w8=F^!r1&0#0^tGhf9yPZ)iLJ^ zIXOg)HW_Vt{|r0W(`NmMLF$?3ZQpq+^OtjR-DaVLHpz%1+GZ7QGFA?(BIqBlVQ;)k zu)oO|KG&++gD9oL7aK4Zwjwi~5jqk6+w%{T$1`2>3Znh=OFg|kZ z>1cn>CZ>P|iQO%-Pic8wE9c*e%=3qNYKJ+z1{2=QHHFe=u3rqCWNhV_N*qzneN8A5 zj`1Ir7-5`33rjDmyIGvTx4K3qsks(I(;Kgmn%p#p3K zn8r9H8kQu+n@D$<#RZtmp$*T4B&QvT{K&qx(?>t@mX%3Lh}sr?gI#vNi=vV5d(D<=Cp5-y!a{~&y|Uz*PU{qe zI7g}mt!txT)U(q<+Xg_sSY%1wVHy;Dv3uze zJ>BIdSB2a|aK+?o63lR8QZhhP)KyQvV`J3)5q^j1-G}fq=E4&){*&hiam>ssYm!ya z#PsY0F}vT#twY1mXkGYmdd%_Uh12x0*6lN-HS-&5XWbJ^%su)-vffvKZ%rvLHVA<; zJP=h13;x?$v30`T)M)htph`=if#r#O5iC^ZHeXc6J8gewn zL!49!)>3I-q6XOZRG0=zjyQc`tl|RFCR}f-sNtc)I^~?Vv2t7tZZHvgU2Mfc9$LqG z!(iz&xb=q#4otDBO4p)KtEq}8NaIVcL3&pbvm@0Kk-~C@y3I{K61VDF_=}c`VN)3P z+{nBy^;=1N`A=xH$01dPesY_na*zrcnssA}Ix60C=sWg9EY=2>-yH&iqhhm28qq9Z z;}znS4ktr40Lf~G@6D5QxW&?q^R|=1+h!1%G4LhQs54c2Wo~4% zCA||d==lv2bP=9%hd0Dw_a$cz9kk)(Vo}NpSPx!vnV*0Bh9$CYP~ia#lEoLRJ8D#5 zSJS?}ABn1LX>8(Mfg&eefX*c0I5bf4<`gCy6VC{e>$&BbwFSJ0CgVa;0-U7=F81R+ zUmzz&c;H|%G&mSQ0K16Vosh?sjJW(Gp+1Yw+Yf4qOi|BFVbMrdO6~-U8Hr|L@LHeZ z0ALmXHsVm137&xnt#yYF$H%&AU!lf{W436Wq87nC16b%)p?r z70Wua59%7Quak50G7m3lOjtvcS>5}YL_~?Pti_pfAfQ!OxkX$arHRg|VrNx>R_Xyi z`N|Y7KV`z3(ZB2wT9{Dl8mtl zg^UOBv~k>Z(E)O>Z;~Z)W&4FhzwiPjUHE9&T#nlM)@hvAZL>cha-< zQ8_RL#P1?&2Qhk#c9fK9+xM#AneqzE-g(>chLp_Q2Xh$=MAsW z2ScEKr+YOD*R~mzy{bOJjs;X2y1}DVFZi7d_df^~((5a2%p%^4cf>vM_4Sn@@ssVJ z9ChGhs zbanJ+h74)3tWOviXI|v!=HU2mE%3Th$Mpx&lEeGFEBWRy8ogJY`BCXj@7s~bjrOY! z4nIU5S>_NrpN}|waZBC)$6ST8x91U2n?FGV8lS{&LFhHbuHU?SVU{p7yFSP_f#Eyh zJhI@o9lAeEwbZYC=~<(FZ$sJx^6j@gtl{yTOAz`Gj!Ab^y})eG&`Qt2cXdog2^~oOH^K@oHcE(L;wu2QiMv zJuGdhNd+H{t#Tjd<$PknMSfbI>L1YIdZ+uFf*Z=BEM)UPG3oDFe@8roB0h(*XAqRc zoxw`wQD@^nxGFxQXN9@GpkLqd?9@(_ZRS@EFRCO8J5{iuNAQO=!Lo5cCsPtt4=1qZN8z`EA2{ge@SjTyhiJE%ttk{~`SEl%5>s=9E~dUW0uws>&~3PwXJ!f>ShhP~U9dLvE8ElNt3g(6-d zdgtD;rgd^>1URef?*=8BkE&+HmzXD-4w61(p6o~Oxm`XexcHmnR*B~5a|u-Qz$2lf zXc$p91T~E4psJxhf^rdR!b_XmNv*?}!PK9@-asDTaen;p{Rxsa=1E}4kZ*}yQPoT0 zvM}t!CpJvk<`m~^$^1C^o1yM(BzY-Wz2q7C^+wfg-?}1bF?5Hk?S{^#U%wX4&lv0j zkNb)byI+nql(&65xV?_L<0tj!KMHX8Hmh2(udEG>@OPQ}KPtdwEuEb$?acp~yT1&r z|7YU<(v!0as6Xff5^XbKQIR&MpjSE)pmub+ECMZzn7c!|hnm_Rl&H_oXWU2!h7hhf zo&-@cLkZr#eNgUN9>b=QLE1V^b`($EX3RQIyg#45A^=G!jMY`qJ z8qjZ$*-V|?y0=zIM>!2q!Gi*t4J5Otr^OT3XzQ_GjATc(*eM zqllux#QtHhc>YtnswBNiS^t(dTDn|RYSI%i%-|sv1wh&|9jfeyx|IHowW)6uZWR<%n8I}6NidBm zJ>P7#5m`gnXLu;?7jQZ!PwA80d|AS*+mtrU6z+lzms6^vc4)6Zf+$l+Lk3AsEK7`_ zQ9LsS!2o#-pK+V`g#3hC$6*Z~PD%cwtOT8;7K3O=gHdC=WLK-i_DjPO#WN__#YLX|Akw3LnqUJUw8&7pUR;K zqJ98?rKMXE(tnmT`#080w%l1bGno7wXHQbl?QFU=GoK@d!Ov=IgsdHd-iIs4ahcgSj(L@F96=LKZ zeb5cJOVlcKBudawbz~AYk@!^p+E=dT^UhPE`96Q5J~cT-8^tp`J43nLbFD*Nf!w;6 zs>V!5#;?bwYflf0HtFvX_6_jh4GEpa0_s8UUe02@%$w^ym&%wI5_APD?9S4r9O@4m zq^Z5Br8#K)y@z*fo08@XCs;wKBydn+60ks4Z>_+PFD+PVTGNPFPg-V-|``!0l|XrTyUYA@mY?#bJYvD>jX&$o9VAbo?>?#Z^c+Y4Dl zXU9k`s74Sb$OYh7^B|SAVVz*jEW&GWG^cP<_!hW+#Qp|4791Od=HJcesFo?$#0eWD z8!Ib_>H1WQE}shsQiUNk!uWOyAzX>r(-N7;+(O333_ES7*^6z4{`p&O*q8xk{0xy@ zB&9LkW_B}_Y&?pXP-OYNJfqEWUVAPBk)pTP^;f+75Wa(W>^UO_*J05f1k{ zd-}j!4m@q#CaC6mLsQHD1&7{tJ*}LtE{g9LB>sIT7)l^ucm8&+L0=g1E_6#KHfS>A_Z?;pFP96*nX=1&ejZ+XvZ=ML`@oVu>s^WIjn^SY}n zboeP%`O9|dhzvnw%?wAsCw*lvVcv%bmO5M4cas>b%FHd;A6Z%Ej%;jgPuvL$nk=VQ=$-OTwslYg zJQtDS)|qkIs%)K$+r*_NTke8%Rv&w^v;|Ajh5QXaVh}ugccP}3E^(oGC5VO*4`&Q0 z&)z$6i_aKI*CqVBglCxo#9>eOkDD!voCJRFkNolvA2N&SAp^4<8{Y;#Kr5740 za|G`dYGE!9NGU3Ge6C)YByb6Wy#}EN`Ao#R!$LQ&SM#hifEvZp>1PAX{CSLqD4IuO z4#N4AjMj5t2|!yTMrl5r)`_{V6DlqVeTwo|tq4MHLZdZc5;=v9*ibc;IGYh+G|~PB zx2}BAv6p$}?7YpvhqHu7L;~)~Oe^Y)O(G(PJQB<&2AhwMw!(2#AHhjSsBYUd8MDeM z+UXXyV@@cQ`w}mJ2PGs>=jHE{%i44QsPPh(=yorg>jHic+K+S*q3{th6Ik^j=@%xo zXfa9L_<|xTL@UZ?4H`$vt9MOF`|*z&)!mECiuenMW`Eo2VE#|2>2ET7th6+VAmU(o zq$Fz^TUB*@a<}kr6I>r;6`l%8NWtVtkE?}Q<<$BIm*6Z(1EhDtA29O%5d1$0q#C&f zFhFrrss{hOsISjYGDOP*)j&zZUf9`xvR8G)gwxE$HtmKsezo`{Ta~V5u+J&Tg+{bh zhLlNbdzJNF6m$wZNblWNbP6>dTWhngsu=J{);9D|PPJ96aqM4Lc?&6H-J1W15uIpQ ziO{&pEc2}-cqw+)w$`p(k(_yRpmbp-Xcd`*;Y$X=o(v2K+ISW)B1(ZnkV`g4rHQ=s z+J?F9&(||&86pi}snC07Lxi1ja>6kvnut;|Ql3fD)%k+ASe^S|lN69+Ek3UwsSx=2EH)t}K>~ z`Mz-SSVH29@DWyl`ChuGAkG>J;>8ZmLhm>uEmUvLqar~vK3lS;4s<{+ehMsFXM(l- zRt=HT>h9G)JS*&(dbXrM&z;)66C=o{=+^}ciyt8|@e$Y}IREAyd_!2|CqTg=eu}yG z@sI9T;Tjix*%v)c{4G84|0j@8wX^Iig_JsPU|T%(J&KtJ>V zsAR+dcmyT5k&&G{!)VXN`oRS{n;3qd`BgAE9r?%AHy_Gf8>$&X$=>YD7M911?<{qX zkJ;IOfY$nHdy@kKk_+X%g3`T(v|jS;>`pz`?>fqMZ>Fvbx1W=8nvtuve&y`JBfvU~ zr+5pF!`$`TUVsx3^<)48&+XT92U0DS|^X6FwSa-8yviRkZ*@Wu|c*lX!m?8&$0~4T!DB0@)n}ey+ew}T1U>|fH3=W5I!=nfoNs~OkzTY7^x^G&h>M7ewZqmZ=EL0}3#ikWg+(wuoA{7hm|7eJz zNz78l-K81tP16rai+fvXtspOhN-%*RY3IzMX6~8k9oFlXWgICx9dp;`)?Toz`fxV@&m8< z{lzWJG_Y(N1nOox>yG^uDr}kDX_f`lMbtxfP`VD@l$HR*B(sDeE(+T831V-3d3$+% zDKzKnK_W(gLwAK{Saa2}zaV?1QmcuhDu$)#;*4gU(l&rgNXB^WcMuuTki*rt>|M)D zoI;l$FTWIUp}euuZjDidpVw6AS-3dal2TJJaVMGj#CROWr|;^?q>PAo2k^u-27t~v zCv10IL~E)o*|QgdM!GJTaT&|A?oW)m9qk2{=y*7qb@BIAlYgDIe)k(qVH@)#xx6%7 z@)l%aJwz5Joc84Q2jRp71d;=a@NkjSdMyN%L6OevML^(L0_msbef>ewImS=+DgrTk z4ON%Y$mYgcZ^44O*;ctP>_7=}=pslsu>~<-bw=C(jeQ-X`kUo^BS&JDHy%#L32Cj_ zXRzDCfCXKXxGSW9yOGMMOYqPKnU zTF6gDj47!7PoL%z?*{1eyc2IVF*RXX?mj1RS}++hZg_%b@6&PdO)VzvmkXxJ*O7H} z6I7XmJqwX3<>z%M@W|GD%(X|VOZ7A+=@~MxMt8zhDw`yz?V>H%C0&VY+ZZ>9AoDVZeO1c~z$r~!H zA`N_9p`X?z>jm!-leBjW1R13_i2(0&aEY2$l_+-n#powuRO;n2Fr#%jp{+3@`h$c< zcFMr;18Z`UN#spXv+3Ks_V_tSZ1!FY7H(tdAk!v}SkoL9RPYSD3O5w>A3%>7J+C-R zZfDmu=9<1w1CV8rCMEm{qyErCUaA3Q zRYYw_z!W7UDEK)8DF}la9`}8z*?N32-6c-Bwx^Jf#Muwc67sVW24 zJ4nab%>_EM8wPhL=MAN)xx1tozAl zmhXN;*-X%)s>(L=Q@vm$qmuScku>PV(W_x-6E?SFRjSk)A1xVqnml_92fbj0m};UC zcV}lRW-r*wY106|sshV`n#RN{)D9=!>XVH0vMh>od=9!1(U+sWF%#B|eeaKI9RpaW z8Ol_wAJX%j0h5fkvF)WMZ1}?#R(n-OT0CtwsL)|qk;*(!a)5a5ku2nCR9=E*iOZ`9 zy4>LHKt-BgHL@R9CBSG!v4wK zvjF8DORRva)@>nshE~VM@i2c$PKw?3nz(6-iVde;-S~~7R<5r2t$0U8k2_<5C0!$j zQg#lsRYtI#Q1YRs(-%(;F-K7oY~!m&zhuU4LL}>jbLC>B`tk8onRRcmIm{{0cpkD|o@Ixu#x9Wm5J)3oFkbfi62BX8IX1}VTe#{C(d@H|#gy5#Sa#t>sH@8v1h8XFgNGs?)tyF_S^ueJX_-1%+LR`1X@C zS3Oc)o)!8Z9!u9d!35YD^!aXtH;IMNzPp`NS|EcdaQw~<;z`lmkg zE|tQRF7!S!UCsbag%XlQZXmzAOSs= zIUjgY2jcN9`xA6mzG{m|Zw=3kZC4@XY=Bj%k8%D&iadvne$pYNfZI$^2BAB|-MnZW zU4U?*qE3`ZDx-bH})>wz~)a z_SWM!E=-BS#wdrfh;EfPNOS*9!;*+wp-zDthj<>P0a2n?$xfe;YmX~5a;(mNV5nKx zYR86%WtAPsOMIg&*o9uUfD!v&4(mpS6P`bFohPP<&^fZzfA|SvVzPQgbtwwM>IO>Z z75ejU$1_SB1tn!Y-9tajZ~F=Fa~{cnj%Y|$;%z6fJV1XC0080f)Pj|87j142q6`i>#)BCIi+x&jAH9|H#iMvS~?w;&E`y zoarJ)+5HWmZ{&OqlzbdQU=SE3GKmnQq zI{h6f$C@}Mbqf#JDsJyi&7M0O2ORXtEB`#cZ;#AcB zkao0`&|iH8XKvZ_RH|VaK@tAGKMq9x{sdd%p-o`!cJzmd&hb86N!KKxp($2G?#(#BJn5%hF0(^`= z2qRg5?82({w-HyjbffI>eqUXavp&|D8(I6zMOfM}0;h%*D_Dr@+%TaWpIEQX3*$vQ z8_)wkNMDi{rW`L+`yN^J*Gt(l7PExu3_hrntgbW0s}7m~1K=(mFymoU87#{|t*fJ?w8&>Uh zcS$Ny$HNRbT!UCFldTSp2*;%EoW+yhJD8<3FUt8@XSBeJM2dSEz+5}BWmBvdYK(OA zlm`nDDsjKED{$v*jl(&)H7-+*#jWI)W|_X)!em1qpjS_CBbAiyMt;tx*+0P%*m&v< zxV9rlslu8#cS!of#^1O$(ds8aviMFiT`6W+FzMHW{YS+SieJ^?TQb%NT&pasw^kbc znd`=%(bebvrNx3#7vq@vAX-G`4|>cY0svIXopH02{v;GZ{wJM#psz4!m8(IZu<)9D zqR~U7@cz-6H{724_*}-DWwE8Sk+dYBb*O-=c z+wdchFcm6$$^Z0_qGnv0P`)h1=D$_eg8!2-|7Y;o*c)4ax!Me0*EVcioh{wI#!qcb z1&xhOotXMrlo7P6{+C8m;E#4*=8(2y!r0d<6 zKi$d2X;O*zS(&Xiz_?|`ympxITf|&M%^WHp=694g6W@k+BL_T1JtSYX0OZ}o%?Pzu zJ{%P8A$uq?4F!NWGtq>_GLK3*c6dIcGH)??L`9Av&0k$A*14ED9!e9z_SZd3OH6ER zg%5^)3^gw;4DFw(RC;~r`bPJOR}H}?2n60=g4ESUTud$bkBLPyI#4#Ye{5x3@Yw<* z;P5Up>Yn(QdP#momCf=kOzZYzg9E330=67WOPbCMm2-T1%8{=or9L8+HGL{%83lri zODB;Y|LS`@mn#Wmez7t6-x`a2{}U9hE|xY7|BVcFCqoAZQzsEi=dYHB z(bqG3J5?teVSBqTj{aiqe<9}}CEc$HdsJSMp#I;4(EXRy_k|Y8X#5hwkqAaIGKARF zX?$|UO{>3-FU;IlFi80O^t+WMNw4So2nsg}^T1`-Ox&C%Gn_AZ-49Nir=2oYX6 z`uVke@L5PVh)YsvAgFMZfKi{DuSgWnlAaag{RN6t6oLm6{4)H~4xg#Xfcq-e@ALk& z@UP4;uCe(Yjg4jaJZ4pu*+*?4#+XCi%sTrqaT*jNY7|WQ!oR;S8nt)cI27W$Sz!94 z01zoTW`C*P3E?1@6thPe(QpIue$A54gp#C7pmfwRj}GxIw$!!qQetn`nvuwIvMBQ; zfF8K-D~O4aJKmLbNRN1?AZsWY&rp?iy`LP^3KT0UcGNy=Z@7qVM(#5u#Du#w>a&Bs z@f#zU{wk&5n!YF%D11S9*CyaI8%^oX=vq$Ei9cL1&kvv9|8vZD;Mhs1&slm`$A%ED zvz6SQ8aty~`IYp2Xd~G$z%Jf4zwVPKkCtqObrnc2gHKj^jg&-NH|xdNK_;+2d4ZXw zN9j)`jcp7y65&6P@}LsD_OLSi(#GW#hC*qF5KpmeXuQDNS%ZYpuW<;JI<>P6ln!p@ z>KPAM>8^cX|2!n@tV=P)f2Euv?!}UM`^RJ~nTT@W>KC2{{}xXS{}WH{|3najkiEUj z7l;fUWDPCtzQ$?(f)6RvzW~Tqan$bXibe%dv}**BqY!d4J?`1iX`-iy8nPo$s4^mQ z5+@=3xuZAl#KoDF*%>bJ4UrEB2EE8m7sQn!r7Z-ggig`?yy`p~3;&NFukc$`_>?}a z?LMo2LV^n>m!fv^HKKRrDn|2|zk?~S6i|xOHt%K(*TGWkq3{~|9+(G3M-L=;U-YRa zp{kIXZ8P!koE;BN2A;nBx!={yg4v=-xGOMC#~MA07zfR)yZtSF_2W^pDLcXg->*WD zY7Sz5%<_k+lbS^`y)=vX|KaN!gEMQob|(`%nP6huwr$%^?%0^vwr$(CZQD*Jc5?E( zb-q9E`OfoWSJ$rUs$ILfSFg3Mb*-!Ozgaz^%7ZkX@=3km0G;?+e?FQT_l5A9vKr<> z_CoemDo@6YIyl57l*gnJ^7+8xLW5oEGzjLv2P8vj*Q%O1^KOfrsC6eHvk{+$BMLGu z%goP8UY?J7Lj=@jcI$4{m2Sw?1E%_0C7M$lj}w{E#hM4%3QX|;tH6>RJf-TI_1A0w z@KcTEFx(@uitbo?UMMqUaSgt=n`Bu*;$4@cbg9JIS})3#2T;B7S

Z?HZkSa`=MM?n)?|XcM)@e1qmzJ$_4K^?-``~Oi&38`2}sjmP?kK z$yT)K(UU3fJID@~3R;)fU%k%9*4f>oq`y>#t90$(y*sZTzWcW$H=Xv|%^u^?2*n)Csx;35O0v7Nab-REgxDZNf5`cI69k$` zx(&pP6zVxlK5Apn5hAhui}b)(IwZD}D?&)_{_yTL7QgTxL|_X!o@A`)P#!%t9al+# zLD(Rr+?HHJEOl545~m1)cwawqY>cf~9hu-L`crI^5p~-9Mgp9{U5V&dJSwolnl_CM zwAMM1Tl$D@>v?LN2PLe0IZrQL1M zcA%i@Lc)URretFJhtw7IaZXYC6#8slg|*HfUF2Z5{3R_tw)YQ94=dprT`SFAvHB+7 z)-Hd1yE8LB1S+4H7iy$5XruPxq6pc_V)+VO{seA8^`o5{T5s<8bJ`>I3&m%R4cm1S z`hoNk%_=KU2;+#$Y!x7L%|;!Nxbu~TKw?zSP(?H0_b8Qqj4EPrb@~IE`~^#~C%D9k zvJ=ERh`xLgUwvusQbo6S=I5T+?lITYsVyeCCwT9R>DwQa&$e(PxF<}RpLD9Vm2vV# zI#M%ksVNFG1U?;QR{Kx2sf>@y$7sop6SOnBC4sv8S0-`gEt0eHJ{`QSW(_06Uwg*~ zIw}1dZ9c=K$a$N?;j`s3>)AqC$`ld?bOs^^stmYmsWA$XEVhUtGlx&OyziN1~2 z)s5fD(d@gq7htIGX!GCxKT=8aAOHW&DAP=$MpZ)SpeEZhk83}K) z0(Uv)+&pE?|4)D2PX4r6gOGHDY}$8FSg$3eDb*nEVmkFQ#lFpcH~IPeatiH3nPTkP z*xDN7l}r2GM9jwSsl=*!547nRPCS0pb;uE#myTqV+=se>bU=#e)f2}wCp%f-cIrh`FHA$2`monVy?qvJ~o2B6I7IE28bCY4=c#^){*essLG zXUH50W&SWmi{RIG9G^p;PohSPtC}djjXSoC)kyA8`o+L}SjE{i?%;Vh=h;QC{s`T7 zLmmHCr8F}#^O8_~lR)^clv$mMe`e*{MW#Sxd`rDckCnFBo9sC*vw2)dA9Q3lUi*Fy zgDsLt`xt|7G=O6+ms=`_FpD4}37uvelFLc^?snyNUNxbdSj2+Mpv<67NR{(mdtSDNJ3gSD@>gX_7S5 zCD)JP5Hnv!llc-9fwG=4@?=%qu~(4j>YXtgz%gZ#+A9i^H!_R!MxWlFsH(ClP3dU} za&`m(cM0xebj&S170&KLU%39I+XVWOJ_1XpF^ip}3|y()Fn5P@$pP5rvtiEK6w&+w z7uqIxZUj$#qN|<_LFhE@@SAdBy8)xTu>>`xC>VYU@d}E)^sb9k0}YKr=B8-5M?3}d z7&LqQWQ`a&=ihhANxe3^YT>yj&72x#X4NXRTc#+sk;K z=VUp#I(YIRO`g7#;5))p=y=MQ54JWeS(A^$qt>Y#unGRT$0BG=rI(tr>YqSxNm+-x z6n;-y8B>#FnhZX#mhVOT30baJ{47E^j-I6EOp;am;FvTlYRR2_?CjCWY+ypoUD-2S zqnFH6FS+q$H$^7>>(nd^WE+?Zn#@HU3#t|&=JnEDgIU+;CgS+krs+Y8vMo6U zHVkPoReZ-Di3z!xdBu#aW1f{8sC)etjN90`2|Y@{2=Os`(XLL9+ z1$_PE$GgTQrVx`^sx=Y(_y-SvquMF5<`9C=vM52+e+-r=g?D z+E|97MyoaK5M^n1(mnWeBpgtMs8fXOu4Q$89C5q4@YY0H{N47VANA1}M2e zspor6LdndC=kEvxs3YrPGbc;`q}|zeg`f;t3-8na)dGdZ9&d(n{|%mNaHaKJOA~@8 zgP?nkzV-=ULb)L3r`p)vj4<702a5h~Y%byo4)lh?rtu1YXYOY+qyTwzs!59I zL}XLe=q$e<+Wm7tvB$n88#a9LzBkgHhfT<&i#%e*y|}@I z!N~_)vodngB7%CI2pJT*{GX|cI5y>ZBN)}mezK~fFv@$*L`84rb0)V=PvQ2KN}3lTpT@$>a=CP?kcC0S_^PZ#Vd9#CF4 zP&`6{Y!hd^qmL!zr#F~FB0yag-V;qrmW9Jnq~-l>Sg$b%%TpO}{Q+*Pd-@n2suVh_ zSYP->P@# z&gQ^f{?}m(u5B9xqo63pUvDsJDQJi5B~ak+J{tX8$oL!_{Dh zL@=XFzWb+83H3wPbTic+osVp&~UoW3SqK0#P6+BKbOzK65tz)-@AW#g}Ew+pE3@ zVbdJkJ}EM@-Ghxp_4a)|asEk* z5)mMI&EK~BI^aaTMRl)oPJRH^Ld{;1FC&#pS`gh;l3Y;DF*`pR%OSz8U@B@zJxPNX zwyP_&8GsQ7^eYyUO3FEE|9~I~X8;{WTN=DJW0$2OH=3-!KZG=X6TH?>URr(A0l@+d zj^B9G-ACel;yYGZc}G`w9sR$Mo{tzE7&%XKuW$|u7DM<6_z}L>I{o`(=!*1 z{5?1p3F^aBONr6Ws!6@G?XRxJxXt_6b}2%Bp=0Iv5ngnpU^P+?(?O0hKwAK z*|wAisG&8&Td1XY+6qI~-5&+4DE2p|Dj8@do;!40o)F)QuoeUY;*I&QZ0*4?u)$s`VTkNl1WG`}g@J_i zjjmv4L%g&>@U9_|l>8^CN}`@4<D2aMN&?XXD-HNnsVM`irjv$ z^YVNUx3r1{-o6waQfDp=OG^P+vd;qEvd{UUYc;gF0UwaeacXkw32He^qyoYHjZeFS zo(#C9#&NEdFRcFrj7Q{CJgbmDejNS!H%aF6?;|KJQn_*Ps3pkq9yE~G{0wIS*mo0XIEYH zzIiJ>rbmD;sGXt#jlx7AXSGGcjty)5z5lTGp|M#5DCl0q0|~pNQ%1dP!-1>_7^BA~ zwu+uumJmTCcd)r|Hc)uWm7S!+Dw4;E|5+bwPb4i17Ued>NklnnsG+A{T-&}0=sLM- zY;sA9v@YH>b9#c$Vg{j@+>UULBX=jtu~N^%Y#BB5)pB|$?0Mf7msMD<7eACoP1(XY zPO^h5Brvhn$%(0JSo3KFwEPV&dz8(P41o=mo7G~A*P6wLJ@-#|_A z7>k~4&lbqyP1!la!qmhFBfIfT?nIHQ0j2WlohXk^sZ`?8-vwEwV0~uu{RDE^0yfl$ znua{^`VTZ)-h#ch_6^e2{VPaE@o&55|3dx$z_b6gbqduXJ(Lz(zq&ZbJ6qA4Ac4RT zhJO4KBLN!t;h(eW(?cZJw^swf8lP@tWMZ8GD)zg)siA3!2EJYI(j>WI$=pK!mo!Ry z?q&YkTIbTTr<>=}+N8C_EAR0XQL2&O{nNAXb?33iwo8{M``rUHJgnk z8KgZzZLFf|(O6oeugsm<;5m~4N$2Jm5#dph*@TgXC2_k&d%TG0LPY=Fw)=gf(hy9QmY*D6jCAiq44 zo-k2C+?3*+Wu7xm1w*LEAl`Vsq(sYPUMw|MiXrW)92>rVOAse5Pmx^OSi{y%EwPAE zx|csvE{U3c{vA>@;>xcjdCW15pE31F3aoIBsz@OQRvi%_MMfgar2j3Ob`9e@gLQk# zlzznEHgr|Ols%f*a+B-0klD`czi@RWGPPpR1tE@GB|nwe`td1OwG#OjGlTH zfT#^r?%3Ocp^U0F8Kekck6-Vg2gWs|sD_DTJ%2TR<5H3a$}B4ZYpP=p)oAoHxr8I! z1SYJ~v-iP&mNm{ra7!KP^KVpkER>-HFvq*>eG4J#kz1|eu;=~u2|>}TE_5nv2=d!0 z3P~?@blSo^uumuEt{lBsGcx{_IXPO8s01+7DP^yt&>k;<5(NRrF|To2h7hTWBFQ_A z+;?Q$o5L|LlIB>PH(4j)j3`JIb1xA_C@HRFnPnlg{zGO|-RO7Xn}!*2U=Z2V?{5Al z9+iL+n^_T~6Uu{law`R&fFadSVi}da8G>|>D<{(#vi{OU;}1ZnfXy8=etC7)Ae<2S zAlI`&=HkNiHhT0|tQztSLNsRR6v8bmf&$6CI|7b8V4kyJ{=pG#h{1sVeC28&Ho%Fh zwo_FIS}ST-2OF6jNQ$(pjrq)P)@sie#tigN1zSclxJLb-O9V|trp^G8<1rpsj8@+$ z2y27iiM>H8kfd%AMlK|9C>Lkvfs9iSk>k2}tCFlqF~Z_>-uWVQDd$5{3sM%2$du9; z*ukNSo}~@w@DPF)_vS^VaZ)7Mk&8ijX2hNhKom$#PM%bzSA-s$ z0O!broj`!Nuk)Qcp3(>dL|5om#XMx2RUSDMDY9#1|+~fxwP}1I4iYy4j$CGx3jD&eKhf%z`Jn z7mD!y6`nVq%&Q#5yqG`|+e~1$Zkgu!O(~~pWSDTw2^va3u!DOMVRQ8ycq)sk&H%vb z;$a`3gp74~I@swI!ILOkzVK3G&SdTcVe~RzN<+z`u(BY=yuwez{#T3a_83)8>2!X?`^02zVjqx-fN+tW`zCqH^XG>#Ies$qxa!n4*FF0m zxgJlPPYl*q4ylX;DVu3G*I6T&JyWvs`A(*u0+62=+ylt2!u)6LJ=Qe1rA$OWcNCmH zLu7PwMDY#rYQA1!!ONNcz~I^uMvi6N&Lo4dD&HF?1Su5}COTZ-jwR)-zLq=6@bN}X zSP(-MY`TOJ@1O`bLPphMMSWm+YL{Ger>cA$KT~)DuTl+H)!2Lf`c+lZ0ipxd>KfKn zIv;;eEmz(_(nwW24a+>v{K}$)A?=tp+?>zAmfL{}@0r|1>iFQfJ5C*6dKdijK=j16 zQpl4gl93ttF5@d<9e2LoZ~cqkH)aFMgt(el_)#OG4R4Hnqm(@D*Uj>2ZuUCy)o-yy z_J|&S-@o5#2IMcL(}qWF3EL<4n(`cygenA)G%Ssi7k4w)LafelpV5FvS9uJES+(Ml z?rzZ={vYrB#mB-Hd#ID{KS5dKl-|Wh_~v+Lvq3|<@w^MD-RA{q!$gkUUNIvAaex5y z)jIGW{#U=#UWyku7FIAB=TES8>L%Y9*h2N`#Gghie+a?>$CRNth?ORq)!Tde24f5K zKh>cz5oLC;ry*tHIEQEL>8L=zsjG7+(~LUN5K1pT`_Z-4Z}k^m%&H%g3*^e(FDCC{ zBh~eqx%bY?qqu_2qa+9A+oS&yFw^3nLRsN#?FcZvt?*dZhRC_a%Jd{qou(p5AG_Q6 ziOJMu8D~kJ7xEkG(69$Dl3t1J592=Olom%;13uZvYDda08YwzqFlND-;YodmA!SL) z!AOSI=(uCnG#Yo&BgrH(muUemmhQW7?}IHfxI~T`44wuLGFOMdKreQO!a=Z-LkH{T z@h;`A_l2Pp>Xg#`Vo@-?WJn-0((RR4uKM6P2*^-qprHgQhMzSd32@ho>%fFMbp9Y$ zx-#!r8gEu;VZN(fDbP7he+Nu7^o3<+pT!<<>m;m z=FC$N)wx)asxb_KLs}Z^;x*hQM}wQGr((&=%+=#jW^j|Gjn$(qqXwt-o-|>kL!?=T zh0*?m<^>S*F}kPiq@)Cp+^fnKi2)%<-Tw4K3oHwmI-}h}Kc^+%1P!D8aWp!hB@-ZT zybHrRdeYlYulEj>Bk zEIi|PU0eGg&~kWQ{q)gw%~bFT0`Q%k5S|tt!JIZXVXX=>er!7R^w>zeQ%M-(C|eOQG>5i|}i3}X#?aqAg~b1t{-fqwKd(&CyA zmyy)et*E}+q_lEqgbClewiJ=u@bFX}LKe)5o26K9fS;R`!er~a?lUCKf60`4Zq7{2q$L?k?IrAdcDu+ z4A0QJBUiGx&$TBASI2ASM_Wj{?fjv=CORO3GZz;1X*AYY`anM zI`M6C%8OUFSc$tKjiFJ|V74Yj-lK&Epi7F^Gp*rLeDTokfW#o6sl33W^~4V|edbS1 zhx%1PTdnI!C96iYqSA=qu6;p&Dd%)Skjjw0fyl>3k@O?I@x5|>2_7G#_Yc2*1>=^# z|H43bJDx$SS2!vkaMG!;VRGMbY{eJhT%FR{(a+RXDbd4OT?DRoE(`NhiVI6MsUCsT z1gc^~Nv>i;cIm2~_SYOfFpkUvV)(iINXEep;i4>&8@N#|h+_;DgzLqh3I#lzhn>cN zjm;m6U{+JXR2Mi)=~WxM&t9~WShlyA$Pnu+VIW2#;0)4J*C!{1W|y1TP{Q;!tldR< zI7aoH&cMm*apW}~BabBT;`fQ1-9q|!?6nTzmhiIo6fGQlcP{pu)kJh- zUK&Ei9lArSO6ep_SN$Lt_01|Y#@Ksznl@f<+%ku1F|k#Gcwa`(^M<2%M3FAZVb99?Ez4d9O)rqM< zCbYsdZlSo{X#nKqiRA$}XG}1Tw@)D|jGKo1ITqmvE4;ovYH{NAk{h8*Ysh@=nZFiF zmDF`@4do#UDKKM*@wDbwoO@tPx4aExhPF_dvlR&dB5>)W=wG6Pil zq{eBzw%Ov!?D+%8&(uK`m7JV7pqNp-krMd>ECQypq&?p#_3wy){eW{(2q}ij{6bfmyE+-ZO z)G4OtI;ga9;EVyKF6v3kO1RdQV+!*>tV-ditH-=;`n|2T zu(vYR*BJSBsjzFl1Oy#DpL=|pfEY4NM;y5Yly__T*Eg^3Mb_()pHwn)mAsh!7Yz-Z zY`hBLDXS4F^{>x=oOphq|LMo;G!C(b2hS9A6lJqb+e$2af}7C>zW2p{m18@Bdd>iL zoEE$nFUnaz_6p${cMO|;(c1f9nm5G5R;p)m4dcC1?1YD=2Mi&20=4{nu>AV#R^d%A zsmm_RlT#`;g~an9mo#O1dYV)2{mgUWEqb*a@^Ok;ckj;uqy{%*YB^({d{^V)P9VvP zC^qbK&lq~}TWm^RF8d4zbo~bJuw zFV!!}b^4BlJ0>5S3Q>;u*BLC&G6Fa5V|~w&bRZ*-YU>df6%qAvK?%Qf+#=M-+JqLw&w*l4{v7XTstY4j z26z69U#SVzSbY9HBXyD;%P$#vVU7G*Yb-*fy)Qpx?;ed;-P24>-L6U+OAC9Jj63kg zlY`G2+5tg1szc#*9ga3%f9H9~!(^QjECetX-PlacTR+^g8L<#VRovPGvsT)ln3lr= zm5WO@!NDuw+d4MY;K4WJg3B|Sp|WdumpFJO>I2tz$72s4^uXljWseYSAd+vGfjutO z-x~Qlct+BnlI+Iun)fOklxPH?30i&j9R$6g5^f&(x7bIom|FLKq9CUE);w2G>}vye zxWvEaXhx8|~2j)({Rq>0J9}lzdE`yhQ(l$z! z;x%d%_u?^4vlES_>JaIjJBN|N8z5}@l1#PG_@{mh`oWXQOI41_kPG}R_pV+jd^PU) zEor^SHo`VMul*80-K$0mSk|FiI+tHdWt-hzt~S>6!2-!R&rdL_^gGGUzkPe zEZkUKU=EY(5Ex)zeTA4-{Bkbn!Gm?nuaI4jLE%X;zMZ7bwn4FXz(?az;9(Uv;38U6 zi)}rA3xAcD2&6BY<~Pj9Q1~4Dyjs&!$)hyHiiTI@%qXd~+>> zW}$_puSSJ^uWv$jtWakn}}@eX6_LGz|7M#$!3yjY ztS{>HmQ%-8u0@|ig{kzD&CNK~-dIK5e{;@uWOs8$r>J7^c2P~Pwx%QVX0e8~oXK0J zM4HCNK?%t6?v~#;eP#t@tM$@SXRt;(b&kU7uDzlzUuu;+LQ5g%=FqpJPGrX8HJ8CS zITK|(fjhs3@CR}H4@)EjL@J zV_HPexOQ!@k&kvsQG)n;7lZaUh>{87l4NS_=Y-O9Ul3CaKG8iy+xD=QXZSr57a-hb z7jz3Ts-NVsMI783OPEdlE|e&a2;l^h@e>oYMh5@=Lte-9A+20|?!9>Djl~{XkAo>0p9`n&nfWGdGAfT-mSYW z1cvG>GT9dRJdcm7M_AG9JX5AqTCdJ6MRqR3p?+FvMxp(oB-6MZ`lRzSAj%N(1#8@_ zDnIIo9Rtv12(Eo}k_#FILhaZQ`yRD^Vn5tm+IK@hZO>s=t5`@p1#k?Umz2y*R64CF zGM-v&*k}zZ%Xm<_?1=g~<*&3KAy;_^QfccIp~CS7NW24Tn|mSDxb%pvvi}S}(~`2# z3I|kD@||l@lAW06K2%*gHd4x9YKeXWpwU%!ozYcJ+KJeX!s6b94j!Qyy7>S!wb?{qaMa`rpbU1phn0EpF}L zsBdZc|Im#iRiQmJjZwb5#n;`_O{$Zu$I zMXqbfu0yVmt!!Y`Fzl}QV7HUSOPib#da4i@vM$0u2FEYytsvrbR#ui9lrMkZ(AVVJ zMVl^Wi_fSRsEXLA_#rdaG%r(@UCw#o7*yBN)%22b)VSNyng6Lxk|2;XK3Qb=C_<`F zN##8MLHz-s%&O6JE~@P1=iHpj8go@4sC7*AWe99tuf$f7?2~wC&RA^UjB*2`K!%$y zSDzMd7}!vvN|#wDuP%%nuGk8&>N)7eRxtqdMXHD1W%hP7tYW{W>^DJp`3WS>3}i+$ z_li?4AlEj`r=!SPiIc+NNUZ9NCrMv&G0BdQHBO&S7d48aB)LfGi@D%5CC1%)1hVcJ zB~=yNC}LBn(K?cHkPmAX$5^M7JSnNkcc!X!0kD&^F$cJmRP(SJ`9b7}b)o$rj=BZ- zC;BX3IG94%Qz&(V$)7O~v|!=jd-yU1(6wd1u;*$z4DDe6+BFLhz>+8?59?d2Ngxck zm92yR!jk@MP@>>9FtAY2L+Z|MaSp{MnL-;fm}W3~fg!9TRr3;S@ysLf@#<)keHDRO zsJI1tP`g3PNL`2(8hK3!4;r|E-ZQbU0e-9u{(@du`4wjGj|A!QB&9w~?OI1r}M? zw)6tvsknfPfmNijZ;3VZX&HM6=|&W zy6GIe3a?_(pRxdUc==do9?C&v7+6cgIoL4)Ka^bOG9`l;S|QmVzjv%)3^PDi@=-cp z=!R0bU<@_;#*D}e1m@0!%k=VPtyRAkWYW(VFl|eu0LteWH7eDB%P|uF7BQ-|D4`n; z)UpuY1)*s32UwW756>!OoAq#5GAtfrjo*^7YUv^(eiySE?!TQzKxzqXE@jM_bq3Zq zg#1orE*Zd5ZWEpDXW9$=NzuadNSO*NW)ZJ@IDuU`w}j_FRE4-QS*rD4mPVQPH(jGg z+-Ye?3%G%=DT5U1b+TnNHHv(nz-S?3!M4hXtEB@J4WK%%p zkv=Bb`1DHmgUdYo>3kwB(T>Ba#DKv%cLp2h4r8v}p=Np}wL!&PB5J-w4V4REM{kMD z${oSuAw9?*yo3?tNp~X5WF@B^P<6L0HtIW0H7^`R8~9zAXgREH`6H{ntGu$aQ;oNq zig;pB^@KMHNoJcEb0f1fz+!M6sy?hQjof-QoxJgBM`!k^T~cykcmi^s_@1B9 z)t1)Y-ZsV9iA&FDrVoF=L7U#4&inXk{3+Xm9A|R<=ErgxPW~Fq zqu-~x0dIBlR+5_}`IK^*5l3f5$&K@l?J{)_d_*459pvsF*e*#+2guls(cid4!N%DG zl3(2`az#5!^@HNRe3O4(_5nc+){q?ENQG2|uKW0U0$aJ5SQ6hg>G4OyN6os76y%u8qNNHi;}XnRNwpsfn^!6Qt(-4tE`uxaDZ`hQp#aFX373|F?vjEiSEkV>K)cTBG+UL#wDj0_ zM9$H&-86zP=9=5_Q7d3onkqKNr4PAlF<>U^^yYAAEso|Ak~p$3NNZ$~4&kE9Nj^As zQPoo!m*uZ;z1~;#g(?zFECJ$O2@EBy<;F)fnQxOKvH`MojG5T?7thbe%F@JyN^k1K zn3H*%Ymoim)ePf)xhl2%$T)vq3P=4ty%NK)@}po&7Q^~o3l))Zm4<75Y!fFihsXJc z9?vecovF^nYfJVg#W~R3T1*PK{+^YFgb*7}Up2U#)oNyzkfJ#$)PkFxrq_{Ai?0zk zWnjq_ixF~Hs7YS9Y6H&8&k0#2cAj~!Vv4{wCM zi2f1FjQf+F@=BOB)pD|T41a4AEz+8hnH<#_PT#H|Vwm7iQ0-Tw()WMN za0eI-{B2G{sZ7+L+^k@BA)G;mOFWE$O+2nS|DzPSGZ)ede(9%+8kqu4W^wTn!yZPN z7u!Qu0u}K5(0euRZ$7=kn9DZ+llruq5A_l) zOK~wof7_^8Yeh@Qd*=P!gM)lh`Z@7^M?k8Z?t$$vMAuBG>4p56Dt!R$p{)y>QG}it zGG;Ei```7ewXrbGo6Z=!AJNQ!GP8l13m7|FIQTFZTpIg#kpZkl1wj)s1eySXjAAWy zfl;;@{QQ;Qnb$@LY8_Z&7 z6+d98F?z2Zo)sS)z$YoL(zzF>Ey8u#S_%n7)XUX1Pu(>e8gEUU1S;J=EH(#`cWi1+ zoL$5TN+?#NM8=4E7HOk)bf5MXvEo%he5QcB%_5YQ$cu_j)Pd^@5hi}d%nG}x9xXtD-JMQxr;KkC=r_dS-t`lf zF&CS?Lk~>U^!)Y0LZqNVJq+*_#F7W~!UkvZfQhzvW`q;^X&iv~ zEDDGIQ&(S;#Hb(Ej4j+#D#sDS_uHehlY0kZsQpktc?;O z22W1b%wNcdfNza<1M2{*mAkM<{}@(w`VuQ<^lG|iYSuWBD#lYK9+jsdA+&#;Y@=zXLVr840Nq_t5))#7}2s9pK* zg42zd{EY|#sIVMDhg9>t6_Y#O>JoG<{GO&OzTa;iA9&&^6=5MT21f6$7o@nS=w;R) znkgu*7Y{UNPu7B9&B&~q+N@@+%&cO0N`TZ-qQ|@f@e0g2BI+9xO$}NzMOzEbSSJ@v z1uNp(S z-dioXc$5YyA6-My@gW~1GH($Q?;GCHfk{ej-{Q^{iTFs1^Sa67RNd5y{cjX1tG+$& zbGrUte{U1{^Z_qpzW$-V!pJz$dQZrL5i(1MKU`%^= z^)i;xua4w)evDBrFVm)Id5SbXMx2u7M5Df<2L4B`wy4-Y+Wec#b^QJO|J9xF{x#M8 zuLUer`%ZL^m3gy?U&dI+`kgNZ+?bl3H%8)&k84*-=aMfADh&@$xr&IS|4{3$v&K3q zZTn&f{N(#L6<-BZYNs4 zB*Kl*@_IhGXI^_8zfXT^XNmjJ@5E~H*wFf<&er?p7suz85)$-Hqz@C zGMFg1NKs;otNViu)r-u{SOLcqwqc7$poPvm(-^ag1m71}HL#cj5t4Hw(W?*fi4GSH z9962NZ>p^ECPqVc$N}phy>N8rQsWWm%%rc5B4XLATFEtffX&TM2%|8S2Lh_q; zCytXua84HBnSybW-}(j z3Zwv4CaK)jC!{oUvdsFRXK&Sx@t)yGm(h65$!WZ!-jL52no}NX6=E<=H!aZ74h_&> zZ+~c@k!@}Cs84l{u+)%kg4fq~pOeTK3S4)gX~FKJw4t9ba!Ai{_gkKQYQvafZIyKq zX|r4xgC(l%JgmW!tvR&yNt$6uME({M`uNIi7HFiPEQo_UMRkl~12&4c& z^se;dbZWKu7>dLMg`IZq%@b@ME?|@{&xEIZEU(omKNUY? z`JszxNghuO-VA;MrZKEC0|Gi0tz3c#M?aO?WGLy64LkG4T%|PBIt_?bl{C=L@9e;A zia!35TZI7<`R8hr06xF62*rNH5T3N0v^acg+;ENvrLYo|B4!c^eILcn#+lxDZR!%l zjL6!6h9zo)<5GrSPth7+R(rLAW?HF4uu$glo?w1U-y}CR@%v+wSAlsgIXn>e%bc{FE;j@R0AoNIWf#*@BSngZ)HmNqkB z)cs3yN%_PT4f*K+Y1wFl)be=1iq+bb1G-}b|72|gJ|lMt`tf~0Jk}zMbS0+M-Mq}R z>Bv}-W6J%}j#dIz`Z0}zD(DGKn`R;E8A`)$a6qDfr(c@iHKZcCVY_nJEDpcUddGH* z*ct2$&)RelhmV}@jGXY>3Y~vp;b*l9M+hO}&x`e~q*heO8GVkvvJTwyxFetJC8VnhjR`5*+qHEDUNp16g`~$TbdliLLd}AFf}U+Oda1JXwwseRFbj?DN96;VSX~z?JxJSuA^BF}262%Z0)nv<6teKK`F zfm9^HsblS~?Xrb1_~^=5=PD!QH$Y1hD_&qe1HTQnese8N#&C(|Q)CvtAu6{{0Q%ut8ESVdn&& z4y%nsCs!$(#9d{iVjXDR##3UyoMNeY@_W^%qyuZ^K3Oa4(^!tDXOUS?b2P)yRtJ8j zSX}@qGBj+gKf;|6Kb&rq`!}S*cSu-3&S>=pM$eEB{K>PP~I}N|uGE|`3U#{Q6v^kO4nIsaq zfPld}c|4tVPI4!=!ETCNW+LjcbmEoxm0RZ%ieV0`(nVlWKClZW5^>f&h79-~CF(%+ zv|KL(^xQ7$#a}&BSGr9zf{xJ(cCfq>UR*>^-Ou_pmknCt6Y--~!duL{k2D{yLMl__ z!KeMRRg&EsD2s|cmy?xgK&XcGIKeos`&UEVhBTw;mqy|8DlP1M7PYS2z{YmTJ;n!h znPe(Qu?c7+xZz!Tm1AnE8|;&tf7fW$2dArX7ck1Jd(S1+91YB8bjISRZ`UL*?vb{b zMp*!Xq7VaLc0Ogqj5qmop8NREQ{9_iC$;tviZlubGLy1jLlIFBxAymMr@SDLAcx+) z5YRkl$bW**X)W0JzWNcLx9>fTqJj00ipY6Ua?mUlsgQrVVgpmaheE;RgA5U_+WsPh z9+X|PU4zFyNxZ2?Q+V`Mo{xH~(m}OMRZa<&$nCl7o4x`^^|V4?aPz8#KwFm=8T6_} z8=P_4$_rD2a%7}}HT6VQ>ZGKW=QF7zI-2=6oBNZR$HVn|gq`>l$HZ`48lkM7%R$>MS& zghR`WZ9Xrd_6FaDedH6_aKVJhYev*2)UQ>!CRH3PQ_d9nXlO;c z9PeqiKD@aGz^|mvD-tV<{BjfA;)B+76!*+`$CZOJ=#)}>{?!9fAg(Xngbh||n=q*C zU0mGP`NxHn$uY#@)gN<0xr)%Ue80U{-`^FX1~Q@^>WbLraiB|c#4v$5HX)0z!oA#jOXPyWg! z8EC}SBmG7j3T&zCenPLYA{kN(3l62pu}91KOWZl? zg~>T4gQ%1y3AYa^J|>ba$7F5KlVx}_&*~me*q-SYLBCXZFU=U8mHQD4K!?;B61NoX z?VS41SS&jHyhmB~+bC=w0a06V``ZXCkC~}oM9pM{$hU~-s_elYPmT1L!%B`?*<+?( zFQ@TP%y+QL`_&Y0A3679pe5~iL=z)$b)k!oSbJRyw+K};SGAvvE=|<~*aiwJc?uE@2?7a1i9|3=^N%*9smt3ZIhjY>gIsr{Q2rX(NovZ7I1n^V{ z#~(1ze-%`C>fM`^hCV**9BA-04lNuu&3=reevNOMwmX(A{yh`^c8%0mjAKMj{Th05 zXrM(zILwyL-Pcdw^(=gj(ZLVMA95zlzmLa^skb8tQq%8SV&4vp?S>L3+P4^tp`$xA zr38jBw0ItR`VbO5vB1`<3d})}aorkIU1z3*ifYN&Lpp)}|}QJS60th_v-EEkAM zyOREuj!Ou|pVeZEWg;$Hf!x;xAmFu7gB^UR$=L0BuZ~thLC@#moJ(@@wejR|`t_K@ zuQ{XmpAWz%o&~2dk!SIGR$EmpZY)@+r^gvX26%)y>1u2bt~JUPTQzQu&_tB)|{19)&n$m5Fhw0A-8S1^%XpAD%`#a z_ModVxsM|x!m3N1vRt_XEL`O-+J3cMsM1l*dbjT&S0c@}Xxl3I&AeMNT97G3c6%3C zbrZS?2EAKcEq@@Pw?r%eh0YM6z0>&Qe#n+e9hEHK?fzig3v5S#O2IxVLu;a>~c~ZfHVbgLox%_tg)bsC8Rl35P=Jhl+Y=w6zb$ z;*uO%i^U z^mp_QggBILLF$AyjPD41Z0SFdbDj&z&xjq~X|OoM7bCuBfma1CEd!4RKGqPR)K)e}+7^JfFUI_fy63cMyq#&)Z*#w18{S zhC@f9U5k#2S2`d$-)cEoH-eAz{2Qh>YF1Xa)E$rWd52N-@{#lrw3lRqr)z?BGThgO z-Mn>X=RPHQ)#9h{3ciF)<>s{uf_&XdKb&kC!a373l2OCu&y8&n#P%$7YwAVJ_lD-G zX7tgMEV8}dY^mz`R6_0tQ5Eu@CdSOyaI63Vb*mR+rCzxgsjCXLSHOmzt0tA zGoA0Cp&l>rtO@^uQayrkoe#d2@}|?SlQl9W{fmcxY(0*y zHTZ6>FL;$8FEzbb;M(o%mBe-X?o<0+1dH?ZVjcf8)Kyqb07*a zLfP1blbt)=W)TN}4M#dUnt8Gdr4p$QRA<0W)JhWLK3-g82Q~2Drmx4J z;6m4re%igus136VL}MDI-V;WmSfs4guF_(7ifNl#M~Yx5HB!UF)>*-KDQl0U?u4UXV2I*qMhEfsxb%87fi+W;mW5{h?o8!52}VUs*Fpo#aSuXk(Ug z>r>xC#&2<9Uwmao@iJQ|{Vr__?eRT2NB$OcoXQ-jZ{t|?Uy{7q$nU-i|&-R6fHPWJDgHZ69iVbK#Ab@2@y zPD*Gj=hib?PWr8NGf;g$o5I!*n>94Z!IfqRm zLvM>Gx$Y*rEL3Z-+lS42=cnEfXR)h1z`h8a+I%E_ss%qXsrgIV%qv9d|KT>fV5=3e zw>P#ju>2naGc{=6!)9TeHq$S9Pk|>$UCEl}H}lE@;0(jbNT9TXUXyss>al>S4DuGi zVCy;Qt=a2`iu2;TvrIkh2NTvNV}0)qun~9y1yEQMdOf#V#3(e(C?+--8bCsJu={Q1z5qNJIk&yW>ZnVm;A=fL~29lvXQ*4j(SLau?P zi8LC7&**O!6B6=vfY%M;!p2L2tQ+w3Y!am{b?14E`h4kN$1L0XqT5=y=DW8GI_yi% zlIWsjmf0{l#|ei>)>&IM4>jXH)?>!fK?pfWIQn9gT9N(z&w3SvjlD|u*6T@oNQRF6 zU5Uo~SA}ml5f8mvxzX>BGL}c2#AT^6Lo-TM5XluWoqBRin$tiyRQK0wJ!Ro+7S!-K z=S95p-(#IDKOZsRd{l65N(Xae`wOa4Dg9?g|Jx97N-7OfHG(rN#k=yNGW0K$Tia5J zMMX1+!ulc1%8e*FNRV8jL|OSL-_9Nv6O=CH>Ty(W@sm`j=NFa1F3tT$?wM1}GZekB z6F_VLMCSd7(b9T%IqUMo$w9sM5wOA7l8xW<(1w0T=S}MB+9X5UT|+nemtm_;!|bxX z_bnOKN+F30ehJ$459k@=69yTz^_)-hNE4XMv$~_%vlH_y^`P1pLxYF6#_IZyteO`9wpuS> z#%Vyg5mMDt?}j!0}MoBX|9PS0#B zSVo6xLVjujMN57}IVc#A{VB*_yx;#mgM4~yT6wO;Qtm8MV6DX?u(JS~JFA~PvEl%9 z2XI}c>OzPoPn_IoyXa2v}BA(M+sWq=_~L0rZ_yR17I5c^m4;?2&KdCc)3lCs!M|0OzH@(PbG8T6w%N zKzR>%SLxL_C6~r3=xm9VG8<9yLHV6rJOjFHPaNdQHHflp><44l>&;)&7s)4lX%-er znWCv8eJJe1KAi_t1p%c4`bgxD2(1v)jm(gvQLp2K-=04oaIJu{F7SIu8&)gyw7x>+ zbzYF7KXg;T71w!-=C0DjcnF^JP$^o_N>*BAjtH!^HD6t1o?(O7IrmcodeQVDD<*+j zN)JdgB6v^iiJ1q`bZ(^WvN{v@sDqG$M9L`-UV!3q&sWZUnQ{&tAkpX(nZ_L#rMs}>p7l0fU5I5IzArncQi6TWjP#1B=QZ|Uqm-3{)YPn=XFqHW-~Fb z^!0CvIdelQbgcac9;By79%T`uvNhg9tS><pLzXePP=JZzcO@?5GRAdF4)sY*)YGP* zyioMa3=HRQz(v}+cqXc0%2*Q%CQi%e2~$a9r+X*u3J8w^Shg#%4I&?!$})y@ zzg8tQ6_-`|TBa_2v$D;Q(pFutj7@yos0W$&__9$|Yn3DFe*)k{g^|JIV4bqI@2%-4kpb_p? zQ4}qQcA>R6ihbxnVa{c;f7Y)VPV&mRY-*^qm~u3HB>8lf3P&&#GhQk8uIYYgwrugY zei>mp`YdC*R^Cxuv@d0V?$~d*=m-X?1Fqd9@*IM^wQ_^-nQEuc0!OqMr#TeT=8W`JbjjXc-Dh3NhnTj8e82yP;V_B<7LIejij+B{W1ViaJ_)+q?$BaLJpxt_4@&(?rWC3NC-_Z9Sg4JJWc( zX!Y34j67vCMHKB=JcJ1|#UI^D^mn(i=A5rf-iV7y4bR5HhC=I`rFPZv4F>q+h?l34 z4(?KYwZYHwkPG%kK7$A&M#=lpIn3Qo<>s6UFy|J$Zca-s(oM7??dkuKh?f5b2`m57 zJhs4BTcVVmwsswlX?#70uQb*k1Fi3q4+9`V+ikSk{L3K=-5HgN0JekQ=J~549Nd*+H%5+fi6aJuR=K zyD3xW{X$PL7&iR)=wumlTq2gY{LdrngAaPC;Qw_xLfVE0c0Z>y918TQpL!q@?`8{L!el18Qxiki3WZONF=eK$N3)p>36EW)I@Y z7QxbWW_9_7a*`VS&5~4-9!~&g8M+*U9{I2Bz`@TJ@E(YL$l+%<=?FyR#&e&v?Y@@G zqFF`J*v;l$&(A=s`na2>4ExKnxr`|OD+Xd-b4?6xl4mQ94xuk!-$l8*%+1zQU{)!= zTooUhjC0SNBh!&Ne}Q=1%`_r=Vu1c8RuE!|(g4BQGcd5AbpLbvKv_Z~Y`l!mr!sCc zDBupoc{W@U(6KWqW@xV_`;J0~+WDx|t^WeMri#=q0U5ZN7@@FAv<1!hP6!IYX z>UjbhaEv2Fk<6C0M^@J`lH#LgKJ(`?6z5=uH+ImggSQaZtvh52WTK+EBN~-op#EQKYW`$yBmq z4wgLTJPn3;mtbs0m0RO&+EG>?rb*ZECE0#eeSOFL!2YQ$w}cae>sun`<=}m!=go!v zO2jn<0tNh4E-4)ZA(ixh5nIUuXF-qYl>0I_1)K%EAw`D7~la$=gc@6g{iWF=>i_76?Mc zh#l9h7))<|EY=sK!E|54;c!b;Zp}HLd5*-w^6^whxB98v`*P>cj!Nfu1R%@bcp{cb zUZ24(fUXn3d&oc{6H%u(@4&_O?#HO(qd^YH=V`WJ=u*u6Zie8mE^r_Oz zDw`DaXeq4G#m@EK5+p40Xe!Lr!-jTQLCV3?R1|3#`%45h8#WSA!XoLDMS7=t!SluZ4H56;G z6C9D(B6>k^ur_DGfJ@Y-=3$5HkrI zO+3P>R@$6QZ#ATUI3$)xRBEL#5IKs}yhf&fK;ANA#Qj~G zdE|k|`puh$%dyE4R0$7dZd)M*#e7s%*PKPyrS;d%&S(d{_Ktq^!Hpi&bxZx`?9pEw z%sPjo&adHm95F7Z1{RdY#*a!&LcBZVRe{qhn8d{pOUJ{fOu`_kFg7ZVeRYZ(!ezNktT5{Ab z4BZI$vS0$vm3t9q`ECjDK;pmS{8ZTKs`Js~PYv2|=VkDv{Dtt)cLU@9%K6_KqtqfM zaE*e$f$Xm=;IAURNUXw8g%=?jzG2}10ZA5qXzAaJ@eh)yv5B=ETyVwC-a*CD;GgRJ z4J1~zMUey?4iVlS0zW|F-~0nenLiN3S0)l!T2}D%;<}Z9DzeVgcB+MSj;f$KY;uP%UR#f`0u*@6U@tk@jO3N?Fjq< z{cUUhjrr$rmo>qE?52zKe+>6iP5P_tcUfxsLSy{9*)shB(w`UUveNH`a`kr$VEF@} zKh&|lTD;4;m_H6C&)9#D`kRh;S(NTa=Ve^~xe_0~x$6h8Q@B_qu#ee=(lkI9@F6$0m=z@H=4&h%Q{htM>uHs(Sr@2ry`fgLA zKj8lVXdGPyy)2J%A${}Rm_a{){wHnlM?yGPQ7#KO{8*(_l0QZHuV};nO?c%h?qwSL z3wem|w*2tdxW5&PxC(Wd0QG_w|GPbw|0UFK`u$~U%!`QKcME;=Q@?*erh4_>FP~1n zAldwG9h$$u_$RFK6Uxo20GHqJzc}Rl-EwVz3h4n z;3~%DwD84i>)-8#&#y3k)3BG5cNaP3?t4q}F%yfv?*yEiC>sSo}$f>nh0QNZXH1N)-Q7kbk=2uL9OrF)nXrE@F1y%_8Yn c82=K%QXLKFx%@O{wJjEi6Y56o#$)Bpeg literal 0 HcmV?d00001 diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..37f853b --- /dev/null +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/android/gradlew b/android/gradlew new file mode 100755 index 0000000..ef07e01 --- /dev/null +++ b/android/gradlew @@ -0,0 +1,251 @@ +#!/bin/sh + +# +# Copyright © 2015 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH="\\\"\\\"" + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/android/gradlew.bat b/android/gradlew.bat new file mode 100644 index 0000000..11bf182 --- /dev/null +++ b/android/gradlew.bat @@ -0,0 +1,99 @@ +@REM Copyright (c) Meta Platforms, Inc. and affiliates. +@REM +@REM This source code is licensed under the MIT license found in the +@REM LICENSE file in the root directory of this source tree. + +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH= + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/android/settings.gradle b/android/settings.gradle new file mode 100644 index 0000000..edb8418 --- /dev/null +++ b/android/settings.gradle @@ -0,0 +1,6 @@ +pluginManagement { includeBuild("../node_modules/@react-native/gradle-plugin") } +plugins { id("com.facebook.react.settings") } +extensions.configure(com.facebook.react.ReactSettingsExtension){ ex -> ex.autolinkLibrariesFromCommand() } +rootProject.name = 'Expensso' +include ':app' +includeBuild('../node_modules/@react-native/gradle-plugin') diff --git a/app.json b/app.json new file mode 100644 index 0000000..71978bb --- /dev/null +++ b/app.json @@ -0,0 +1,4 @@ +{ + "name": "Expensso", + "displayName": "Expensso" +} diff --git a/assets/app-icon.png b/assets/app-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..95ddcfedf4d0249e69719d1ad5055de250e3fbb9 GIT binary patch literal 117460 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 z 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

JuUPG@|-SL;wvynsOf~(N^1a)3U}a@VmMiYPP~e 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 At^fc4 literal 0 HcmV?d00001 diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..ccfae95 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,6 @@ +module.exports = { + presets: ['module:@react-native/babel-preset'], + plugins: [ + 'react-native-reanimated/plugin', // Must be last + ], +}; diff --git a/index.js b/index.js new file mode 100644 index 0000000..9b73932 --- /dev/null +++ b/index.js @@ -0,0 +1,9 @@ +/** + * @format + */ + +import { AppRegistry } from 'react-native'; +import App from './App'; +import { name as appName } from './app.json'; + +AppRegistry.registerComponent(appName, () => App); diff --git a/ios/.xcode.env b/ios/.xcode.env new file mode 100644 index 0000000..3d5782c --- /dev/null +++ b/ios/.xcode.env @@ -0,0 +1,11 @@ +# This `.xcode.env` file is versioned and is used to source the environment +# used when running script phases inside Xcode. +# To customize your local environment, you can create an `.xcode.env.local` +# file that is not versioned. + +# NODE_BINARY variable contains the PATH to the node executable. +# +# Customize the NODE_BINARY variable here. +# For example, to use nvm with brew, add the following line +# . "$(brew --prefix nvm)/nvm.sh" --no-use +export NODE_BINARY=$(command -v node) diff --git a/ios/Expensso.xcodeproj/project.pbxproj b/ios/Expensso.xcodeproj/project.pbxproj new file mode 100644 index 0000000..6548735 --- /dev/null +++ b/ios/Expensso.xcodeproj/project.pbxproj @@ -0,0 +1,475 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 0C80B921A6F3F58F76C31292 /* libPods-Expensso.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DCACB8F33CDC322A6C60F78 /* libPods-Expensso.a */; }; + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; + 761780ED2CA45674006654EE /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 761780EC2CA45674006654EE /* AppDelegate.swift */; }; + 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 13B07F961A680F5B00A75B9A /* Expensso.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Expensso.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = Expensso/Images.xcassets; sourceTree = ""; }; + 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = Expensso/Info.plist; sourceTree = ""; }; + 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = PrivacyInfo.xcprivacy; path = Expensso/PrivacyInfo.xcprivacy; sourceTree = ""; }; + 3B4392A12AC88292D35C810B /* Pods-Expensso.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Expensso.debug.xcconfig"; path = "Target Support Files/Pods-Expensso/Pods-Expensso.debug.xcconfig"; sourceTree = ""; }; + 5709B34CF0A7D63546082F79 /* Pods-Expensso.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Expensso.release.xcconfig"; path = "Target Support Files/Pods-Expensso/Pods-Expensso.release.xcconfig"; sourceTree = ""; }; + 5DCACB8F33CDC322A6C60F78 /* libPods-Expensso.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Expensso.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 761780EC2CA45674006654EE /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = Expensso/AppDelegate.swift; sourceTree = ""; }; + 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = Expensso/LaunchScreen.storyboard; sourceTree = ""; }; + ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 0C80B921A6F3F58F76C31292 /* libPods-Expensso.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 13B07FAE1A68108700A75B9A /* Expensso */ = { + isa = PBXGroup; + children = ( + 13B07FB51A68108700A75B9A /* Images.xcassets */, + 761780EC2CA45674006654EE /* AppDelegate.swift */, + 13B07FB61A68108700A75B9A /* Info.plist */, + 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */, + 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */, + ); + name = Expensso; + sourceTree = ""; + }; + 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { + isa = PBXGroup; + children = ( + ED297162215061F000B7C4FE /* JavaScriptCore.framework */, + 5DCACB8F33CDC322A6C60F78 /* libPods-Expensso.a */, + ); + name = Frameworks; + sourceTree = ""; + }; + 832341AE1AAA6A7D00B99B32 /* Libraries */ = { + isa = PBXGroup; + children = ( + ); + name = Libraries; + sourceTree = ""; + }; + 83CBB9F61A601CBA00E9B192 = { + isa = PBXGroup; + children = ( + 13B07FAE1A68108700A75B9A /* Expensso */, + 832341AE1AAA6A7D00B99B32 /* Libraries */, + 83CBBA001A601CBA00E9B192 /* Products */, + 2D16E6871FA4F8E400B85C8A /* Frameworks */, + BBD78D7AC51CEA395F1C20DB /* Pods */, + ); + indentWidth = 2; + sourceTree = ""; + tabWidth = 2; + usesTabs = 0; + }; + 83CBBA001A601CBA00E9B192 /* Products */ = { + isa = PBXGroup; + children = ( + 13B07F961A680F5B00A75B9A /* Expensso.app */, + ); + name = Products; + sourceTree = ""; + }; + BBD78D7AC51CEA395F1C20DB /* Pods */ = { + isa = PBXGroup; + children = ( + 3B4392A12AC88292D35C810B /* Pods-Expensso.debug.xcconfig */, + 5709B34CF0A7D63546082F79 /* Pods-Expensso.release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 13B07F861A680F5B00A75B9A /* Expensso */ = { + isa = PBXNativeTarget; + buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "Expensso" */; + buildPhases = ( + C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */, + 13B07F871A680F5B00A75B9A /* Sources */, + 13B07F8C1A680F5B00A75B9A /* Frameworks */, + 13B07F8E1A680F5B00A75B9A /* Resources */, + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, + 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */, + E235C05ADACE081382539298 /* [CP] Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Expensso; + productName = Expensso; + productReference = 13B07F961A680F5B00A75B9A /* Expensso.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 83CBB9F71A601CBA00E9B192 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1210; + TargetAttributes = { + 13B07F861A680F5B00A75B9A = { + LastSwiftMigration = 1120; + }; + }; + }; + buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "Expensso" */; + compatibilityVersion = "Xcode 12.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 83CBB9F61A601CBA00E9B192; + productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 13B07F861A680F5B00A75B9A /* Expensso */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 13B07F8E1A680F5B00A75B9A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */, + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "$(SRCROOT)/.xcode.env.local", + "$(SRCROOT)/.xcode.env", + ); + name = "Bundle React Native code and images"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "set -e\n\nWITH_ENVIRONMENT=\"$REACT_NATIVE_PATH/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"$REACT_NATIVE_PATH/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"\\\"$WITH_ENVIRONMENT\\\" \\\"$REACT_NATIVE_XCODE\\\"\"\n"; + }; + 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Expensso/Pods-Expensso-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Expensso/Pods-Expensso-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Expensso/Pods-Expensso-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Expensso-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + E235C05ADACE081382539298 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Expensso/Pods-Expensso-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Expensso/Pods-Expensso-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Expensso/Pods-Expensso-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 13B07F871A680F5B00A75B9A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 761780ED2CA45674006654EE /* AppDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 13B07F941A680F5B00A75B9A /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 3B4392A12AC88292D35C810B /* Pods-Expensso.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = 1; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Expensso/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.1; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; + PRODUCT_NAME = Expensso; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 13B07F951A680F5B00A75B9A /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5709B34CF0A7D63546082F79 /* Pods-Expensso.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = 1; + INFOPLIST_FILE = Expensso/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.1; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; + PRODUCT_NAME = Expensso; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; + 83CBBA201A601CBA00E9B192 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_CXX_LANGUAGE_STANDARD = "c++20"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = ""; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.1; + LD_RUNPATH_SEARCH_PATHS = ( + /usr/lib/swift, + "$(inherited)", + ); + LIBRARY_SEARCH_PATHS = ( + "\"$(SDKROOT)/usr/lib/swift\"", + "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", + "\"$(inherited)\"", + ); + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "-DFOLLY_NO_CONFIG", + "-DFOLLY_MOBILE=1", + "-DFOLLY_USE_LIBCPP=1", + "-DFOLLY_CFG_NO_COROUTINES=1", + "-DFOLLY_HAVE_CLOCK_GETTIME=1", + ); + SDKROOT = iphoneos; + }; + name = Debug; + }; + 83CBBA211A601CBA00E9B192 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_CXX_LANGUAGE_STANDARD = "c++20"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = ""; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.1; + LD_RUNPATH_SEARCH_PATHS = ( + /usr/lib/swift, + "$(inherited)", + ); + LIBRARY_SEARCH_PATHS = ( + "\"$(SDKROOT)/usr/lib/swift\"", + "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", + "\"$(inherited)\"", + ); + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "-DFOLLY_NO_CONFIG", + "-DFOLLY_MOBILE=1", + "-DFOLLY_USE_LIBCPP=1", + "-DFOLLY_CFG_NO_COROUTINES=1", + "-DFOLLY_HAVE_CLOCK_GETTIME=1", + ); + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "Expensso" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 13B07F941A680F5B00A75B9A /* Debug */, + 13B07F951A680F5B00A75B9A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "Expensso" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 83CBBA201A601CBA00E9B192 /* Debug */, + 83CBBA211A601CBA00E9B192 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; +} diff --git a/ios/Expensso.xcodeproj/xcshareddata/xcschemes/Expensso.xcscheme b/ios/Expensso.xcodeproj/xcshareddata/xcschemes/Expensso.xcscheme new file mode 100644 index 0000000..0cb8815 --- /dev/null +++ b/ios/Expensso.xcodeproj/xcshareddata/xcschemes/Expensso.xcscheme @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Expensso/AppDelegate.swift b/ios/Expensso/AppDelegate.swift new file mode 100644 index 0000000..210d4c2 --- /dev/null +++ b/ios/Expensso/AppDelegate.swift @@ -0,0 +1,48 @@ +import UIKit +import React +import React_RCTAppDelegate +import ReactAppDependencyProvider + +@main +class AppDelegate: UIResponder, UIApplicationDelegate { + var window: UIWindow? + + var reactNativeDelegate: ReactNativeDelegate? + var reactNativeFactory: RCTReactNativeFactory? + + func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil + ) -> Bool { + let delegate = ReactNativeDelegate() + let factory = RCTReactNativeFactory(delegate: delegate) + delegate.dependencyProvider = RCTAppDependencyProvider() + + reactNativeDelegate = delegate + reactNativeFactory = factory + + window = UIWindow(frame: UIScreen.main.bounds) + + factory.startReactNative( + withModuleName: "Expensso", + in: window, + launchOptions: launchOptions + ) + + return true + } +} + +class ReactNativeDelegate: RCTDefaultReactNativeFactoryDelegate { + override func sourceURL(for bridge: RCTBridge) -> URL? { + self.bundleURL() + } + + override func bundleURL() -> URL? { +#if DEBUG + RCTBundleURLProvider.sharedSettings().jsBundleURL(forBundleRoot: "index") +#else + Bundle.main.url(forResource: "main", withExtension: "jsbundle") +#endif + } +} diff --git a/ios/Expensso/Images.xcassets/AppIcon.appiconset/Contents.json b/ios/Expensso/Images.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..f40cbb8 --- /dev/null +++ b/ios/Expensso/Images.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,62 @@ +{ + "images" : [ + { + "filename" : "Icon-20@2x.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "filename" : "Icon-20@3x.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "filename" : "Icon-29@2x.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "filename" : "Icon-29@3x.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "filename" : "Icon-40@2x.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "filename" : "Icon-40@3x.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "filename" : "Icon-60@2x.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "filename" : "Icon-60@3x.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "filename" : "Icon-1024.png", + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/Expensso/Images.xcassets/AppIcon.appiconset/Icon-1024.png b/ios/Expensso/Images.xcassets/AppIcon.appiconset/Icon-1024.png new file mode 100644 index 0000000000000000000000000000000000000000..4e7d971b5f4d34c03229e8cb60e88aef98db04c4 GIT binary patch literal 264691 zcmYgY1zeMFv>qWL5(0uW(ugn`$$?0hbcafVpn%dFh=_`GNq0+0Nuvl7(%sVC4A@}o zegpsaUVqzEtQ0N2dVm31^gARi78DBv9kgam#Sunq#f<_Cc`tw11&FCY;0%anR; zDc~=>Y>ZTFH8eo?fzJdWTr64;<_=iETLz2ne?Kc?ae;8Ieh(}g;&8PG%y%?_H|CEr z@WxzU|HR3_`uA<%cNy6KeH#~)f%AW#G5_qZ&Kzc4!k5a%?jR5m1?G(fN=ms40?C3@ z9?R)@VQn`#RPlD{uO%$e?4ISF=N0*gG$mQYsoqz89*FxWD>KlxDyc)1xHvf&VI>x} zVe!?bQXMAH|3*Q^U^NPe~#b&)FIE7dn zJs&GtFDLHS9o3y)#+(bXvcB1#IOx$`WJ-*RY9{;HhKJ1z`hTx-2m$VScJewqK>+Cg zzbINkpcWi55Z3>_CX{fq{6`Eu?%>LTaNh`E8HdlFN_A&Si~jqH5gpbo&{zl27-oU; zINYxpu2JV~@VZXB_OejF!tmG)Jirz@Eq&v+@qK-JP4swp?!+$zj{Mk#cm-N1cY`pN@R=g|K zmhWMf+2a$JxP{Hk{}*>X+>hUHD70wd<6h*EYiRIR*S58wr-E(aEgSlQRs5&xNA%3i zufTp#DrT>GQt8`I%COHIB+&IabQi~kzh$L42(s+Yyq-vsF-qu)AEa3wFIcTN+n>d* z4e|#tu`Fxh+@dYYP9yo^PLB~O2={~xi^&puPTr8h91DwVf(Q54Cr%x?qsz)WiKQPp zJdRG(o^ANJElqaxy83LWvI)^*My6 z>YWy|LT#i9=nK@PXg^Ec{VYSy;K!L-gpa-a<36l3g!q3=i6WrMQ)7^o3>0Xt)k^AQ zu^xQzL1*bvcb*~L9W}9whh%d4qIsy`VwTi}5YX2nZz>3Scq*0j*oS`$DuOqFv{X*g zh*e2^;1gzQ@r3YaQu-`mNZAdd+D2=EoP4YU zY$r1lW*c}P0_wxGYL6UT`i%u((2Wb2QQa{O#5iMAHi#=DFko2{b?gY5hvzF{rF4o( zgZQJ<4iQuk;=4Iu9cXGRX;x;%`nv9q&cbdS2xGX+=I`e#<2ax3R|aI5`7dALULkVA z2A3Z+VMBdu;Vp<@TMJt%GhIZg_sqeE<#tzUN6A|9I9f3AVr%&X5otk3AfL38JzAIJ zfKshG;+NGR)fsTx(5!qvGQ*q(&LOXIF8GVvWcq|Dg0l~o)l;A8;^WI@ZAey>Y=MkS z#&1%DGU#~#3c>og4AAb$Ei84cDWL>%28?EzaJ{h7CrH~~ZfAO}yjQ1QKLS~}Cy{S1 zwWH4L%G03CgGE-y-0p~;3CSTV3OVgSr<$GnxuJUG>M0|?=6hm4mYv6C9o6JS zP=Hk9ccU6lou2|l?)ye#!EqgDFq$L}Qj(CU9c(k7SE~DF^Ua@RJAwMGu z{|YGl%77T}<`f4SVLVZWEB0ngt2M8+yJ)I!wfB;mJNVM|$ITWR`u3>KM^qPq14*;S z)4yNHf@!ksOInUy?_R4W%O*rpq3N~#j$v1}Ek=caST957PA|Hc#(QDPR2olKXD_8WeI1luG zdD%@}0n-fzrgiz}7OP$FWK=i|ZNIhCd618ATtqgrtGm*3JJ`%t!JtVzP_iSE8xlcb+MLxoqmziDu?La^Py+BP~B) zSQM!^M?A0lIHfya9S{zdm2wp|GFtom}FNNxXbznDeC3&Tn2RL zGld)Y;dOZ1zKMMowEd~)9W%yLW$*-=H4al_uk-oauzXMq0pf+n!lNW!yveUa>%7P` zcK?b&l|nP>!(yD2-eQtM$|m0#>$qB2$XvB($usp?3 z!mPUhddR8`eRXVQspvugL+r*smjw%@aV#<5j>ET$*!VZ+!nCQ~l_zImCS zz1lewl7oXHBvoIV6Mm&>hMw0NTLrC+-GjNZck#zxkVq5}GrI(+59K zYSdvs{njFx$;9?|{VKq2JExpykVE8Lr#+Z+0Ze0Z0as3_#Nj|Z8rT2C2j@MkDmCbg-RBCNptGgke+yeLMlw@83J z?_@acvFg42esi{=8C%}!0$?Fz#(@kQ&csel)do%R2 zqg8jaP8k8Rby-Sd%)R-UF>WuCD3Jfkiqr_s4$3VhDL>EhSTpNX{7{j#UH1;IUUn%aO65K2Dyig`MN0R_|~h?(GE zjOGQKEK6z)Gh?xOBj<+@hwf%dnlik{*#Th$9#rVnIFK|80jujP6HRmHH1z2+Z*o$s zngf>XD+n41VMyrbTX(KbmT)^G1a$C)EljicqzZaoTUKfxrFDLoCv?V*llzWR&?#rw zwR^RZ^UN6Mn#BhGU<<%%wX&dod;_C`WZ3|V5t|*xUxI0oaY>(_-BT_Y7G`b^oX-x_ zv@zK|>V?6NWz#o5K6Z>6v8^zevSchv=eLld-gBLF|DH?41;`3ADE1Q=GX@P1&giJ8^3{1V( zs(au)+0S1Pfm?mg;8JG3aGX{qVMqFr&?C#_C%gt1E*uU}A8uLdm^Cg{J20E4g~n=` zcXS8Hh_njdjPeTGeVF6feb3gv0;CIebONY54#`o|`y3k{!N^yBDl44uEw|A5vhkOR zY;q?}>6N~ZFud3M!2%%$F?f-nPQT{(>#+HI94xN+PSb zpNQ=TD<`N#^;n0?+-&r2HrEo?%z)@zT(AU?snmFwf8yu>@v-Jy*_bQ_qRiCTPp=?q zaGUvF8lTpuTsn*A965V%TY4dkDh?T2h6Xhc4@?~y_+P)yD?x#*j{b7fndNbB};(4 z@>jwIIseA1v1PxBtgxoxhgPAclUaWks4((7k-=)jZ9FX#@Byeoxhvto`S**cQfrw8 z)T1w@`>{+A7Vo~zMjPFwz}Lh#O?VCxI;2bp3l?waLkgZq&NvtAs~tVOag9eAjLT+n zs=~c8U-baJTFM^dr8jO{TNYoC76q{nVGRkjBB5^i*ezSr-b-VAB5K)^F78n-192{a$*p6kV5N> zOMg6Heq|YFtp(g>^Ty_Ri^-mA1*PHc#>%|1LAY1dCf9#Kfi+;f5^pbwndNG0Tv&;{ z>00@gy|#0C)n{-Gn8bd%&w;1^b1d_5;*uA_avX0tm=G3h+46qp={2IP<2XatHb1R} z@ssJ|CRfy!_nz!#a{iRsJvt#ZYMH^t0~?4&E+XAqgeaYJnMZC;K5mQUxzPhky<||gWhqVxHeB3lgVL}=x`r-htO~VA0PK}WX-_+yAtMm?zcaF60-rhQV;qcl=vbI3691H% zAu63uqMiRVxXwqDk3XB?D9D6|<9Qvx#v}YSnR5u7@Us`54-QoL-5hw24C=lrGm|))n%RPB6H`ELde5f&(ez10AL0ZuE*Q%vuiJlZ znr7L^Rax1WystF3f`6wgxRIrhR}mXyWwKUe7>`C^h$V34(cTkqedKMlu6ean+?ARj zkHo!ut{Zwuhj$)$PL)p={!PEmV40?uWFwnD0)M}) zP}0j2{lTAchoSGvd)X2GWe7-Ji5R=OLg6YSE0Ou)qRnJs)9&+U>3NqS9_~uK zh&t%JriSBN^oTQyn1->A|I+|U=wBO_Y;b^nL|Wlz2<51jj(<4O;yl(zHq6d$5nxGS z{U259#r@pam*m-8?*<co@+_z$S4(8>(u4g(1u-n`ZE(rfb9BD9*(xp}p<3cABvVbAM)SBneFXNG-FT&S z@a0AG*@O~`IS=&m2sRt5eO=j00vwB}#@)*+sfH2^d_u1!>y|xeLAo}zZ@pS~TG0wS z7-6<3w0t2txD^P}=RfhTZYD9)xH&caIepWdDV!AYV>7)S;+_4kMj0rFVRy_HcYa;@ z{o>n^Spso?8s}2{L{p`yKiJAzqE?KNs=r;EPj(+l{q0h`$dT*Lkf3Gq5|%iA2q88a zH+oimnMHqXLBkjea^PA3%9cQE4+QbH$tQzjI>M;q=PpnyMCd~DVAXfU9iynrp`Fu5 z^~F!+4rE)2YxuiI8)#I&EAl!33GsVDpREj?#D@$F=QRMRGcHZJ7Jx$J6?wq};dp72 zkztL#V9xgzct!ZIz+U%MhD9h4?(>$l~XY7M&jM-OF+ZqtI^ zRh^&%rzp@|^iBOoql*yRS6O`3QCFH~E^ot>juwalR$VpV`u4Q=+ml-*y$9`U;yMlqdvYoV+4P7`6J|bo#Z)FVE8(raMBgylOeG8o-JBJ zn5`hP>W;_u#9W)C&_lnA;h&iBBpSR{YO9Ie>>F2xX7%@7>f1l3iEvqRNP3z**lSD2 zqv-t#J*7BU_??AA+LNI<9OE~0>Dq+*@G5%@WCirqYEF&|=&Rh4Fmll)Y8oM~_G(ah zt-rVFV(X|3U7gT3`u=$5O=;FU9}DeV$%8GEfv)fJ7KP2w!2sIu4vtMyAm!*BwlLay zLU@(^0GX8v2qz%0@d3e2jHp#{9}AxQNVtpEq24F_83^+nTH3T|97C0~z1JBfPPOlE zH%DEhP@!`Im7aVgk)b4+T``RKvUY>c@mAb52x>wAOPy|`DZ#iVSuyP0-q)JLq16V1 zx>GS9)mK+7&epm{f>*1>?#thSe6T+WL(Y^PZt!g{Nn}5Ai!Jut`sR7JH1SZO??`GX zsT#(C8Yt8H+`PmTjNj*V@cm{(vfc83DLNo_ye%JQS^#V)rPk4z8Q(RtZfEX9|JS?8 zXf-#)k)V0$XS_7!(aq$lzcMruH4Hy!1}&Q9ElYFzXS5&hs!}g+A!9g2+S93#)Wq82 z2OjXby&`&l#g1&Bl)(yr>whGe8MDxS7Bd?r;$=*4vpA`Xl%n+A)`C3_Z$M15;1GWU z)M|&{yTzKGf!1?S?(dC;77`w%63IF`jm`Ht z;L!&xT@lzhKwLjL?PMLS$X{aJ%ls%y_W~FGPYtOUHH6a>W6luZ9yB|8fcKesFugA= z88wAo2lw4zIcR%wvnzd;9Z?nw6A);TBIjoud#NXwp8b;L6&_{1zQvsGr^h~Vjt@P& z&I-}ocbofQ4l;!fx=0_(pYAU+{Y$vz%(nzras$yG@n# zK?G=qqbjuVY4bS5gJ0(I5{bif)W6 z$gB^io06Yeh2Ur-vM{dp(rRVL4yR%fU-&f5c0#hpU*e8&oRj~Y@zz>6qNh=_L{nuc zx4rM<$eIE=_d`+k-o+jdrwk>dpV`29t1yFu{(S0`JR?TG0j=Sf{>*PM7B-+?plL+k z?&`~18O*aWQx|NAPIq2SNrCZ@Y3Q7G4}FP|5K}Sb)rt*nsB!Ckq3P6q(b(%6m1#cg zO&dO=4_p6Tl;8ZjEPWXa@;C_oS0px<1JG;!Dv=BbkgXQ%%nI(J=8e(n=`ZH|Ecmp% zyPlclPKtQ+H$7Q2ok!@H+W3RtdI{f^pkjgw7BHP=WtNcQ@m`yvGcTaZns{&{23)%uPJkm(ZG4xJs*rZ&IyzU zznC;%2FGo|nmiWDF04gA1qE0X+e~WmpzIV|Bz0PH5c(l;zr@_()1msBmy`VXPh1K} zWJpC0d71d1^b~P*+7oStY@JH!HlUwFQMe;5_kvk53fT6+)Hso9A4o74_py&9Ua-*C zCVN`As6$_^AS>M#ZZ_%Ay}K~sMIGE_Mt3B{FYl!Gu>1M`K)Q|e!cGd`GaYAQ-3j`0 zfsA^2@#E}Q$lJkl6hSDoG=k6ZD*0e02NXeu){RhE1;?-_1e@1unjaS!B#ALoyN}Y07jP13^rsDQ72B zLFiWRTTfH|{^N|v7+EEkF+KyrzyvX_vQshLcA|1Z!u%!5WA$RO9YPwvyMGg{{pS?r zU7{sXV7foUTGFRK@9|AznVPB;D|h-q9CZ`V{X%y^5pm%!oxdp_2@64rNTpA*;UQ2# zTG-cGrQhPw*Mzm3TJRf>$`ivhN7);|C#eOHP@>Al*HeR@Z6!ggYj_x+hRF0Mfb3k1f+%km#H3 zy;X;By(~&;Qarlgkqcg(TBk#|yQQnX)7?h!fLy@a>#a0g-&eL&j`UciZ))R!?ny=2 z^xCcjlKxU+EKAQzgivOFbdV;_Ai2g^07eC};9Ea2D!{?Du3@9o4J|`=9Gb%7dMyuP z3Yjy|qwpIWRdux?1zfQRt&ewDX%6pr0UQ{NQE}iMPV(r(_`ab!2suPv_ zk%>6WuLmZ6+zI)h$P|nCluj9~JM3^r1>>hdfwO7=>}Gv;$ixBIF;hee8UsPtMr}M= zvaGwk7-;*nKkPZs6oe)>Ji0f)~2?iBj=y8PhPJ_XXhg%zewl-2jwdq5iK0ugHf6hA_xR;J-b8?|N zo$&44WmI60%-uok`cE_XL6Ls*`P20Hjn{kgM>xp4iIIu>OR9d$UEN)-#c5}e5RVz6ElN%flk#1ZYel`Y%}u00)ocMX)CDv@grGRO!LpIaHH$!}#FHl>m> zzBLB8UaYl|G2HG|It(FE{GDDXv%jO> zap5$=S&Mimu!9B4JQVjH;>ITNaz5}Bm23s{XWl$UJ~hk__RYCo@&uFcOt4au&tjs- z8*C4;mZ(1|8u^xvnoT2(2d^uHS9*RC*=L1C53_4%Or@^)mhKjEX>m`M63zUPk;GU>n2ThBQ`aB}lOG@Ts_iVkPZSdTCsD+8D`oF9hA0t3~Y8rDOBcE`_ z))AH-jO2;w-AXsFLnefE*)_%8FS&M&Zh?Z>6FeKQ}cCw?Q%@({{D&TuZaN< zwM1KNve5I1!aMn&pKW|!aryKt`9356<6}l_l;z(L7L_LE{l&~oAqYiSdg%Te+6->#)RQ_nF%{-DIk(S1%&c_F{Og=`3~r z(X{J#0iLx6?{B@6k3-otE;Ct9+U9A99)U|kvOSfQ<`rTtgEA@Ti)nMJ^xC+u9iYrT zAT^Mw8(8N6+|eekk)Y?yx@p~{+Y)k(YW~7Y0$wEM9_UhX^em}rfKv@tav9nL&)(}C zF67%;riJYp?2JlsHTj;Q|2qJ8l)d%k94a-<63^?rW@fTLFIyuB9Ds;Ye^DQf?(xk=G?g zX4Cq(7HtxcV1T-UyC%oc#&&Yo&YHujmc(n(jILw0itHyJeR#Kb9MMku zv%@1K_m0e-a^nxL&&%LH>vu~a#mVe1$877G> z;}er0!e$;wlr0vHcc?i#S#&~kYMdGSY=t(fJ2Y#V6(33omAT zfWCHu)wylpO&ZJXGZ{4QRq?Ny(~h;27HnupwG~N8QxS;nU*|j&d&4djV|E{fuUv{1 z48sj!mat<+p#2&gV4qW2CgKW#z&5lhP0PAgAL$WF{}6)aWF&8ILLp8sqi1cp_HG`< zNBf0kxDmgwta1LByHr>z$M-^CBr{zzIDzdl@cd^~gCZjuvHq7r4qoo#5HR~?4Tr&; zg#zP(WvyVC@gkVH>oMRYGw84qMH-#CQzge6QIC#R6OwAvPUBZMq^Al@GJ`#g+IRrj z&LgT1O=oNKg&0{Vn^Uc$>gM!9g{Gq!+#|6{6qe81l$Nr!LY|WjHK8-yT8S3pleUOK zSLIwFs8M2q+Q`adI}Fm)WIuKEI$wrOQeP^#BcDmYSU)XA%4`+q&+Wfss!vQSL>2L_ zH|)H*!Ccdyj`jU?XFRL7WXSOOEt#d<05)EQUq}8@DohA+sFa@XnJcmMvHL=&yoIdL z<>c3bPVIkm1BAs9KpME<2?9uE3t^{v-f$>2tic;Kxw@0k*goBOM(SUYAd{gM<9OJB z%&D!ms&#kl9w>;s;~iBPy*fi57bwncOnGNgvFFY6^=8+ML#}w)Zhp3nberQ>-(Fhh zxSfUo96aA=(e-?jqNO8viRzjUV3F|yjr!KeR-jg6HGeyU^t|tbhfFFYS+gm+*E~8@ z%s+9^{B``zv1*{AtI0Zt+Kh(+#j-NEzs1I znA0(r#_mn`WIp4nQ8Ahl9FqF;^nIaE%=Cqji|n`tU@*zwlHX(G=#h#gr)c%d>xmCg zAR{2H419V_cWav+TgRFwOF%>IT+9`c(3{%hBDGgCbAa14)#G`&fj(<8=gso&-*~O& zSgMRZPHuI|vR5J~dO<N`>CA4sHkZ^RkY zUe#$Z^l+5G>gIssyC)=o9jXyjIoMOw8bx(&FV;cKnlC;&UuGG7zjKI8^n=acVu(fB zb!il%*G=yKE^uAylwN(qQM_XS5oeBJF%`*uV-`#ys?;!K>{xwoD>?fqI9d@rMD#vl zTob+D$qHc@3CA6kAIdMI_zwYrBA8es!YY3Q*vAhxtI=vgEg$0`neDh4ZyD1hXA6IW zKFj?ip-d%rC<~mHm!?LK*yG&zQ z;BQ-t!^bqC59#Y_-AL_H@oT_F@lpc*#M{(!8M=s+ z`nw>8m~4p>Rxb1*pWZU>w{@z2wd*Re7TX(XI`y+0Tin_#rrK}U#Y0tP<}YPMeio-U zi5WTKflARcO6fyTOH!bRha~+=H0bCSz4Fa+YxAh=t1=*v?s5WA&!Xk$IupURB(?`N z#9{7C=lS6gk0E6Gixf3}s9fX?fs#FyPl*X<0;gxZNsoMv&RdaGGLx&5$pw`}`86+u zjx%n#d;kW?j8!eq$O}Jc`7_I0rbQ`1@6*<)@oIN(ruSxCiV$pH6X!8afb~}k$rA&j z#bRf+`4-vRk~lz~?usVXxV(L2h~2U_+aZ9OxPTSRF*tEI{%*jciU z>rrR#*W0PONkN_D;IFu&3*8l@hP#L-9{UR!&>5m4pLYY6x5_cKV~h=z0&Hyk6W$E~ zo(&-Z$a2GPk$h&(7U#vQ@P57~cq3T1-jvaBy#vC~6_7VtG^O)Ed5@+x@xCZIktCL<>0U7AG+Ewq+NR1bmiM3xI5orl`8eOn*P5e&(Q~ zo(iY)^ouImIJoczQ~mwgedK+#V(;)WgI$Df1)0t}@|aoT&FHj?oOXiyi;vzZR)Xth z>^tjkWoFsALM}UTq*Ig~a{KM=rP91$D-Si!5hpK?Wgzs?GSbcerbU4<2X#Qn8hAH7 zfelQ{$=+1igdysU(*ERGs<_C26Y?8#CH=%*0;lpMnP5>{)G!-oSFd^U zT^A-&U8Q9}4|WgqHGzH;!^Fj~7Cy42HjFeL7J4A7SC_|EhNffXDg56x`)hfQ`X`xc zCF{?`mJb=TZ_^~#ak|tO^w)W-bOksSYphJIs+YccLOH-gu=>vK=&06Tw}m{Ux?-vg z29Y@~1!&~UGZ`plt1I}6Xi3Y-=PZKjDY2`;Fexk}I$SJYWk>Wb zS6yZJ7HYb5gf~z(HrhvZ`$zUr)1wqjB=2_@L;}8R%oRR;6!CD9dkDfM!l^zCRonkmHuyeLs<7w15y&m7!Vj`bnR2(JhJC zJ9oyDhf3?-WG=*k$q|&f7WN-LuUA_`Ux~+6w=GNrwUMILcb0|ZRw9|kdiett@lDAW ze0<;g0BZp+-*{kY-;<%N=gj4ygpmfCYc_((e=O8@8)Ma5Qu-_phP-_ox*`_8JsG>% zII!TfQ(aQ`2L7VBbc&-XUVV@IF?2`PYuS8o!XfF1Vk8`a`0amwTIndykMUPmVGk2( zC0H@FZD&#}@}DyP-^P2stv-@~`?;O>sFk4&YWUd=sInbLBjl6Lmb#eJx8+Yqj>`X3 zyrv2dt52>mBsSsET&LeDH!ab*;hW{MtgB#dXhQ_<^tT=&atKa8+a)E1T!!A`h3nF2 z=QZ*~*nNetUE8s&RWXLW>sv1Xlk`?4xXQeCYQPxTQK%i-{OE*ka>km?)}c@9N%3G& zB67!Qo*J3l%&_cz`4l|tJbn-$@HcyGt5itoN5lJ-s-zQ3>sP5+aKF_ECLb2H?;ksh z(=RK|I?wNOwtx%Ny`ah`MJlzkKk0O?15$B77ltbeX zrN!%CWk9s`*MgVs-Bi*Vu3|zhy3JqC)nl<~~%e7_L*{Mdg!GXy3<4;_f`nj&2}`d`!CrpNLla9*3pwjrDNjjMcv zhfrhw#Ie*2{Yb*oW#eMcM`+EaMqLZX9z~zlA}?6~wUWWgY(`Dpv*gQpMz@c98tALR z?{KhcOla&jrzJ~Hopjo*AmIa@1^nvu9}%~tk;4lU8yQgbL+a*~JoT-AwSs`w6AYu- zu?we?vqF8$x(BG5}B}dCLf{68iXL*>cYcoy=xO^o`Jz{ri?L5ETC67uTL`y zNd2zBGL31A{hKZQ0CKS37)4s3Yq$M}6Xx)lX-fW7(U1S( zDsh8{AI<2zSlTrlJSg4Z$l<2C%+`wbmNSCfWq?UYz;WUlnrDgDoopz*945*McYfUX zNAaC8^!o*fu?R?SJvaw6(nGB^MRy-GpTI;){R|$MozflUoO`RwilL4QMXIcuOJ^0t zoTN+C?Z;nl>5t_`yNH(AZ>6WV+On0~(R$S^gJhDSxSBZO9D5q5Luz)=~#)FPEWUM!44yG@ZjnTFPe^|cYfx6#1H}sAXv6-Go?XKo2$quGffoX4HrjO3< zVcZTkFzdk+W(pQAg+W&~?S_)ea0Lf-{SQA1$dn-Di<0m_>@Q}O)Sc6}w&IKE3}?-y zUt%d}&a-BF-g&3ocECF73;XWVAMx#&bTf@jImGxzmW8m?npBFmSPPw9<5>YOxSw z)d2cNqOwklAl3Yl2kLk}qJxPvMALhr9ML(xs#IxG#f540VtlCxW~Pa_-0CLaQ8=-< z$&(J!`7BiOEVW!)1{zVlvTVYZ9TE2W^d%AScTCZv26m?#zNWp-FBM1JTcvh5Y2i*3 z3xU5EgS0~66c!JwN}gs4T-_Kb?ft*`%P9h`%m?4J`pWE}?Iv#& zH@p8mwU3S_3QA2f)2mjaw;VGS;-`o8x84X1$hb$9kzV+h`LX`!pFf4mFW6|9lzfm7 zxEO(aCXupeIB&@ihuA7V-_el%_Y{n*6*CYV_#+c;$OX2RvN7iv^-%#rJB#Sram^D- zcpFF8oPemfB;cDpq(nlN6ovD zjduL3&^_2-Dx5nCg0Ap4q19}pcnJQBv)hcAf>D}Nu(F)hOTtKrzHjY4S>E{qaKEFe zwV}z{Uqh7K&rQ}s5|FoZvZ~YGoNn#)bMUyhA|JydWAQbnU>6Q}X z{@bFWkp^3_h|d2M#DHnXhi59aF_#+>L?X3pYRdgCYaKe!L+udaXhkx`r<6pD$YE~+!dnY^Q(?`4m7{Ke!kPY{6g1@GWTOPzYq@vAvibp)7$O}T{tIdtt{+xC8l_0Y@RxD=ibS-n_( zH2D>w`(X!IX(f&S zOhX(aG^t+zwbcr#jjrMclg3H&0gE)jW2UI0i*ms;C5hmBJ1 zp$azjJAghu03lkE`L!dZ=BeTrKGrX<+kikef|(M1fgNTmYjsL)rL8{SOdjUE(J_?V z5~bPl?f7I(J_`3Z&ox)o-NtPe2q1#sWw)sN$gke%v|taD3rvUD3vARjhxkA!h%yP zZdH?Rp=8PV#-ocFrI2QqRK*|f0fjKhd0jj&%K?CkETfGlQcRqp44Y# zVA7LIBMACD_blV|ZqX^sa%DHdKogp8DXHly>{KaI`|;*KF2&ypaH+e0LxTont?&s4 z8XAu^AHYDxb#5rvq}t}e?+1ROugA2g5kbus1Ey(CiL+gbg)YP37q)%tM)zMIih&b< zFIW9h;ob=B=#)N~kRLsVa!I`8_{tb(@%Qcv3()@6xD&9Lqz2|#&Di!#xOfQxk9+t~voaGxA+fd;!&7EOEm}`_$`i;Mub0$S$&g`j)rM?D^hZ6bBx$;lC4=3*q|7S=Rl)!%z!$>>U5$)r;KR zTA7ODF;1Y+J9s}ma1Wm?bi)Q@(BW9)r_Dazt*YlP0rAu|GqB#03(Edo4IYeV-}aI_T72u8ur zW`vLBvt#%HDEPi|TRF6&>W9vl)=?1LR>XqQgwEmry#rh4FgGwigw0D;TQ^VL(>ju7GKBE-fnEq}-ugqs_inRL$OVbN95=;HLc|XT@Y;&2r zpEX25KSpOE@vL6|#6PL|vFTsJ!JH<;lFu@ze&C6cCHcL03kAb1T34~M|MmB?iom+F zZ`#Sgz`C+3k9b_!!iFX1o#(v0FMH~_hJ@rEk*)Y3YW-CF7fxk(+DL?X7}ekYXLqx^^i}ilJa5OK3k-{R_Kx)%y zx?T<&wZx)6m!qIrp_FyobPq%qzT#r_yy*6KNK4kvlyAKS{c;X*?I8U_x1N7xy+ z{XwCkB`PDIVI@zHFav|T@>zjdHlA%bZ`hI{h-(}o%oLX|W9 z=vzDgC*$~X{=wP{_@{JwSaMPY_Iou?`z;1}MnPD=debpaa5jR1EleXE<3PKs~hR5Hpay2a95%2yk-LU=2w2zBm zln4AdD=4CaVlUGdEeHQXtp_)0!^E z-hn8_hJz2W%{4#fGp`?DH^m@=_Z`tVGyfM{KP}-ssRYdyQPfP?*@o)ht^%rI{N|ht zZkakDHTIoWAUaiAGqI_xGI2ZUAlX zN`rD<^elwIgsc-)D*ob&Knl(e3O>nEKPSa_+GH(2EWLI&BbfOMaFv6tzlk@v9e5`6 z`3t7D(0|I)a$j^vlhQaLj5WGPF~)B2{k!=fO9vH=hVGY%ES8=elg*@U4asjXDn|+2 z*(7q8pK3o%=x=G_IYkwJsbtiv?1lJ$V!B0W-#|@%<~~iH=*b9=^{lLv7x28BsYM1JqI>4G9SkcpzcnkmyZbjXF1Oi* zpz5_AD8D@kZ3oV_Dr-Ebo&uVU>lxfK5xmahD*=u%{=yfGpGH6`b7%h49~nB5>*?|d zdhhBPFgo@CtX4(BEE$4rT5Q4FJuw?Ilh%hsUB^6b-V!-=crvJnfU;_a`Aa+avsgxU zbAji`N$&pGI;C%{KeA6;qR!(8MUL`K zQ%8>~SM|QVtnl7(WoeO{C3~BelEbE=(!X*m&R`|ac>4hIrki2VpQA*LFs5%uufe2v zi)`kTgwpxo#*DnN=$frJN@w^!WxiSPuQkf|G-0u&F#>;o%hj{0y1VOH=c_rC`TY1% zkojSUnQnu`#7Sb5Va;G#lo6+}ui&}GS5s|HdhAqkYlhDz3Gu2EkMR}nIDi!MOY!x` zCo2j`)b)onlH5+>B+E4?CIVA9Us%QRSL^Aod^#Vh*^qkC@B6I4_c7tZFepH#`iB-S z@Fa6kl+|+7v&i99A{q=IDCfqMiYPz7#KsQNlI`}Wc?GBFS%Vh8+8Jfue`~Zsmn))z ztc+jK(As=L_^16(#YVG8K2O_T|;4yIP>@zy5A!QdNO%>(yBWcScbT-tAXVyZ~XJCSqLfEy`V4D_Mf&pO3ppOy-45zYCvV zfO~>N-8S%eNOIq@&(|9y$I~IYl6(g2Qe}E2glDOeUMsNIM>=lc_6}+z)B2*{ThbAc zrZIXWEj#d;j+UP4piPjv{?BJK>%xsylZG^=6pzLdfTwVB4LL5#f0EUSU+M_Xj;u_t zG;+?@+*net9glbQ&Dt5^-un}JH`ZA|fMhz{o9G2XA$hs5w}4l^sl{r0O0CP^)YepS zFek>5^t1b6J#t{T(_o157LmJib~ck;fl0W=@8rX=>To%SeU^-@Dv@@%H$)@L$*k>4 z5YnB%#mtthcTg#ykeQ*X`_m7O8}JLZvP-JJdl}w6$SI9{UDr{f{r75~{{ITpcb&1{ z8k}|6_HpRWQ@T?(c2uPg(p3oWS-P5VCJJ@y-p_qFzA_c>)AEg(bsvEKw0UK~`<4?i8%&@E;HsuN3ZYP`%J%%5x^ zu&Wix!`V3N^mmTb&n^)KCmz4NhwJ%vYG3i(7#MR|8|tfj5vSi_;wbZnwp$b6px|HJMTpM|Rxv`u$ z(zfZEZ;8iRHz$dM*p;`g=@gnP;yPi!Sh2j#;dva*6C91gGrh9U$Op=SI?XE-Yb!zY z<92c>y)Fx?4mI{{HpA;{=vnSnqgH!sb&dPALD#%uODa0m`SKo&%I0k=tw^t~vLg+v zxClB4^&a)SJ}(9>CnogPZXD23e13WYh#Jwso?P@gXZKarIqKV5-?R6Al}4MJKD89 zqH47_@RtmA{U5>p**wzsY3#>?de^!307g8XQ#En82k3xbeuaTwKoq67k2Lbud3W%b zLzdS-Kd!EzUL8Q6&9&fpJlUC&6=ZvX52zTcz^1WFCRozKVNY!g&sWRXIov4vX{s6- z+d;#9`S$QPNq;wQY@=4UT}MqMT+BDIm1CyWWoh;?0!tq0Cb--*f5?vH?knvnnMQin z)~}1sVJeQcm>1U}1*J~O+aL2xz`1L~)$}&*gV6|^l{h0xjoA`=K$gjFnunKbKWDxQ zl38B}g!BP?Z_Uhz0El`eAnP($^hA!Ykxf8?@-KXad^ofa8o!`nAZ+bZ+AyNjyXleb z_Hr6v4t`S0LT-A~+?2>uYKv0r&nN9XMClDzR&uZ6-o5NDBsm3kYLn?-_p`(g=>`Hq zH5yGDN(LGhrY?JprcY+Ao-2UwvsfFirIyaTk3r>H&Lx#9E_5Da(cIZFZuUlMMcga< zyKCcRWGGrZl-aI#T03n6O{DhbMit6@QM$TxUm7`?O6mNpx!BaJ2K~ppzn24mIc+iu z6Afl4KBZpOMFBOTozBS~8v9XsprL*z2k(u3&TCDU%TJPjlUSV(UU^j>d@f1t8dO7r z1@3A~(pU%A{rG#K(;>sFZMk~Q#W#Pcjtf@Y`D%=ec^qj!O{8WqaGgz{(!!#0^DX-* zvO0A%;-RFEe*;ME<}hSHq)_42cy|%BvM=%A21dV)?BV#AeUWb*(=3&KLznk`aJZ^w z@a3!_lV7Y(o=V7kWX=wuLfj+VE0S&Uxao(=&n;vT_RSC2>7J`>LeEj=28Y1#$a@XhAjm;b^}6@3%%QRoGb~U01Rx#n*1J zIZMU$T;a;T1^&6Sk(GCUHxN*G&olqlEOXifr)vbPo zsj=Lf`RIJjt3!Md{i2(&&x!rU@A8h-%1(97bmc3hd(MwV`0g$)m?;u{upH!5ofBpyiNAnRxDSK*j2uHV>D{I^N^!pK`kAq z@EtLd>&~$^SidYY6NdoQt)MXGUY<4&rkWrA+|$&|XEXQw;~F>p06DEr7*?#1VLNQu z^Av9RyX#rwE=Rz(tnRP-8wJA`z8p#l>Q1CuYUM2h_S(_ten6k`W{0YD?M5$~DG|h7 zV`&MAnm6ehBE$_fzT4O7Ac;;(%{3(pft#9e>}Ho!tBQkB*&>8!4gMs$RYhW~2+vzG ziof2C;LXpJ`z$=;#<8Dt4b{sDF zW1aCzRLzaU@}bH5PZM&UjJR>466?4Gp5X?36$Bm?Ys(P-tsJ6%gjG1yO$aFWC@?Ff zWzRa9ZSm{7g)`sXw3qT`sU~%6wS)v^wt8Am3g#6&Kci2Ti6g}aF;Z0Zr$qt)HVqZ~ z7zaOF75OH7vOLS_fTx=@j9cJ_n9SRP{A(cgEG_z4+vPmgs5P!ClTKU0MCTmm{k{`B zzUZv-Uo`b)&$l>a+qJW2OZ}{aw@UM_uq)@G-TGd+=9k_AlaWqcLZm2Jvk{(K#bOU1 zQ*r25o^#t({f(w0tfjH9^Qpz~Z6<^lb+yA~2)sR#P)oYqV>nBamc$#bK^nt0fKoj(-*) zs*wFz&UeA``+`dO-PGWLs#niInpXdHbZ0{5H%Ncs{B7nwiDjdZ&w;&^o;*g0eUerw^FO0isk)u4sbcx#hyNHm^wR+?^3Hg{rDno`tDcNtmpV~>#o_x z{1n-bNwsm=Py3d~EvH<&)K)RJK{nZG6_9%H+*rljF=6i_7(T*DZ1|F_d9Jn#ua97pA*F+Z%Q`FPsP{BZYy;y!R|xlJt*Pl$Px!EbF3yv z|K<)L0tIM?CW~_!62$WDsp*_SeBT8ezV!3tzJ?o_P$x@iR+;l&OEfET$M5|u{iM5f z5W|0tzJeEekYBlFD#u4%fmzNDQzBNHv6?CKkW*1K`7IRYEb`kr-_>mQ)fOaKxhuKd ze#uJ5{m2yNqX@i;13SaJoA-0SH5-O9!)y88yQ7^o83!xDi4_BAJ#;=qhiD~p#pxNS z?3FUFU3m?(XI*_+{k5Gdon1eX!?kcbvnHL^g1n$S$-d2fFpcv%SWFvDh|A-qw&E&} za?0%Oz(>GEu<;CSS3Pb#$RBNrK1sCYK``m?tB|X0o+!6232p|qodK_I8D6S&Tky;yv5#vgZ>l?fK`%AOtl15Ei&9Zr(L#xy#u zzC5k|Py=G=<^_HY!Xr(5WBxDUVSVH2a##Up88JKxFIw!X1ZnQXme*Q-gechuE7`xT z=a_Q3ePFfPZsnm7mkff+?!Ikx569)+zjl0u4X(L91h*k&i$XOkf17Q|Cbp|z;Z0;} zp_#$rE-jzvGZe1_9YH{E++atbfyv;%#{#X(gXYoyhTz#yH%MY#liBp<*ZUUTPjMmT zE=FyiMdyC(mDRT8`Mi_KHq0JUd1{Nrz)9I)x~LO0*4sD2w@;KScg{#zJnPaN6XBu* zi8Hfv#Y8;fcyASG!gF`T1hShYpD*oR8j0+%lR`&h@C`m|ym5a<5E312gz~Py2v6z; zn|9!tpMcs}pbY$BCx%~qYv^(%y42u1Z{1F}uSZJPy#6cAEa`2cY*a7nL~VY&-F+|c z1kRdMx)j2E(7#ASM_Lu$(qocsL|W+z1>wN^9xgoYIR|oC=RMf zPRVm#K$%JFKEOA0=iTrSIX;H{w+SW)(l!Kh4GgA5#ZiR#dRe!-GqI4x(Ve*Z~ z8|^@K6RT?@roq&--{9kTYDX2_e`Ps=b!u2(QpSTb$~Q>`QByLd)>O3utk5FYE|yN9q<5Y zMJuTffB%M0_5b1Xpw&6ll$_O+Q?vI4B|aBy>WE4o^#Mj<;p{d4;i5VId!4EJb)7d? zqX?a6L96pELn8ju^h9g~TgB<)g}ch>_B(cI%aY&U9;01wxAeO)fG_oWIL@14d*@B1)C zh<|Y22mUT60w+OIiwPyUO`T6-=HmR=drsH==<{|WrVTw9C!CpOuT5LDNl}*Vj;%wl zq>W#j^ezYPrU>tCQpfLfQEm`5Kz#WJ&&)3MyRpWs;0GOnw)>H1{Y3|~G3IhoPBj@f-$mY?t5Q9>d26&%^~hg=+$7Z;o05N1ph``nalGut%z|`` zw^ylKxR%wlEhRuLCh>)aE#PMT2~q%eRw46vX-RL1>!bS>G?e)$Q^++zJMHW#ffuHU zV;zYT9r6lb5DAI2`B|G)a`8W>q6+ll8#1e%?L&vd_^M{6tot!w!v)_hmkRUTISIIh zM&HW%(d~W!9uL}eS-QZJMU*h~7GL_-WW;>yJX;cHCictT(5w0vgh<5`A0UCliOu)bnYWl({TSZse7i zEkDB*;c2a`xy+&GzNL8;fLzTrfw+&}Y5G+*mN(b3qShe0>&j_@U0Jd7?)rp|G#%P$ zp~;x8DZs7H(rGKqWPDhNgT>|#oEi4i4Y3lRW1Ig`d+!n2utVzcH^^$6|0IBPKB#F` zEz>x#H&S`&YxJpjY447^TjyjP`g=UUl=%7L1qcdkoSg&}-^m21@C4$c^jw_QLIn?L zpL9xX*hO3E7NL62Eh_#5ZFY%)Thc%Gz5%{FR&T38%wtpyEjrufo3iI`ISLN`t(SKO zVL}zW07q3v>S7TUsezyGDpg7eb=x80KXdnfB~MC1x%2AY$ zrDw4HWews>CS61u^G7y4G!%S^tCq}`4;X|^V*c&F+R}q6685xj9YH-5sEW$Mkr9=x z&ZjIfG`S9mPuLCALCVhFe*Ixu=YVUT@SeIV-1&8Wn3Ctuxw=-N znqQ+MD&_KreQ+XLZFG%Ln>l;@l>mOg?d_=J%4UOo(K(hjAZ@Y{AK#<3wx<57C;la& zUjDZe{)<5}RXtr6qJ0%cgpS~$at6E{?uESE+a`=!!<7IXxmvkw2Lqk}x@z22^zYMK zRkM?S_v_zQcXq=x7HnlGSe19u1Y7mXK8VCR(~93{Eo<`^HlGaPboQ6r_Z<%k!gA$A z{JTD;gU^XhR(e zFF#j-sh=Fy4|!~$j;Afz;@mq;ET2gGv%VugHe;8h5)J`3XFq|X7^P!@>X?^-!RK&) z%yY=H35-Ks_uqeg;BLQ`>%hWIMLMZIn=E8`B70+R#h#EVq=%F!t)1nFhpfVU-jE0*>yQz zlkuajS$l}EiX8EZl%{~02)_U~Ds}`T|8D^t+Aq47IxZ~~V zAQ%A33r^?T=$ASdAXu)+KSjLkkIsC;Q360Rl_l8Z7}+H@=lRSc)FfE*`zli)mS~eK zQi;1#L#AQY#W$;^@)Mg0{?>QpVAbV(dHn@-wk~ht6+$bRRRP?m&4<^^ON$rJ2(~$M zh5UG9E}ho(j!UkkpSPmoe-P$$@RggZE3K#6M_GEj6$-h`e=F+xagH{6j2j&<=zwAC*?E38R{0Cs5IbeFg-^|+n(f#kh+Mk;TAJ_J zDM~ka6@YoZel}}3n&+nGz!Jx8iQ_p6Z9nBgukTgl*%NE1OXPaiS;gpg2|}eu+1IYm z^KoojpG+TxFzx(NW7jme-uMOZ3b3_iuL15pI%shJ>bw6hG}Z~XWBko#X1{FD;E9dt zUH!nUOW{4C&eD)iHgmA`I(_of(P@KCc`Ab!6PqIUWIfMrBlpSRK$XeqN=p35G>6r=;3Swo~2h#9@UDM;Za@zTT<);{LYI@ zmNS^H?hdC$#Skmi;Dl+_sU@Segm=x#WZ@L_u|v3Z9fHW8$k@7+Yvlw&8m=(=8R&v- z<4Jp`I99a-+f0c??M4~MlaTO~5#DzyEtNS@|B`{AD*4;im_Oy|FdB#?vpsRkX!@vx znGtaUgv9Ui3RSNT0FS%ae&3kR9t|mQzZ zE#Mkl#2snC;o2+yTy1N^BuIZ7LQSn^P(lza@@{Q!YMK8nBMlS5{PbQyt9~x1Xbu21^uk^i_h2*W0#R}m< zhgvyruJZ-#llbqCH3n@w{8)J}B8WwgE(yVBg&N)9{+sZfeqa>tJC>+WBT$vAB&W5` zx4`jZ1Ie0zD)symNmz@yfI`a_c1&tLW2kf*TH9rA`sRgeSsyiuwTffk6=?;JCPf(8 zQug0sRn?yJh|$b5ivGJ(D${%dII7}S6#aYhIrCpk$Cn;$awoAYUd(|tsMh&6w2@-; z3klQkMNKeVPW0-23lt+0uskdhk#0HedDi=74~EX=(F0Ch73kT=+O3V$?Beojm^to6 zGL3IzblD@xvlbMSvDH7ruDa4SXA@4AvW_TAr8p$~#kFquptU2|FFqSkys&Y9lCaXY z?`8eN@5qDImqmctuN;j!{;Gy~PD+99?>Bf}@n-&N4|624Hx|V}R_cfP zZ}TTPnXUu58QaCr*F+aW1%m8M*nMRHMuvneg*jDOEiX#eiF4D&j#-l~mn;1ZBxo6<1m&WB|@vTzeXJ(`t+`e1o~eH<5Zm1$0O@h8#KD%L&GVaaUg*opCTWu0(q zVT_G~)N+Q*SwsfWtX0YCfNHKsv5ZPZzFdbQk40M+_UYf2DV4mGbtBnRzi%2<)bz}g z+2h<>i1ZkgZ~;GG&K~+aJ{k4jD^JQ;i57N!lj|Shpt@6!t7tFLMZ!-mW-8naCbCL5 zf?T=|NR5Ik2Ijf<)ewHWJ)dUfS3!{Y2*fx9piqQ3(I`mvoB=jGL8jwLlimH3ZUa#S zi#~Mq%O|0N-XqwoMOVXF>0F)nR6lN3b6=L!?`F4wAYoipls)0`Wc#gzRLrQbxM#Fq zSVb?xEad^Y_HKao-_ZQK00F!&wLvrOv^Qgtfk{u^I5O3F&aO@J`%e2>yZSqOM|duz z_8&vTbkZc|!`Ryfi@W?69E(RKV$~aJEkv-ZXn_6qYro4`^ajz-F)?44Ku_lf6B`=0gwj%X#fL20m z`I+TL3eTGX9eYggBmeKgM3 zSoqfJA=AO3L&j0z0*eF_3apaqXjLf0l!P*x{la@%Uv zkxvUn7D;Nc!Uds%BmP261&2;Q#LZ*k1NwNlRn@Hfv_A0c(|fTPbX6Ux%>gQsuDP$* zT_*YVR~hO{yM39${x{@zmI-59{zFoTqtlQX=F`fi=m$yAINN~N|alv7Hv(o$d!!TB6evVF0 zgXc9aJ_Ydq>_#2q-&;r}K$4RG1o6bAbZ&pM)~A=XCxS9~zCg-9t|)0697sX}y8}Cf zA4q^81qbmQ2gZ&V$x&@*@Z9;Zu3>YFS{NY;unbh52Jl6}4q!UCbhaE?cQ@ey%M&Lq zj{4!fhtjbVk7DIB$);a+pF-or>Mc6*BJCpy)#&EeLVj-kBK2X#d>UldEeu#Ir)Ekw z_2d)7*EP20Icw_L^qwM&VN(cPvFG6HklVJpUo6Dogl!5*GJgM3vk}HFrAn@rC(38; z{*@8+w5WO(?cZB@M~mkGdyZ@M#DGetM#GHUuF^s2x&mCjF4W?Zmm!=BiC{nnqz|7E zs+0OSZcUw7?F$(lXuj&AFM}h|gvVGuh7J@9gtH}!L(b^6vo-Cs*+4OxW0>iWFE70U z^X)J4d{)nu$T#N968ruA?)*5#$3PL4*?f%dnTN2=>;(~>$ zJc43oZwaITPimCng6BrZ$*MI8Xr zcmO%z--D0GDGZ1!4pj*a{Cc0)eEAe}+HA1wyKNxa$ck_PG)M@Q_Phs_m>=fX!9^xC30hz+_vzGrzs-Q{qy zSXbQO?^{kaiHJ&`rRFLwE>g*^+G4=B6gYh^lon@Kt)tNr5=2FXiY0)U0q1mXR>fo8 zg{34)a$ji{AQpIN>TdjOD9px0&B89g>u=V(%lhYd2TwKzIrVk_H{;`IZHg)C(`~Wi zW9RR&Psz>*PRev{bL4)1VUy3Iy^)_q*=lQ>C-R>4tSW?I6KtThT*1mv{!07kMT>&| z6Dr6gG*GsIPrX?OkB1!AQ02;fe~VAm^ z=C!iA9EKNW0QD6I0jS4arW$oHF<^V|Q$|#78$5i@d5F#iO;d2scy5D`bAyX^fd2d?DXhxtE~3m zIrtI@5|P)jyCm#W6?rS=q}HX9uX=W9(w4%l#GyhapW(y!UHAIh{*17uQg!}SF3;owOFj3=yu<-8 zUf{Kx{r0L!rZjmX4J0#c=S9!M`OL#4hOvBB9uLCkaslwaUIVsG8*Vy?XS37ExI$t7 zPF#LxgpUE?L;Q)oUX?0@Z)wo&e zf8JR~C$wuPa}$Qu{&U2zKv%HXC8V@HA~FcWm9>erG~lg`&}#2kz=`|hW?+S7Q(br; z)CAHrvxa-ME?!fELehB*kF{r}7($%bb)4~CfP%*s$$9ESwJ=y5g2StV*-!R3`;;ri z4DW}qidJ|vwF^$QNH;busFSU4R{z`(2Yl(1BoWj{CK^hlT{~KT(`|b*k9W5^R>(E) zKxgnk`J4j1m#?JkOmo7S4ZI-C`ddA!>F#W1jmb72mzo2QP5&J9L*itM|HMFT->N7J z_oM=$w%O=d;s-Y5A_thyv2rECN8EFyM2!z{Lg}|lBthYT$dfYsDrJE=8qm%mKxn&$ zKw8k%mqW;2j1M=A6Fz6|14&IS_ERPsL9IU%*U-pQX#*$f6SoBR4~lSo$E$wBLoMdG zoJs!95S(?K=`vw34!Jdcf8ztwG$;(|mg=tQZ4ZM(uE0;3#Ow!wu}X{@>idiF%EFc4 zl82>qo7N*ROR3EN1sv87pPOmcz~c~uHN9NMUuovwcHqC5L7wl#l6YfN%lAZ5%Al14 zFa8=b|G@thxSjNX{r1-eR$p`QP2g>&{q=DaBcb-)uY-ZdskpqpEie~Yo!1aqm8z5E zJLyC{S|yxgNH=qQno*acWUFaYYod#fdu6M&4u&JTL;aC#0yBbXB|nmmK52YOHq7wA zeP_|BMPF9fv&xM`cDM}+P!Um%t9kE@h?fz^K5s zP#|7*ANjwZBVj}Z#T7;_Ky!ozFtdfI_HDPTqawC z0jYx5Jn48q<}SUj`?&L>qC;%BlX=ZZW9p3{Q2ea(cWyUK65>S9_7p#VCq)2rwk=^R z_H5MdnPCv;wf1e!2b_8D7OGtes^V8xt`#nC{5*@(44po?%EYZqXnUrl1bR9!NEX{3Pt{~fIX-=)UbBo91we>ezoXE& zL3He0ww>iYoD?{Gei8VJ|FZtD;RD$It+S;2Nx3*b(I0KXd0Tp9cMI*R`qOc=fL^wz zzwGwmO+EQzNJ=-Ev)m3a82UjxboDP7pH5MOo`7~QpPaUN$V9~C_WSJP9wZ({(*)ij z>Y(~~8xeVaaQUn&60#zol1BL7t#Xe8ncqDwUlSDy`fI#9@Q$#i^N>7G&g8AV8+%qT z^e;3s<4ebsy6R2&S9VKPNf!i)Pj@Jtv}ImOKopC^EK6sC&rp^SsKVsP<5{=cZ6Ov` z26#5anom9&4}fNdv;N3`Hdp!ZvXX~ANy~5o@DlO#xB5E2<7=y9qj)m?qNev|Vsd5C zC@PF!75?GW$CLHmGT!91a^|+bNdgE44>I|Tuxc?_B^*vz6JPxmv+OC7?vc31|t&b8Y3T zk1!MU$i_Wkl%U>N!V#gIJS6-rZp;f(X{rcE6}$fr4aZ3frn&wlF%RSvC4I_5aEKFg zH3EJcO~WDStA-)Lkf;VI1>6w@ZM~!4ujhJ#(jgkeO^siw5#*Flz?N4w?No9fDh?as zgztcIApb$$s&aU+bZ7&av+T;}L`-H|pfo%Y!Fb~8uS)4;!3-+QW!lM?aPEPGkUeG2 z`X4cYvFitwzrldJbQM?-&@`ph>iJL(4ykk)v(fC=c)VN!9@*G8atTY)Hqw&&h^BZd zi@n-d6Wd02UIyc|A_0Lap*>Gezdor=KxZ&Md2viTK6GS@hd+^POQS9DisF+kMq{tH z_H;On#N4{@Rj)QNDAdB?YtwU-_dMX_nYix$i*-HUQR9(&z6WBk1PhWwSgk~J08e4k zdB@+!vI35)>OTMV6@9zaIK^GYarI{wuzXMgA|T?|rxUzEIgOv0*S#Whd_wB$;W7!% zw|a#oiDqR!+Hcab!Aba(BxsV)99sW`E9OS-Q;Se)iz_AK(x?aDzo-PAAQCQmo?H`^ zOe_!76lk5`bv&pt-A={!Xat{ezEJ}Mx=(C1xY77OjMM5GT3#SSzF#nL-kjhj!yB!L zTa9Us&rLb&=mv#!Y1z{id95e2V{e@Y?i(RgLV1j#;J=M|p{!xTOCkSr{5vdA6gr{n zGJf^^ns)&CW~b2XK$f*Ilfog)aCe9l__p8Omr1*J0JHENH;7Fl)~+P?+TU5{7mh!Z z#feV2KT@KxuOhig+lPuIYO$2}NY{8c=AG#l&Hr7cGjnkV6<+ zlIS>n&}vbuAhr)wv1FNM%3$(*bsno6un5?{(|D@mf6TtY_C$a~cqgQ|bW~qhRKXQ| zga=tUIAA+lB3XILl5ghD>mvn4l8)hE0ucWBXOq!uo{`TR%+Yh$h^k$$ETJYytos z?hv4BRnzTlz_S~is8=_nJ`MZTurE@0BR3$^ze|DOhLX^#)a4pQyXMtlX=P)qhcP5@ z-ZyV4@B2?f#-4XoaU(Gc@!w{tWIM+6MiG>swyGOlxUfHuo3<&q=pUdEQX1j=eq~d^ zb&laBTTV2t8o>#-*=@rspV1e@9jHnXEBn>eSYwUCc|Z3(zss!i4%!+Z%qkF3Z{Oy{ zv(_QAnsoy6!XHLB{bwk$2TahujBgJmEm84MWrWXmKZVIjx{TkR!$4EEIjr*QSG6z< zM#OqVy*}1VooWFhFRcZpFH-+`7wU(1eQ7b)Mvc(ekX`7Gs}hVvyx^=d=j38yB+)9F z)-hFe_iijn2|^<*(^ea)fZDIowf7o#JJwh@ox=Qp)hGrD$wFZ%7mU zZJcZh=K#w~_XNXXt@V$=yA}!|Nkj7~6=6~aHq`w%Qh|{+GJr;5z_85nCzt};nA899 zy(Sit{cKrqc|0{+@m$Wuvby3V#!dYeUVfm$0pi32#@K9SARKCu@4IJx{@eUwHY ztMZaChBfh+?Sr`Bx90+HtqSuS(oObLWDsIta2O)U?kH0cW2U+iBPTdU%bd`&Oed*e ze}(L2<*aBQ++;`jrD67F8@TVg@M=0T8r4I*)6E|OXvZ0pVoK%#d(62cBL<=7?mI=t*mnvWrsxHX5QSX55)vF2M(|9-L^7 zhVsbD&7|66g%W<1#B(21r9A4TEW$v(DEqau=|$LVZL)49pHSQ2vX_?0YXSI-#YY=)4sYn~wC9XRiJ{}MVh>BXH_X?!8TA45&YSAJg zn|#wk(ggGyvFcP=osXue*1ggFX7fVVUGtyQ6{CpaY)d}q9j3Ef=4grIOO=QN*2Wxr zSpPdPB6gWY9N)1y_yfBr?s!GSR2pMzlyvfx%xZ{IXMj9gQr{dm8?)MqTkz+8Td5_l z0=XFfg+!}rTQ@Gxk)`i+M_IK(m~0K{>CM~9;nUY1dxU?lVTerHR7EXtUBmEdtMV_wZ zzMiDwF^0Um3zp5ML~}QOx6ZTh`mfE3!>j$2)*w=8e@@3lTBeayfLm4t_(8&+=_(Tt z!B2s2#$B>nWr<8FG*?@hwJxD%WFyc!1sti0tuCN&Q6Tsz@pn89z(kKw!t0r{m?;pV z>t~PkBAzvUdO(NMu0`;YL`UA?Ea7M=<-caG7X70hMxQN;C1FGiqK(!8xvAHRjehg) z9I4nRButzKhfbXc_#x{nLtpCr;glM3vrE;Q(cnE!RRUe*#P+C%pR^R* z65l4muH!zj?3eqAJU9(6x|)F#hUU6AuRp%t-3#Dvcs449)ArOEJkJcahR*6Xga4#L zXcQKju43gxvf(U4*PdnBYgjZ*`K+KseFP8${3u&uY3rlJI8}locTv+i025F#mi=;0 zCU;1w(Zr!U-Duyb!UkPMf@^Q9Sb6svVMTWLUNj9R8+1Iz_v&(sKwOjk=(#s4&_~)s zOARs}qY~84I}duO$`3dQXmD4stvSF035E*1?7dojklvn=s!UO_r~tG@43eK)vYPUv zOJ6ZO#j&+&zvay;fH3~-6t3)RYP*x8opIblu_kzA=i)D(BTLokTV6J+{x@JtO4C`D z-|_h)N{zTt;?{Oc6o$IHtztNGNXv-O2JF><5?YbAh}zNI$gP@mRx?NcJZ0;Yw<=Zc zya8(oUz2RIA3)iNSiZL^&4`jrk>zlITCVH`z;_hTg)0<+F|39_ zT0^(tCHe6RoBQevR_+TYNcRa(d|Vd*(vitzF3m(ssW!725OyQejiMH( ziGw$9q+%J1>xxl2KHW=ROD(`lrfVTC;`Gjlfd*IkBe!b$Tkc-Ffh~Jahpx_?nLYm# zG`T5)*v~JyFGn;|!Mg~XTiY%SFU)(dF2sv$);~u7!*KY-L1*(ptW6gPgPrPrSmf$F zZk+cO*o_0@{Q1YZENDm*esk89deL~?+?5}jr|mhVGD=kr0h~?Pv`x1^y_jlGbW=mk zru*x9C$a0rG6z4<>lk>sVo)gt5{J5aAr=8&d)_SZIQRU9C9QamP*yaML+zR}q$FM^ zZ0DI*X6hYzB!sJPhKK||4Cm}Q4n7h}p~H9kLx;l*Q8F$wg68gvoN&O~Wo}ir|MXym z!EJLvn+ZFw;`Be{&yeH8_#6jPdO~@`5P8gz*bbL@#IM&1WJR(_Pjh@T&VhOU+tYRB zePlBA6WaS{X-VN5mrcY_NY*%ao}01bq7KcxTtULwSp8 zRRvTP9Ti0*cfUujn#w%oPQXv&f@SsnYn{$|d{Y04I5;$QU88iw95=#lx92kle_4xC z&j>s3NzgId_gIUGtmFi56|1gSUPhcv>nk*?iu+CHSb#Tv#&4yhOOS;WkG_hdBmV2+ zh2iu5Dby`W2dh+_rTb+@ZcXl+BIh$Df0b_;M|VNV$j4|P9QOld*lYjxOMx8XA-ucY zue;r=zTQ7g{~YFTXba^QqjDdY8;+Epvh;{uE+-5YaztJQk?G%|JV8&UnZY%%XcgsT z_pP}FP$ITj-y0{14xyA}%$I6RT^^)jm6t-TmpgbEee@s4Q>!s}mFCLlkKOF@fD?D0 zqoWi}tI4K}K;ci~AinnF1OhFg3sB3w8xDmoI$N^BqOp%G4AOnBEJ7%nx=z&?W>bFr z>ydq8Kt1vup3$!W0yN2boDJ{+{f&okqW4+i*FWscrP3mJF+`xRk3Pm*tEl|6?aHn+ zkWueGFJ;Q?y>3-=Bo$#~v*Wr7S{$seD-MydOVL|f=s~fVoR#O@UP$9xy4^6Qh6B~6 zoSdL^;OMv*y-yki=Hy=qHb5`9X6K8Ps?$nyRol%Ogj{ZEXI%DfR0T|RwTSTS&cS7y zy_%)cv~1dV8-F;X8LnEulWPEdf|z%zh{DfOz7Se+4p_7an@z^> zR_ibE&L6|W@DlldS^%(BNzMg%dh`UO4uozDkQM7L_uZzS!{c~r~%!Kyok@DP!AkS z0k;`4C-g6H=|hpm-HJW#KZwBuS@@Zg>d`NU zBZ4x*o?oQic2Y*dTW|oHS>`)bc5hJrsHIL@kJkv3ue#e?apKo;+ZotL0$42tv>;FP z`Tk*7SWPCM4zwODK`q2Y8C5~FoHbyMNKo09UZ&rzc%|Z$=_6w`_|S~~vj0@;dy4II z^}<@;0^$R-4ZNn|d+0pPr@0s5-;%gC{-x03SIn={Sm7bCZcrzuQCLtTN4O<#--TTA zn;y<;y>hyI=)(Uw6fo!mblK*Y!~j8VvTqxb%g6e7*W$$dch7lBztM2|${116w^F{h z1^<$FcKLBEztBiw+l$kO$qwj?4ND?3Bm7=IsO3w`(esy5AH3leag^+WtH??~wa^J0 zI9~;VyotJAXm0JJ=RJ%=IVj$zz%gG)lJnbVB73>pnNn&%Kd{}eX zR?)5vQLwkkLCKcRTF+BxTwZs`EfiO@Si~C~)>@w~EbCLi7iUI}A~dNE;M6O3 z)RnC0oZw%UmjX=omU7{G-a_#B=y+_}kfcBVD?epnL7__)R+5PnwguKS8&P0=r|yQK zE2+4Mu*}uwoYO8Ne4CuZT*hTuzldPNy{+CU2B2_5j5NvZ-*#G>-3e=S#eO+n<7sld zEN}`EPHu8WVqh$5@8yWc6=+_v@>Bo|8L4zODDL{ybVNj+Y~pf%H#7`2b{FF)fM<9f z>m?T`0lCpCUhV&MxO{lOS#OX*tgL_V4t3U;{xO3a{unt8|D{xi3L*gi8jf>S>UYLO z`y=4SD^7A$sR!GZyQWA55;mIW!IDcNE+_;$&xxIPWj+x#DUi_-IraO75ocXPw*AIN z+fy8{U8D2Pda(zJqEGIAx@pczB88TLNH_C%m+HCWhXET$okaQDm;65HE}i|eYnH|N zKHc6JJDsz2%v(57z=J>fc3^2o!&_(TXC* zK^=%>L#vw&%B(Rn`I3*w_*;p#)KDp7BqNG_O#|4X4o|@mL?fXFFNfrZr=be#jWM4k z)cK2rmIBp+7#((^&x&p4_WXr7yWPOS;8nKs490ErZ5%(=*~U)H1W@!hnUt$GUM<`P zgHE1SL%1N>j05ylld(qZ9wTryT>9BxB?vP@xGEuAEa;w+xq4aw;-eUgO|@2lf!3p> zXXLo5&F}VhcGFqywHLhs$CE#Iy<-cldA?%)YcmZ#daJHpx{26N5D(2n4ljq{$(yJq zXkexKD8?qZN9CO;5Dkkl({g{>hmGasmi331Y2F~hB;bmvGDwW<)5WP}nn1IX_SgCD zv+544&_y6$o(K11{>G?fLRT`$P@_kB9a9F;pdwF`cufhupTl8bROblU7cl6o%4&`r z*L`^kOdZ_xL_KPAOy4Kc@jA!D^5xdJ=NJ`#N7(t6I1dI<9S|TI3-$5VKQ}AkG10+N zrh?h`K)(BmS&~=hg_u!guQK()u|YXemQv@zY0+gInzXky7TM~^%9W5eHV4n!?O$t= zKf~mXw;fv@pUvZUxB9(aAMTw#5&R0sZ0LKqV{MQyTs~m@z5iZgh{|*`s{Z zuGWhX0uk%)oyQ~h5R7iL=`m5FrqqhNy^4-+0JdrxH49%fs3YXW>Tu?*zvVdSKMm)x z=Uz60A@~glvkm`4E*u#_)y-c+N9-C2TyVTe`3D$lG}O~wH2bw3c;n3|#5hN@PD3Pm zw;P0dVgj!m)si18y8OIq@WvpOPiSe16mK1l!|*@S;XG>!F}BZ74sK_iSAS*R%a$T+ zQ%NXC6&-^ zZM7TfS4ApT&5PKU>tR-<^e+>fq z*?%muYVOM64iIydUx`~BV2Y2h{Y)6^@E-PRm9K6Qpqe6&ieQJ7)49p&3W=9%YC3-b zgd04EueH~3^s)~ThQ}m!0aC3F7Jl5MGB(S({yr}?Ns)nTrjL@IlPNB4vu_ec|C$b< zB;mrw8clX)g2<{*we7t z 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 BmehZXhZl3*{L?V&w%>Llt46Zhi>(B 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:=9rK3dp9sa@&$F%m~6`h2+BQ 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

Q_;W>!+=nvy1u!+b4Sn40}nMc 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 IrA$Kp2Nc)S761SM literal 0 HcmV?d00001 diff --git a/ios/Expensso/Images.xcassets/AppIcon.appiconset/Icon-20@2x.png b/ios/Expensso/Images.xcassets/AppIcon.appiconset/Icon-20@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..028619052f832fb8db77ad9679d4f90d15661797 GIT binary patch literal 2565 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 PfBr{W2AXfx?W6t%BuBDR literal 0 HcmV?d00001 diff --git a/ios/Expensso/Images.xcassets/AppIcon.appiconset/Icon-20@3x.png b/ios/Expensso/Images.xcassets/AppIcon.appiconset/Icon-20@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..6875b7aab051bafc9fccf088859cb15ec50d1ad3 GIT binary patch literal 4445 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 X``syGXRxP#zxCQ02I_Tc_EG->sXhxR literal 0 HcmV?d00001 diff --git a/ios/Expensso/Images.xcassets/AppIcon.appiconset/Icon-29@3x.png b/ios/Expensso/Images.xcassets/AppIcon.appiconset/Icon-29@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..150ac5a42997cb1764c86738d6053628bbe0e3b3 GIT binary patch literal 7592 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 literal 0 HcmV?d00001 diff --git a/ios/Expensso/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png b/ios/Expensso/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..c0c77f59c2d7f71179c9c0fa88174b7ea420f383 GIT binary patch literal 11810 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�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 Hu0mjfpVW^x literal 0 HcmV?d00001 diff --git a/ios/Expensso/Images.xcassets/Contents.json b/ios/Expensso/Images.xcassets/Contents.json new file mode 100644 index 0000000..2d92bd5 --- /dev/null +++ b/ios/Expensso/Images.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/ios/Expensso/Info.plist b/ios/Expensso/Info.plist new file mode 100644 index 0000000..d0a2aa3 --- /dev/null +++ b/ios/Expensso/Info.plist @@ -0,0 +1,59 @@ + + + + + CADisableMinimumFrameDurationOnPhone + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + Expensso + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + $(MARKETING_VERSION) + CFBundleSignature + ???? + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + LSRequiresIPhoneOS + + NSAppTransportSecurity + + + NSAllowsArbitraryLoads + + NSAllowsLocalNetworking + + + NSLocationWhenInUseUsageDescription + + UILaunchStoryboardName + LaunchScreen + UIRequiredDeviceCapabilities + + arm64 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + + UIViewControllerBasedStatusBarAppearance + + + diff --git a/ios/Expensso/LaunchScreen.storyboard b/ios/Expensso/LaunchScreen.storyboard new file mode 100644 index 0000000..6a3efda --- /dev/null +++ b/ios/Expensso/LaunchScreen.storyboard @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Expensso/PrivacyInfo.xcprivacy b/ios/Expensso/PrivacyInfo.xcprivacy new file mode 100644 index 0000000..41b8317 --- /dev/null +++ b/ios/Expensso/PrivacyInfo.xcprivacy @@ -0,0 +1,37 @@ + + + + + NSPrivacyAccessedAPITypes + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryFileTimestamp + NSPrivacyAccessedAPITypeReasons + + C617.1 + + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryUserDefaults + NSPrivacyAccessedAPITypeReasons + + CA92.1 + + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategorySystemBootTime + NSPrivacyAccessedAPITypeReasons + + 35F9.1 + + + + NSPrivacyCollectedDataTypes + + NSPrivacyTracking + + + diff --git a/ios/Podfile b/ios/Podfile new file mode 100644 index 0000000..7a75934 --- /dev/null +++ b/ios/Podfile @@ -0,0 +1,34 @@ +# Resolve react_native_pods.rb with node to allow for hoisting +require Pod::Executable.execute_command('node', ['-p', + 'require.resolve( + "react-native/scripts/react_native_pods.rb", + {paths: [process.argv[1]]}, + )', __dir__]).strip + +platform :ios, min_ios_version_supported +prepare_react_native_project! + +linkage = ENV['USE_FRAMEWORKS'] +if linkage != nil + Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green + use_frameworks! :linkage => linkage.to_sym +end + +target 'Expensso' do + config = use_native_modules! + + use_react_native!( + :path => config[:reactNativePath], + # An absolute path to your application root. + :app_path => "#{Pod::Config.instance.installation_root}/.." + ) + + post_install do |installer| + react_native_post_install( + installer, + config[:reactNativePath], + :mac_catalyst_enabled => false, + # :ccache_enabled => true + ) + end +end diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 0000000..8eb675e --- /dev/null +++ b/jest.config.js @@ -0,0 +1,3 @@ +module.exports = { + preset: 'react-native', +}; diff --git a/metro.config.js b/metro.config.js new file mode 100644 index 0000000..2a0a21c --- /dev/null +++ b/metro.config.js @@ -0,0 +1,11 @@ +const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config'); + +/** + * Metro configuration + * https://reactnative.dev/docs/metro + * + * @type {import('@react-native/metro-config').MetroConfig} + */ +const config = {}; + +module.exports = mergeConfig(getDefaultConfig(__dirname), config); diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..645f67e --- /dev/null +++ b/package-lock.json @@ -0,0 +1,13673 @@ +{ + "name": "Expensso", + "version": "0.0.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "Expensso", + "version": "0.0.1", + "dependencies": { + "@gorhom/bottom-sheet": "^5.2.8", + "@react-native/new-app-screen": "0.84.0", + "@react-navigation/bottom-tabs": "^7.14.0", + "@react-navigation/native": "^7.1.28", + "@react-navigation/stack": "^7.7.2", + "@tanstack/react-query": "^5.90.21", + "dayjs": "^1.11.19", + "i18next": "^25.8.10", + "nativewind": "^4.2.1", + "react": "19.2.3", + "react-i18next": "^16.5.4", + "react-native": "0.84.0", + "react-native-gesture-handler": "^2.30.0", + "react-native-gifted-charts": "^1.4.74", + "react-native-haptic-feedback": "^2.3.3", + "react-native-mmkv": "^4.1.2", + "react-native-nitro-modules": "^0.33.9", + "react-native-paper": "^5.15.0", + "react-native-reanimated": "^4.2.2", + "react-native-safe-area-context": "^5.6.2", + "react-native-screens": "^4.23.0", + "react-native-sqlite-storage": "^6.0.1", + "react-native-svg": "^15.15.3", + "react-native-vector-icons": "^10.3.0", + "react-native-worklets": "^0.7.4", + "uuid": "^13.0.0", + "zustand": "^5.0.11" + }, + "devDependencies": { + "@babel/core": "^7.25.2", + "@babel/preset-env": "^7.25.3", + "@babel/runtime": "^7.25.0", + "@react-native-community/cli": "20.1.0", + "@react-native-community/cli-platform-android": "20.1.0", + "@react-native-community/cli-platform-ios": "20.1.0", + "@react-native/babel-preset": "0.84.0", + "@react-native/eslint-config": "0.84.0", + "@react-native/metro-config": "0.84.0", + "@react-native/typescript-config": "0.84.0", + "@types/jest": "^29.5.13", + "@types/react": "^19.2.0", + "@types/react-native-sqlite-storage": "^6.0.5", + "@types/react-native-vector-icons": "^6.4.18", + "@types/react-test-renderer": "^19.1.0", + "@types/uuid": "^10.0.0", + "eslint": "^8.19.0", + "jest": "^29.6.3", + "prettier": "2.8.8", + "react-test-renderer": "19.2.3", + "tailwindcss": "^3.4.19", + "typescript": "^5.8.3" + }, + "engines": { + "node": ">= 22.11.0" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/eslint-parser": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.28.6.tgz", + "integrity": "sha512-QGmsKi2PBO/MHSQk+AAgA9R6OHQr+VqnniFE0eMWZcVcfBZoA2dKn2hUsl3Csg/Plt9opRUWdY7//VXsrIlEiA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0", + "eslint": "^7.5.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz", + "integrity": "sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.28.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz", + "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "regexpu-core": "^6.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.6.tgz", + "integrity": "sha512-mOAsxeeKkUKayvZR3HeTYD/fICpCPLJrU5ZjelT/PA6WHtNDBOE436YiaEUvHN454bRM3CebhDsIpieCc4texA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "debug": "^4.4.3", + "lodash.debounce": "^4.0.8", + "resolve": "^1.22.11" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", + "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", + "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz", + "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==", + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.6.tgz", + "integrity": "sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", + "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", + "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz", + "integrity": "sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", + "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.27.1", + "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.27.1.tgz", + "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", + "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.6.tgz", + "integrity": "sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-export-default-from": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.27.1.tgz", + "integrity": "sha512-hjlsMBl1aJc5lp8MoCDEZCiYzlgdRAShOjAfRw6X+GlpLpUPU7c3XNLsKFZbQk/1cRzBlJ7CXg3xJAJMrFa1Uw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "devOptional": true, + "license": "MIT", + "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.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.28.6.tgz", + "integrity": "sha512-Svlx1fjJFnNz0LZeUaybRukSxZI3KkpApUmIRzEdXC5k8ErTOz0OD0kNrICi5Vc3GlpP5ZCeRyRO+mfWTSz+iQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-flow": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.28.6.tgz", + "integrity": "sha512-D+OrJumc9McXNEBI/JmFnc/0uCM2/Y3PEBG3gfV3QIYkKv5pvnpzFrl1kYCrcHJP8nOeFB/SHi1IHz29pNGuew==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz", + "integrity": "sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", + "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", + "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", + "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.0.tgz", + "integrity": "sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.28.6.tgz", + "integrity": "sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-remap-async-to-generator": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", + "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz", + "integrity": "sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz", + "integrity": "sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz", + "integrity": "sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz", + "integrity": "sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-globals": "^7.28.0", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz", + "integrity": "sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/template": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz", + "integrity": "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.28.6.tgz", + "integrity": "sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", + "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.0.tgz", + "integrity": "sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", + "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-explicit-resource-management": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.6.tgz", + "integrity": "sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.6.tgz", + "integrity": "sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", + "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-flow-strip-types": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.27.1.tgz", + "integrity": "sha512-G5eDKsu50udECw7DL2AcsysXiQyB7Nfg521t2OAJ4tbfTJ27doHLeF/vlI1NZGlLdbb/v+ibvtL1YBQqYOwJGg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-syntax-flow": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", + "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", + "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.28.6.tgz", + "integrity": "sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", + "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz", + "integrity": "sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", + "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", + "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz", + "integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.0.tgz", + "integrity": "sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", + "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.0.tgz", + "integrity": "sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", + "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz", + "integrity": "sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz", + "integrity": "sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz", + "integrity": "sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", + "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.28.6.tgz", + "integrity": "sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz", + "integrity": "sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", + "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz", + "integrity": "sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.28.6.tgz", + "integrity": "sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", + "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.28.0.tgz", + "integrity": "sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.28.6.tgz", + "integrity": "sha512-61bxqhiRfAACulXSLd/GxqmAedUSrRZIu/cbaT18T1CetkTmtDN15it7i80ru4DVqRK1WMxQhXs+Lf9kajm5Ow==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-syntax-jsx": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.0.tgz", + "integrity": "sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.28.6.tgz", + "integrity": "sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", + "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.29.0.tgz", + "integrity": "sha512-jlaRT5dJtMaMCV6fAuLbsQMSwz/QkvaHOHOSXRitGGwSpR1blCY4KUKoyP2tYO8vJcqYe8cEj96cqSztv3uF9w==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", + "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.5", + "core-js-compat": "^3.43.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", + "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz", + "integrity": "sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", + "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", + "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", + "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.6.tgz", + "integrity": "sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", + "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.28.6.tgz", + "integrity": "sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", + "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.28.6.tgz", + "integrity": "sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.0.tgz", + "integrity": "sha512-fNEdfc0yi16lt6IZo2Qxk3knHVdfMYX33czNb4v8yWhemoBhibCpQK/uYHtSKIiO+p/zd3+8fYVXhQdOVV608w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.6", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.28.6", + "@babel/plugin-syntax-import-attributes": "^7.28.6", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.29.0", + "@babel/plugin-transform-async-to-generator": "^7.28.6", + "@babel/plugin-transform-block-scoped-functions": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.28.6", + "@babel/plugin-transform-class-properties": "^7.28.6", + "@babel/plugin-transform-class-static-block": "^7.28.6", + "@babel/plugin-transform-classes": "^7.28.6", + "@babel/plugin-transform-computed-properties": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-dotall-regex": "^7.28.6", + "@babel/plugin-transform-duplicate-keys": "^7.27.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.29.0", + "@babel/plugin-transform-dynamic-import": "^7.27.1", + "@babel/plugin-transform-explicit-resource-management": "^7.28.6", + "@babel/plugin-transform-exponentiation-operator": "^7.28.6", + "@babel/plugin-transform-export-namespace-from": "^7.27.1", + "@babel/plugin-transform-for-of": "^7.27.1", + "@babel/plugin-transform-function-name": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.28.6", + "@babel/plugin-transform-literals": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.28.6", + "@babel/plugin-transform-member-expression-literals": "^7.27.1", + "@babel/plugin-transform-modules-amd": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.28.6", + "@babel/plugin-transform-modules-systemjs": "^7.29.0", + "@babel/plugin-transform-modules-umd": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.29.0", + "@babel/plugin-transform-new-target": "^7.27.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.28.6", + "@babel/plugin-transform-numeric-separator": "^7.28.6", + "@babel/plugin-transform-object-rest-spread": "^7.28.6", + "@babel/plugin-transform-object-super": "^7.27.1", + "@babel/plugin-transform-optional-catch-binding": "^7.28.6", + "@babel/plugin-transform-optional-chaining": "^7.28.6", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/plugin-transform-private-methods": "^7.28.6", + "@babel/plugin-transform-private-property-in-object": "^7.28.6", + "@babel/plugin-transform-property-literals": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.29.0", + "@babel/plugin-transform-regexp-modifiers": "^7.28.6", + "@babel/plugin-transform-reserved-words": "^7.27.1", + "@babel/plugin-transform-shorthand-properties": "^7.27.1", + "@babel/plugin-transform-spread": "^7.28.6", + "@babel/plugin-transform-sticky-regex": "^7.27.1", + "@babel/plugin-transform-template-literals": "^7.27.1", + "@babel/plugin-transform-typeof-symbol": "^7.27.1", + "@babel/plugin-transform-unicode-escapes": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.28.6", + "@babel/plugin-transform-unicode-regex": "^7.27.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.28.6", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.15", + "babel-plugin-polyfill-corejs3": "^0.14.0", + "babel-plugin-polyfill-regenerator": "^0.6.6", + "core-js-compat": "^3.48.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.27.1.tgz", + "integrity": "sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-typescript": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz", + "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse--for-generate-function-map": { + "name": "@babel/traverse", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "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, + "license": "MIT" + }, + "node_modules/@callstack/react-theme-provider": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@callstack/react-theme-provider/-/react-theme-provider-3.0.9.tgz", + "integrity": "sha512-tTQ0uDSCL0ypeMa8T/E9wAZRGKWj8kXP7+6RYgPTfOPs9N07C9xM8P02GJ3feETap4Ux5S69D9nteq9mEj86NA==", + "license": "MIT", + "dependencies": { + "deepmerge": "^3.2.0", + "hoist-non-react-statics": "^3.3.0" + }, + "peerDependencies": { + "react": ">=16.3.0" + } + }, + "node_modules/@callstack/react-theme-provider/node_modules/deepmerge": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.3.0.tgz", + "integrity": "sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@egjs/hammerjs": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@egjs/hammerjs/-/hammerjs-2.0.17.tgz", + "integrity": "sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A==", + "license": "MIT", + "dependencies": { + "@types/hammerjs": "^2.0.36" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "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, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@gorhom/bottom-sheet": { + "version": "5.2.8", + "resolved": "https://registry.npmjs.org/@gorhom/bottom-sheet/-/bottom-sheet-5.2.8.tgz", + "integrity": "sha512-+N27SMpbBxXZQ/IA2nlEV6RGxL/qSFHKfdFKcygvW+HqPG5jVNb1OqehLQsGfBP+Up42i0gW5ppI+DhpB7UCzA==", + "license": "MIT", + "dependencies": { + "@gorhom/portal": "1.0.14", + "invariant": "^2.2.4" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-native": "*", + "react": "*", + "react-native": "*", + "react-native-gesture-handler": ">=2.16.1", + "react-native-reanimated": ">=3.16.0 || >=4.0.0-" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-native": { + "optional": true + } + } + }, + "node_modules/@gorhom/portal": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/@gorhom/portal/-/portal-1.0.14.tgz", + "integrity": "sha512-MXyL4xvCjmgaORr/rtryDNFy3kU4qUbKlwtQqqsygd0xX3mhKjOLn6mQK8wfu0RkoE0pBE0nAasRoHua+/QZ7A==", + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.1" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "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==", + "devOptional": true, + "license": "BSD-3-Clause" + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "devOptional": true, + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/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, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@isaacs/ttlcache": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz", + "integrity": "sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "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==", + "license": "ISC", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/create-cache-key-function": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz", + "integrity": "sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { + "version": "5.1.1-v1", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-scope": "5.1.1" + } + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@react-native-community/cli": { + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-20.1.0.tgz", + "integrity": "sha512-441WsVtRe4nGJ9OzA+QMU1+22lA6Q2hRWqqIMKD0wjEMLqcSfOZyu2UL9a/yRpL/dRpyUsU4n7AxqKfTKO/Csg==", + "devOptional": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@react-native-community/cli-clean": "20.1.0", + "@react-native-community/cli-config": "20.1.0", + "@react-native-community/cli-doctor": "20.1.0", + "@react-native-community/cli-server-api": "20.1.0", + "@react-native-community/cli-tools": "20.1.0", + "@react-native-community/cli-types": "20.1.0", + "commander": "^9.4.1", + "deepmerge": "^4.3.0", + "execa": "^5.0.0", + "find-up": "^5.0.0", + "fs-extra": "^8.1.0", + "graceful-fs": "^4.1.3", + "picocolors": "^1.1.1", + "prompts": "^2.4.2", + "semver": "^7.5.2" + }, + "bin": { + "rnc-cli": "build/bin.js" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/@react-native-community/cli-clean": { + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-20.1.0.tgz", + "integrity": "sha512-77L4DifWfxAT8ByHnkypge7GBMYpbJAjBGV+toowt5FQSGaTBDcBHCX+FFqFRukD5fH6i8sZ41Gtw+nbfCTTIA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@react-native-community/cli-tools": "20.1.0", + "execa": "^5.0.0", + "fast-glob": "^3.3.2", + "picocolors": "^1.1.1" + } + }, + "node_modules/@react-native-community/cli-config": { + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-20.1.0.tgz", + "integrity": "sha512-1x9rhLLR/dKKb92Lb5O0l0EmUG08FHf+ZVyVEf9M+tX+p5QIm52MRiy43R0UAZ2jJnFApxRk+N3sxoYK4Dtnag==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@react-native-community/cli-tools": "20.1.0", + "cosmiconfig": "^9.0.0", + "deepmerge": "^4.3.0", + "fast-glob": "^3.3.2", + "joi": "^17.2.1", + "picocolors": "^1.1.1" + } + }, + "node_modules/@react-native-community/cli-config-android": { + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config-android/-/cli-config-android-20.1.0.tgz", + "integrity": "sha512-3A01ZDyFeCALzzPcwP/fleHoP3sGNq1UX7FzxkTrOFX8RRL9ntXNXQd27E56VU4BBxGAjAJT4Utw8pcOjJceIA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@react-native-community/cli-tools": "20.1.0", + "fast-glob": "^3.3.2", + "fast-xml-parser": "^4.4.1", + "picocolors": "^1.1.1" + } + }, + "node_modules/@react-native-community/cli-config-apple": { + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config-apple/-/cli-config-apple-20.1.0.tgz", + "integrity": "sha512-n6JVs8Q3yxRbtZQOy05ofeb1kGtspGN3SgwPmuaqvURF9fsuS7c4/9up2Kp9C+1D2J1remPJXiZLNGOcJvfpOA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@react-native-community/cli-tools": "20.1.0", + "execa": "^5.0.0", + "fast-glob": "^3.3.2", + "picocolors": "^1.1.1" + } + }, + "node_modules/@react-native-community/cli-doctor": { + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-20.1.0.tgz", + "integrity": "sha512-QfJF1GVjA4PBrIT3SJ0vFFIu0km1vwOmLDlOYVqfojajZJ+Dnvl0f94GN1il/jT7fITAxom///XH3/URvi7YTQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@react-native-community/cli-config": "20.1.0", + "@react-native-community/cli-platform-android": "20.1.0", + "@react-native-community/cli-platform-apple": "20.1.0", + "@react-native-community/cli-platform-ios": "20.1.0", + "@react-native-community/cli-tools": "20.1.0", + "command-exists": "^1.2.8", + "deepmerge": "^4.3.0", + "envinfo": "^7.13.0", + "execa": "^5.0.0", + "node-stream-zip": "^1.9.1", + "ora": "^5.4.1", + "picocolors": "^1.1.1", + "semver": "^7.5.2", + "wcwidth": "^1.0.1", + "yaml": "^2.2.1" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "devOptional": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native-community/cli-platform-android": { + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-20.1.0.tgz", + "integrity": "sha512-TeHPDThOwDppQRpndm9kCdRCBI8AMy3HSIQ+iy7VYQXL5BtZ5LfmGdusoj7nVN/ZGn0Lc6Gwts5qowyupXdeKg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@react-native-community/cli-config-android": "20.1.0", + "@react-native-community/cli-tools": "20.1.0", + "execa": "^5.0.0", + "logkitty": "^0.7.1", + "picocolors": "^1.1.1" + } + }, + "node_modules/@react-native-community/cli-platform-apple": { + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-apple/-/cli-platform-apple-20.1.0.tgz", + "integrity": "sha512-0ih1hrYezSM2cuOlVnwBEFtMwtd8YgpTLmZauDJCv50rIumtkI1cQoOgLoS4tbPCj9U/Vn2a9BFH0DLFOOIacg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@react-native-community/cli-config-apple": "20.1.0", + "@react-native-community/cli-tools": "20.1.0", + "execa": "^5.0.0", + "fast-xml-parser": "^4.4.1", + "picocolors": "^1.1.1" + } + }, + "node_modules/@react-native-community/cli-platform-ios": { + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-20.1.0.tgz", + "integrity": "sha512-XN7Da9z4WsJxtqVtEzY8q2bv22OsvzaFP5zy5+phMWNoJlU4lf7IvBSxqGYMpQ9XhYP7arDw5vmW4W34s06rnA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@react-native-community/cli-platform-apple": "20.1.0" + } + }, + "node_modules/@react-native-community/cli-server-api": { + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-20.1.0.tgz", + "integrity": "sha512-Tb415Oh8syXNT2zOzLzFkBXznzGaqKCiaichxKzGCDKg6JGHp3jSuCmcTcaPeYC7oc32n/S3Psw7798r4Q/7lA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@react-native-community/cli-tools": "20.1.0", + "body-parser": "^1.20.3", + "compression": "^1.7.1", + "connect": "^3.6.5", + "errorhandler": "^1.5.1", + "nocache": "^3.0.1", + "open": "^6.2.0", + "pretty-format": "^29.7.0", + "serve-static": "^1.13.1", + "ws": "^6.2.3" + } + }, + "node_modules/@react-native-community/cli-tools": { + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-20.1.0.tgz", + "integrity": "sha512-/YmzHGOkY6Bgrv4OaA1L8rFqsBlQd1EB2/ipAoKPiieV0EcB5PUamUSuNeFU3sBZZTYQCUENwX4wgOHgFUlDnQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@vscode/sudo-prompt": "^9.0.0", + "appdirsjs": "^1.2.4", + "execa": "^5.0.0", + "find-up": "^5.0.0", + "launch-editor": "^2.9.1", + "mime": "^2.4.1", + "ora": "^5.4.1", + "picocolors": "^1.1.1", + "prompts": "^2.4.2", + "semver": "^7.5.2" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "devOptional": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native-community/cli-types": { + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-20.1.0.tgz", + "integrity": "sha512-D0kDspcwgbVXyNjwicT7Bb1JgXjijTw1JJd+qxyF/a9+sHv7TU4IchV+gN38QegeXqVyM4Ym7YZIvXMFBmyJqA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "joi": "^17.2.1" + } + }, + "node_modules/@react-native-community/cli/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "devOptional": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native/assets-registry": { + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.84.0.tgz", + "integrity": "sha512-YiU9h1IN0pvvZsHbd03MaD7mE2q+ySaKMlE9tWK+3iiwtbEaMQOsMUuSJ1er2LU6ERMWfhfvCYgWpKRGOMeN8A==", + "license": "MIT", + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@react-native/babel-plugin-codegen": { + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.84.0.tgz", + "integrity": "sha512-8GGVqcfZQnpmaud1GBww/Z8tF5qaWvork5E+TTTQQm7l0p2WnYkzCDJdZOdISHwSO6ikAjh998c3CVPubij3rQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.3", + "@react-native/codegen": "0.84.0" + }, + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@react-native/babel-preset": { + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.84.0.tgz", + "integrity": "sha512-X7QfJCRyvawFUzAwidKynOh9Wc36r/OK+lEweNGyRCmciqVxs/8J/HAnANBks/kM/z7XlepG0hU1D/VjHKA/6g==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/plugin-proposal-export-default-from": "^7.24.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-default-from": "^7.24.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-transform-async-generator-functions": "^7.25.4", + "@babel/plugin-transform-async-to-generator": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.25.0", + "@babel/plugin-transform-class-properties": "^7.25.4", + "@babel/plugin-transform-classes": "^7.25.4", + "@babel/plugin-transform-destructuring": "^7.24.8", + "@babel/plugin-transform-flow-strip-types": "^7.25.2", + "@babel/plugin-transform-for-of": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.8", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-react-display-name": "^7.24.7", + "@babel/plugin-transform-react-jsx": "^7.25.2", + "@babel/plugin-transform-react-jsx-self": "^7.24.7", + "@babel/plugin-transform-react-jsx-source": "^7.24.7", + "@babel/plugin-transform-regenerator": "^7.24.7", + "@babel/plugin-transform-runtime": "^7.24.7", + "@babel/plugin-transform-typescript": "^7.25.2", + "@babel/plugin-transform-unicode-regex": "^7.24.7", + "@react-native/babel-plugin-codegen": "0.84.0", + "babel-plugin-syntax-hermes-parser": "0.32.0", + "babel-plugin-transform-flow-enums": "^0.0.2", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": ">= 20.19.4" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/@react-native/codegen": { + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.84.0.tgz", + "integrity": "sha512-TcTAO58JigCw9onYTrbE2yK2js5YNgqbmnpYyq9oXz2mofbX7JcK53kIi7fhqyJhie8RkY+X85zSOTWNs6S3CA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/parser": "^7.25.3", + "hermes-parser": "0.32.0", + "invariant": "^2.2.4", + "nullthrows": "^1.1.1", + "tinyglobby": "^0.2.15", + "yargs": "^17.6.2" + }, + "engines": { + "node": ">= 20.19.4" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/@react-native/community-cli-plugin": { + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.84.0.tgz", + "integrity": "sha512-uYoLBHnAzod4E5dA5rPPQeny2A5RD0PiIJQ4r+2F7cvA+5bZ8+znxw4TdaSiEk8uhN+clffI4d2bl9V4+xEK+Q==", + "license": "MIT", + "dependencies": { + "@react-native/dev-middleware": "0.84.0", + "debug": "^4.4.0", + "invariant": "^2.2.4", + "metro": "^0.83.3", + "metro-config": "^0.83.3", + "metro-core": "^0.83.3", + "semver": "^7.1.3" + }, + "engines": { + "node": ">= 20.19.4" + }, + "peerDependencies": { + "@react-native-community/cli": "*", + "@react-native/metro-config": "*" + }, + "peerDependenciesMeta": { + "@react-native-community/cli": { + "optional": true + }, + "@react-native/metro-config": { + "optional": true + } + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native/debugger-frontend": { + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.84.0.tgz", + "integrity": "sha512-n7JKYVDCbA2aj8/5/OD1IK7nuiAYj5l/Z6yhGf7GG4EGaeQdthqdb0LZbseaRPyZK/7tLfdnLdqlqdTQC6/UTQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@react-native/debugger-shell": { + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@react-native/debugger-shell/-/debugger-shell-0.84.0.tgz", + "integrity": "sha512-5t/NvQLYk/d0kWlGOMNobkjfimqBc+/LYRmSOkgKm+pyOhxjygCLSnRjAUkeRALSZ8h6MKGTz1Wc4pbmJr7T0Q==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.6", + "debug": "^4.4.0", + "fb-dotslash": "0.5.8" + }, + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@react-native/dev-middleware": { + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.84.0.tgz", + "integrity": "sha512-c0o7YW39AUI1FSLV/TFSszr87kQGmaePAQK0ygIRnwZ2fAGDnQ5Iu/tk3u9O5lVH6nTjfAwTKJ3El9YeEWDeEQ==", + "license": "MIT", + "dependencies": { + "@isaacs/ttlcache": "^1.4.1", + "@react-native/debugger-frontend": "0.84.0", + "@react-native/debugger-shell": "0.84.0", + "chrome-launcher": "^0.15.2", + "chromium-edge-launcher": "^0.2.0", + "connect": "^3.6.5", + "debug": "^4.4.0", + "invariant": "^2.2.4", + "nullthrows": "^1.1.1", + "open": "^7.0.3", + "serve-static": "^1.16.2", + "ws": "^7.5.10" + }, + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@react-native/dev-middleware/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==", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native/dev-middleware/node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native/dev-middleware/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "license": "MIT", + "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/@react-native/eslint-config": { + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@react-native/eslint-config/-/eslint-config-0.84.0.tgz", + "integrity": "sha512-Qv3+qan8kAyVmQEdJkVoSrZgwm4qn7UiBim4yxUVl/nLe/TuSkewliQb76lOFKmtgR1T/vZ3glIBrqu2TfGWPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/eslint-parser": "^7.25.1", + "@react-native/eslint-plugin": "0.84.0", + "@typescript-eslint/eslint-plugin": "^8.36.0", + "@typescript-eslint/parser": "^8.36.0", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-eslint-comments": "^3.2.0", + "eslint-plugin-ft-flow": "^2.0.1", + "eslint-plugin-jest": "^29.0.1", + "eslint-plugin-react": "^7.30.1", + "eslint-plugin-react-hooks": "^7.0.1", + "eslint-plugin-react-native": "^5.0.0" + }, + "engines": { + "node": ">= 20.19.4" + }, + "peerDependencies": { + "eslint": "^8.0.0 || ^9.0.0", + "prettier": ">=2" + } + }, + "node_modules/@react-native/eslint-plugin": { + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@react-native/eslint-plugin/-/eslint-plugin-0.84.0.tgz", + "integrity": "sha512-SqLSETKw7JB2R8Jxo+geRHFHDiWKg+gtiUW24sR/fsVJGJEfcHeS3JNBiO6NOZzeQvwSuj5F1ZRvEMZlzha/7Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@react-native/gradle-plugin": { + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.84.0.tgz", + "integrity": "sha512-j8g/I4Z+SAdh2NXOVng4rmfYgPoeJBZwAKoGPpSe/wB/9XDLh9IRGUTg8dGS5BWUy2471xBUoGZPwHb6QMJmVw==", + "license": "MIT", + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@react-native/js-polyfills": { + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.84.0.tgz", + "integrity": "sha512-xaxmzYWLgHH+2uAZQ0owEkDE58hOTWmuBKD/Gl+cDFD3mFfSK4lZpin/3hiXtE5LB4BwgqICsPN07zCAqx6Fpg==", + "license": "MIT", + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@react-native/metro-babel-transformer": { + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.84.0.tgz", + "integrity": "sha512-jWRCISiaUusEP3L5R59TDwNDCrerSguVQtjAVdQkUP6RLlCi9mrlWuFzttxaMOoWLM8zr/NpxSFPEGa3hIZTAQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@react-native/babel-preset": "0.84.0", + "hermes-parser": "0.32.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 20.19.4" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/@react-native/metro-config": { + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@react-native/metro-config/-/metro-config-0.84.0.tgz", + "integrity": "sha512-s+7YFsH6e2xdvp+8vNu4lXKP3R0SA905/wbLnflDZhNon0EGxuYIj2225ehnY+sUgabBEM4cS088rFmTlHru8Q==", + "devOptional": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@react-native/js-polyfills": "0.84.0", + "@react-native/metro-babel-transformer": "0.84.0", + "metro-config": "^0.83.3", + "metro-runtime": "^0.83.3" + }, + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@react-native/new-app-screen": { + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@react-native/new-app-screen/-/new-app-screen-0.84.0.tgz", + "integrity": "sha512-feHjWBw4ehetsAmCwGnXEzecVGpai3Qv/ZTJyd+8KhRdQvg1a+RtyR4LNvR1vXdB0OC+gKleWN4okG2bdpt3kA==", + "license": "MIT", + "engines": { + "node": ">= 20.19.4" + }, + "peerDependencies": { + "@types/react": "^19.1.0", + "react": "*", + "react-native": "*" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@react-native/normalize-colors": { + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.84.0.tgz", + "integrity": "sha512-7JgZyWtQ9Sz4qZvCTsURUtuv8/niEZ/iCorp7eExc3GgpBWNazPumieiUoWPdgRKofU0Bqpr2/dJevEn2hrlwA==", + "license": "MIT" + }, + "node_modules/@react-native/typescript-config": { + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@react-native/typescript-config/-/typescript-config-0.84.0.tgz", + "integrity": "sha512-AYDoPdwuOx4rz6jRo+Qko0Y1L3TygoiNZwgqEgF0v+2oR6byDth7Rj+BZWIbIFM3OT23ecBEQG0VKsJkihNlBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@react-native/virtualized-lists": { + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.84.0.tgz", + "integrity": "sha512-ugwSj0Gb4MYrcm8uQrQw8qHPx5RKGDLuZRAP/AuwneFizHx8YCLBEFbOYRGWgxHBRtkJ70D1o+jpIx3CK3p5lw==", + "license": "MIT", + "dependencies": { + "invariant": "^2.2.4", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 20.19.4" + }, + "peerDependencies": { + "@types/react": "^19.2.0", + "react": "*", + "react-native": "*" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@react-navigation/bottom-tabs": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@react-navigation/bottom-tabs/-/bottom-tabs-7.14.0.tgz", + "integrity": "sha512-oG2VdoInuIyK0o9o90Yo47hTCS+sPyVE7k8eSB37vt3pq3uQxjh8V3xJpsQfOfNlRUXOPB/ejH93nSBlP7ZHmQ==", + "license": "MIT", + "dependencies": { + "@react-navigation/elements": "^2.9.5", + "color": "^4.2.3", + "sf-symbols-typescript": "^2.1.0" + }, + "peerDependencies": { + "@react-navigation/native": "^7.1.28", + "react": ">= 18.2.0", + "react-native": "*", + "react-native-safe-area-context": ">= 4.0.0", + "react-native-screens": ">= 4.0.0" + } + }, + "node_modules/@react-navigation/core": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-7.14.0.tgz", + "integrity": "sha512-tMpzskBzVp0E7CRNdNtJIdXjk54Kwe/TF9ViXAef+YFM1kSfGv4e/B2ozfXE+YyYgmh4WavTv8fkdJz1CNyu+g==", + "license": "MIT", + "dependencies": { + "@react-navigation/routers": "^7.5.3", + "escape-string-regexp": "^4.0.0", + "fast-deep-equal": "^3.1.3", + "nanoid": "^3.3.11", + "query-string": "^7.1.3", + "react-is": "^19.1.0", + "use-latest-callback": "^0.2.4", + "use-sync-external-store": "^1.5.0" + }, + "peerDependencies": { + "react": ">= 18.2.0" + } + }, + "node_modules/@react-navigation/core/node_modules/react-is": { + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.4.tgz", + "integrity": "sha512-W+EWGn2v0ApPKgKKCy/7s7WHXkboGcsrXE+2joLyVxkbyVQfO3MUEaUQDHoSmb8TFFrSKYa9mw64WZHNHSDzYA==", + "license": "MIT" + }, + "node_modules/@react-navigation/elements": { + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-2.9.5.tgz", + "integrity": "sha512-iHZU8rRN1014Upz73AqNVXDvSMZDh5/ktQ1CMe21rdgnOY79RWtHHBp9qOS3VtqlUVYGkuX5GEw5mDt4tKdl0g==", + "license": "MIT", + "dependencies": { + "color": "^4.2.3", + "use-latest-callback": "^0.2.4", + "use-sync-external-store": "^1.5.0" + }, + "peerDependencies": { + "@react-native-masked-view/masked-view": ">= 0.2.0", + "@react-navigation/native": "^7.1.28", + "react": ">= 18.2.0", + "react-native": "*", + "react-native-safe-area-context": ">= 4.0.0" + }, + "peerDependenciesMeta": { + "@react-native-masked-view/masked-view": { + "optional": true + } + } + }, + "node_modules/@react-navigation/native": { + "version": "7.1.28", + "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-7.1.28.tgz", + "integrity": "sha512-d1QDn+KNHfHGt3UIwOZvupvdsDdiHYZBEj7+wL2yDVo3tMezamYy60H9s3EnNVE1Ae1ty0trc7F2OKqo/RmsdQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@react-navigation/core": "^7.14.0", + "escape-string-regexp": "^4.0.0", + "fast-deep-equal": "^3.1.3", + "nanoid": "^3.3.11", + "use-latest-callback": "^0.2.4" + }, + "peerDependencies": { + "react": ">= 18.2.0", + "react-native": "*" + } + }, + "node_modules/@react-navigation/routers": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/@react-navigation/routers/-/routers-7.5.3.tgz", + "integrity": "sha512-1tJHg4KKRJuQ1/EvJxatrMef3NZXEPzwUIUZ3n1yJ2t7Q97siwRtbynRpQG9/69ebbtiZ8W3ScOZF/OmhvM4Rg==", + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11" + } + }, + "node_modules/@react-navigation/stack": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@react-navigation/stack/-/stack-7.7.2.tgz", + "integrity": "sha512-dBXj+YEqfLsLQmmNyZ9lgu11N0JfpFCjjP4iEtlC1dPNNau2Rv18LEejXNU/k/fIgcfzYXFdQeiyEFW5O3f5Fw==", + "license": "MIT", + "dependencies": { + "@react-navigation/elements": "^2.9.5", + "color": "^4.2.3", + "use-latest-callback": "^0.2.4" + }, + "peerDependencies": { + "@react-navigation/native": "^7.1.28", + "react": ">= 18.2.0", + "react-native": "*", + "react-native-gesture-handler": ">= 2.0.0", + "react-native-safe-area-context": ">= 4.0.0", + "react-native-screens": ">= 4.0.0" + } + }, + "node_modules/@sideway/address": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", + "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", + "devOptional": true, + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", + "devOptional": true, + "license": "BSD-3-Clause" + }, + "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==", + "devOptional": true, + "license": "BSD-3-Clause" + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.10", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", + "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", + "license": "MIT" + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@tanstack/query-core": { + "version": "5.90.20", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.90.20.tgz", + "integrity": "sha512-OMD2HLpNouXEfZJWcKeVKUgQ5n+n3A2JFmBaScpNDUqSrQSjiveC7dKMe53uJUg1nDG16ttFPz2xfilz6i2uVg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/react-query": { + "version": "5.90.21", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.21.tgz", + "integrity": "sha512-0Lu6y5t+tvlTJMTO7oh5NSpJfpg/5D41LlThfepTixPYkJ0sE2Jj0m0f6yYqujBwIXlId87e234+MxG3D3g7kg==", + "license": "MIT", + "dependencies": { + "@tanstack/query-core": "5.90.20" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": "^18 || ^19" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/hammerjs": { + "version": "2.0.46", + "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.46.tgz", + "integrity": "sha512-ynRvcq6wvqexJ9brDMS4BnBLzmr0e14d6ZJTEShTBWKymQiHwlAyGu0ZPEFI2Fh1U53F7tN9ufClWM5KvqkKOw==", + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "29.5.14", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", + "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/node": { + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", + "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", + "license": "MIT", + "dependencies": { + "undici-types": "~7.16.0" + } + }, + "node_modules/@types/react": { + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", + "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", + "devOptional": true, + "license": "MIT", + "peer": true, + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-native": { + "version": "0.70.19", + "resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.70.19.tgz", + "integrity": "sha512-c6WbyCgWTBgKKMESj/8b4w+zWcZSsCforson7UdXtXMecG3MxCinYi6ihhrHVPyUrVzORsvEzK8zg32z4pK6Sg==", + "devOptional": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-native-sqlite-storage": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/@types/react-native-sqlite-storage/-/react-native-sqlite-storage-6.0.5.tgz", + "integrity": "sha512-1gPwgYil6pHV/EDF816M8KmVsQC5nGMTAm8OMC25GbyuBaXFn7sdguMq6A2owtXB8c4qsH2tOEIQNetbOquawA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/react-native-vector-icons": { + "version": "6.4.18", + "resolved": "https://registry.npmjs.org/@types/react-native-vector-icons/-/react-native-vector-icons-6.4.18.tgz", + "integrity": "sha512-YGlNWb+k5laTBHd7+uZowB9DpIK3SXUneZqAiKQaj1jnJCZM0x71GDim5JCTMi4IFkhc9m8H/Gm28T5BjyivUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/react": "*", + "@types/react-native": "^0.70" + } + }, + "node_modules/@types/react-test-renderer": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-19.1.0.tgz", + "integrity": "sha512-XD0WZrHqjNrxA/MaR9O22w/RNidWR9YZmBdRGI7wcnWGrv/3dA8wKCJ8m63Sn+tLJhcjmuhOi629N66W6kgWzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "license": "MIT" + }, + "node_modules/@types/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/yargs": { + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.56.0.tgz", + "integrity": "sha512-lRyPDLzNCuae71A3t9NEINBiTn7swyOhvUj3MyUOxb8x6g6vPEFoOU+ZRmGMusNC3X3YMhqMIX7i8ShqhT74Pw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.56.0", + "@typescript-eslint/type-utils": "8.56.0", + "@typescript-eslint/utils": "8.56.0", + "@typescript-eslint/visitor-keys": "8.56.0", + "ignore": "^7.0.5", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.56.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.56.0.tgz", + "integrity": "sha512-IgSWvLobTDOjnaxAfDTIHaECbkNlAlKv2j5SjpB2v7QHKv1FIfjwMy8FsDbVfDX/KjmCmYICcw7uGaXLhtsLNg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@typescript-eslint/scope-manager": "8.56.0", + "@typescript-eslint/types": "8.56.0", + "@typescript-eslint/typescript-estree": "8.56.0", + "@typescript-eslint/visitor-keys": "8.56.0", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.56.0.tgz", + "integrity": "sha512-M3rnyL1vIQOMeWxTWIW096/TtVP+8W3p/XnaFflhmcFp+U4zlxUxWj4XwNs6HbDeTtN4yun0GNTTDBw/SvufKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.56.0", + "@typescript-eslint/types": "^8.56.0", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.56.0.tgz", + "integrity": "sha512-7UiO/XwMHquH+ZzfVCfUNkIXlp/yQjjnlYUyYz7pfvlK3/EyyN6BK+emDmGNyQLBtLGaYrTAI6KOw8tFucWL2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.56.0", + "@typescript-eslint/visitor-keys": "8.56.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.56.0.tgz", + "integrity": "sha512-bSJoIIt4o3lKXD3xmDh9chZcjCz5Lk8xS7Rxn+6l5/pKrDpkCwtQNQQwZ2qRPk7TkUYhrq3WPIHXOXlbXP0itg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.56.0.tgz", + "integrity": "sha512-qX2L3HWOU2nuDs6GzglBeuFXviDODreS58tLY/BALPC7iu3Fa+J7EOTwnX9PdNBxUI7Uh0ntP0YWGnxCkXzmfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.56.0", + "@typescript-eslint/typescript-estree": "8.56.0", + "@typescript-eslint/utils": "8.56.0", + "debug": "^4.4.3", + "ts-api-utils": "^2.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.0.tgz", + "integrity": "sha512-DBsLPs3GsWhX5HylbP9HNG15U0bnwut55Lx12bHB9MpXxQ+R5GC8MwQe+N1UFXxAeQDvEsEDY6ZYwX03K7Z6HQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.0.tgz", + "integrity": "sha512-ex1nTUMWrseMltXUHmR2GAQ4d+WjkZCT4f+4bVsps8QEdh0vlBsaCokKTPlnqBFqqGaxilDNJG7b8dolW2m43Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.56.0", + "@typescript-eslint/tsconfig-utils": "8.56.0", + "@typescript-eslint/types": "8.56.0", + "@typescript-eslint/visitor-keys": "8.56.0", + "debug": "^4.4.3", + "minimatch": "^9.0.5", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.56.0.tgz", + "integrity": "sha512-RZ3Qsmi2nFGsS+n+kjLAYDPVlrzf7UhTffrDIKr+h2yzAlYP/y5ZulU0yeDEPItos2Ph46JAL5P/On3pe7kDIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.56.0", + "@typescript-eslint/types": "8.56.0", + "@typescript-eslint/typescript-estree": "8.56.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.0.tgz", + "integrity": "sha512-q+SL+b+05Ud6LbEE35qe4A99P+htKTKVbyiNEe45eCbJFyh/HVK9QXwlrbz+Q4L8SOW4roxSVwXYj4DMBT7Ieg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.56.0", + "eslint-visitor-keys": "^5.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.0.tgz", + "integrity": "sha512-A0XeIi7CXU7nPlfHS9loMYEKxUaONu/hTEzHTGba9Huu94Cq1hPivf+DE5erJozZOky0LfvXAyrV/tcswpLI0Q==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true, + "license": "ISC" + }, + "node_modules/@vscode/sudo-prompt": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/@vscode/sudo-prompt/-/sudo-prompt-9.3.2.tgz", + "integrity": "sha512-gcXoCN00METUNFeQOFJ+C9xUI0DKB+0EGMVg7wbVYRHBw2Eq3fKisDZOkRdOz3kqXRKOENMfShPOmypw1/8nOw==", + "devOptional": true, + "license": "MIT" + }, + "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==", + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "license": "MIT", + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "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, + "license": "MIT", + "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/anser": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz", + "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==", + "license": "MIT" + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "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==", + "devOptional": true, + "license": "MIT", + "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==", + "devOptional": true, + "license": "MIT", + "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==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/appdirsjs": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz", + "integrity": "sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "license": "MIT" + }, + "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, + "license": "Python-2.0" + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-timsort": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", + "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", + "license": "MIT" + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "license": "MIT" + }, + "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==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "license": "MIT", + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.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==", + "license": "BSD-3-Clause", + "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-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "license": "BSD-3-Clause", + "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/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.15.tgz", + "integrity": "sha512-hR3GwrRwHUfYwGfrisXPIDP3JcYfBrW7wKE7+Au6wDYl7fm/ka1NEII6kORzxNU556JjfidZeBsO10kYvtV1aw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-define-polyfill-provider": "^0.6.6", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.0.tgz", + "integrity": "sha512-AvDcMxJ34W4Wgy4KBIIePQTAOP1Ie2WFwkQp3dB7FQ/f0lI5+nM96zUnYEOE1P9sEg0es5VCP0HxiWu5fUHZAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.6", + "core-js-compat": "^3.48.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.6.tgz", + "integrity": "sha512-hYm+XLYRMvupxiQzrvXUj7YyvFFVfv5gI0R71AJzudg1g2AI2vyCPPIFEBjk162/wFzti3inBHo7isWFuEVS/A==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.6" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-syntax-hermes-parser": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.32.0.tgz", + "integrity": "sha512-m5HthL++AbyeEA2FcdwOLfVFvWYECOBObLHNqdR8ceY4TsEdn4LdX2oTvbB2QJSSElE2AWA/b2MXZ/PF/CqLZg==", + "license": "MIT", + "dependencies": { + "hermes-parser": "0.32.0" + } + }, + "node_modules/babel-plugin-transform-flow-enums": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz", + "integrity": "sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-flow": "^7.12.1" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", + "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@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" + }, + "peerDependencies": { + "@babel/core": "^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "license": "MIT", + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "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" + } + ], + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.9.19", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz", + "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/body-parser": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", + "type-is": "~1.6.18", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "license": "ISC" + }, + "node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "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==", + "license": "Apache-2.0", + "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==", + "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" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001770", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001770.tgz", + "integrity": "sha512-x/2CLQ1jHENRbHg5PSId2sXq1CIO1CISvwWAj027ltMVG2UNgW+w9oH2+HzgEIRFembL8bUlXtfbBHR1fCg2xw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "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/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, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", + "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" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "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==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chrome-launcher": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz", + "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==", + "license": "Apache-2.0", + "dependencies": { + "@types/node": "*", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0" + }, + "bin": { + "print-chrome-path": "bin/print-chrome-path.js" + }, + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/chrome-launcher/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==", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chromium-edge-launcher": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chromium-edge-launcher/-/chromium-edge-launcher-0.2.0.tgz", + "integrity": "sha512-JfJjUnq25y9yg4FABRRVPmBGWPZZi+AQXT4mxupb67766/0UlhG8PAZCz6xzEMXTbW3CsSoE8PcCWA49n35mKg==", + "license": "Apache-2.0", + "dependencies": { + "@types/node": "*", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0", + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, + "node_modules/chromium-edge-launcher/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==", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", + "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", + "dev": true, + "license": "MIT" + }, + "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, + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", + "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", + "dev": true, + "license": "MIT" + }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "license": "MIT", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/colorette": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", + "devOptional": true, + "license": "MIT" + }, + "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==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/comment-json": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.5.1.tgz", + "integrity": "sha512-taEtr3ozUmOB7it68Jll7s0Pwm+aoiHyXKrEC8SEodL4rNpdfDLqa7PfBlrgFoCNNdR8ImL+muti5IGvktJAAg==", + "license": "MIT", + "dependencies": { + "array-timsort": "^1.0.3", + "core-util-is": "^1.0.3", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", + "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "compressible": "~2.0.18", + "debug": "2.6.9", + "negotiator": "~0.6.4", + "on-headers": "~1.1.0", + "safe-buffer": "5.2.1", + "vary": "~1.1.2" + }, + "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, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "license": "MIT", + "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/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, + "node_modules/core-js-compat": { + "version": "3.48.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.48.0.tgz", + "integrity": "sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1" + }, + "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==", + "license": "MIT" + }, + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-select": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "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==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-what": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "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==", + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/dayjs": { + "version": "1.11.19", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz", + "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dedent": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.1.tgz", + "integrity": "sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "license": "Apache-2.0", + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "license": "Apache-2.0" + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "license": "MIT" + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.286", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz", + "integrity": "sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==", + "license": "ISC" + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/envinfo": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.21.0.tgz", + "integrity": "sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==", + "devOptional": true, + "license": "MIT", + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "license": "MIT", + "dependencies": { + "stackframe": "^1.3.4" + } + }, + "node_modules/errorhandler": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.2.tgz", + "integrity": "sha512-kNAL7hESndBCrWwS72QyV3IVOTrVmj9D062FV5BQswNL5zEdeRmz/WJFyh6Aj/plvvSOrzddkxW57HgkZcR9Fw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "escape-html": "~1.0.3" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/es-abstract": { + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.1.tgz", + "integrity": "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.2.tgz", + "integrity": "sha512-BrUQ0cPTB/IwXj23HtwHjS9n7O4h9FX94b4xc5zlTHxeLgTAdzYUDyy6KdExAl9lbN5rtfe44xpjpmj9grxs5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.1", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.1.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.3.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.5", + "safe-array-concat": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.10.2", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.2.tgz", + "integrity": "sha512-/IGJ6+Dka158JnP5n5YFMOszjDWrXggGz1LaK/guZq9vZTmniaKlHcsscvkAhn9y4U+BU3JuUdYvtAMcv30y4A==", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-eslint-comments": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz", + "integrity": "sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5", + "ignore": "^5.0.5" + }, + "engines": { + "node": ">=6.5.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-eslint-comments/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint-plugin-eslint-comments/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/eslint-plugin-ft-flow": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-ft-flow/-/eslint-plugin-ft-flow-2.0.3.tgz", + "integrity": "sha512-Vbsd/b+LYA99jUbsL6viEUWShFaYQt2YQs3QN3f+aeszOhh2sgdcU0mjzDyD4yyBvMc8qy2uwvBBWfMzEX06tg==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.21", + "string-natural-compare": "^3.0.1" + }, + "engines": { + "node": ">=12.22.0" + }, + "peerDependencies": { + "@babel/eslint-parser": "^7.12.0", + "eslint": "^8.1.0" + } + }, + "node_modules/eslint-plugin-jest": { + "version": "29.15.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-29.15.0.tgz", + "integrity": "sha512-ZCGr7vTH2WSo2hrK5oM2RULFmMruQ7W3cX7YfwoTiPfzTGTFBMmrVIz45jZHd++cGKj/kWf02li/RhTGcANJSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/utils": "^8.0.0" + }, + "engines": { + "node": "^20.12.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^8.0.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "jest": "*", + "typescript": ">=4.8.4 <6.0.0" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.37.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", + "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.2.1", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.9", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.1.tgz", + "integrity": "sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.24.4", + "@babel/parser": "^7.24.4", + "hermes-parser": "^0.25.1", + "zod": "^3.25.0 || ^4.0.0", + "zod-validation-error": "^3.5.0 || ^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-react-hooks/node_modules/hermes-estree": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", + "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint-plugin-react-hooks/node_modules/hermes-parser": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", + "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hermes-estree": "0.25.1" + } + }, + "node_modules/eslint-plugin-react-native": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-native/-/eslint-plugin-react-native-5.0.0.tgz", + "integrity": "sha512-VyWlyCC/7FC/aONibOwLkzmyKg4j9oI8fzrk9WYNs4I8/m436JuOTAFwLvEn1CVvc7La4cPfbCyspP4OYpP52Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-plugin-react-native-globals": "^0.1.1" + }, + "peerDependencies": { + "eslint": "^3.17.0 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-react-native-globals": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-native-globals/-/eslint-plugin-react-native-globals-0.1.2.tgz", + "integrity": "sha512-9aEPf1JEpiTjcFAmmyw8eiIXmcNZOqaZyHO77wgm0/dWfT/oxC1SrIq8ET38pMxHYrcB6Uew+TzUVsBeczF88g==", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint-plugin-react/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "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, + "license": "Apache-2.0", + "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, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.6", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.6.tgz", + "integrity": "sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "is-core-module": "^2.16.1", + "node-exports-info": "^1.6.0", + "object-keys": "^1.1.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "license": "BSD-2-Clause", + "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, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "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, + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "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, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "dev": true, + "license": "BSD-3-Clause", + "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, + "license": "BSD-2-Clause", + "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, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "devOptional": true, + "license": "MIT", + "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/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/exponential-backoff": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz", + "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==", + "license": "Apache-2.0" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "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==", + "license": "ISC", + "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==", + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-xml-parser": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz", + "integrity": "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==", + "devOptional": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "strnum": "^1.1.1" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fb-dotslash": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/fb-dotslash/-/fb-dotslash-0.5.8.tgz", + "integrity": "sha512-XHYLKk9J4BupDxi9bSEhkfss0m+Vr9ChTrjhf9l2iw3jB5C7BnY4GVPoMcqbrTutsKJso6yj2nAB6BI/F2oZaA==", + "license": "(MIT OR Apache-2.0)", + "bin": { + "dotslash": "bin/dotslash" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" + } + }, + "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, + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/finalhandler/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/flow-enums-runtime": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz", + "integrity": "sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==", + "license": "MIT" + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "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==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gifted-charts-core": { + "version": "0.1.78", + "resolved": "https://registry.npmjs.org/gifted-charts-core/-/gifted-charts-core-0.1.78.tgz", + "integrity": "sha512-IR8DXaNHbuV76cfO4ZpDUFZJ1+q4SJXoCFtKPJ5CIZnYZRmWGAdKAhUqlpKwXUzTSETza1GKDbJli2CVCXOKeg==", + "license": "MIT", + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-svg": "*" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hermes-compiler": { + "version": "250829098.0.7", + "resolved": "https://registry.npmjs.org/hermes-compiler/-/hermes-compiler-250829098.0.7.tgz", + "integrity": "sha512-8QOmg1VjAWv8poFVslJDY8qkvjTy/UiO3R/hyGoC0IAchLzBdS9/TmAvI9cN1F3yLTEjimAIQQtUslpBMPXVVg==", + "license": "MIT" + }, + "node_modules/hermes-estree": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.32.0.tgz", + "integrity": "sha512-KWn3BqnlDOl97Xe1Yviur6NbgIZ+IP+UVSpshlZWkq+EtoHg6/cwiDj/osP9PCEgFE15KBm1O55JRwbMEm5ejQ==", + "license": "MIT" + }, + "node_modules/hermes-parser": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.32.0.tgz", + "integrity": "sha512-g4nBOWFpuiTqjR3LZdRxKUkij9iyveWeuks7INEsMX741f3r9xxrOe8TeQfUxtda0eXmiIFiMQzoeSQEno33Hw==", + "license": "MIT", + "dependencies": { + "hermes-estree": "0.32.0" + } + }, + "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==", + "license": "BSD-3-Clause", + "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==", + "license": "MIT" + }, + "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, + "license": "MIT" + }, + "node_modules/html-parse-stringify": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz", + "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==", + "license": "MIT", + "dependencies": { + "void-elements": "3.1.0" + } + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "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==", + "devOptional": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/i18next": { + "version": "25.8.10", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-25.8.10.tgz", + "integrity": "sha512-CtPJLMAz1G8sxo+mIzfBjGgLxWs7d6WqIjlmmv9BTsOat4pJIfwZ8cm07n3kFS6bP9c6YwsYutYrwsEeJVBo2g==", + "funding": [ + { + "type": "individual", + "url": "https://locize.com" + }, + { + "type": "individual", + "url": "https://locize.com/i18next.html" + }, + { + "type": "individual", + "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.28.4" + }, + "peerDependencies": { + "typescript": "^5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "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, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "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" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.2.1.tgz", + "integrity": "sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==", + "license": "MIT", + "dependencies": { + "queue": "6.0.2" + }, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=16.x" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, + "license": "MIT", + "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": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", + "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==", + "license": "ISC" + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "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==", + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "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, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "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, + "license": "BSD-3-Clause", + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/iterator.prototype": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.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": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jiti": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "license": "MIT", + "peer": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/joi": { + "version": "17.13.3", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", + "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", + "devOptional": true, + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^9.3.0", + "@hapi/topo": "^5.1.0", + "@sideway/address": "^4.1.5", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsc-safe-url": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz", + "integrity": "sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==", + "license": "0BSD" + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "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==", + "devOptional": true, + "license": "MIT" + }, + "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, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "devOptional": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/launch-editor": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.12.0.tgz", + "integrity": "sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "picocolors": "^1.1.1", + "shell-quote": "^1.8.3" + } + }, + "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==", + "license": "MIT", + "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, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lighthouse-logger": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz", + "integrity": "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==", + "license": "Apache-2.0", + "dependencies": { + "debug": "^2.6.9", + "marky": "^1.2.2" + } + }, + "node_modules/lighthouse-logger/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/lighthouse-logger/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/lightningcss": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.27.0.tgz", + "integrity": "sha512-8f7aNmS1+etYSLHht0fQApPc2kNO8qGRutifN5rVIc6Xo6ABsEbqOr758UwI7ALVbTt4x1fllKt0PYgzD9S3yQ==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^1.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.27.0", + "lightningcss-darwin-x64": "1.27.0", + "lightningcss-freebsd-x64": "1.27.0", + "lightningcss-linux-arm-gnueabihf": "1.27.0", + "lightningcss-linux-arm64-gnu": "1.27.0", + "lightningcss-linux-arm64-musl": "1.27.0", + "lightningcss-linux-x64-gnu": "1.27.0", + "lightningcss-linux-x64-musl": "1.27.0", + "lightningcss-win32-arm64-msvc": "1.27.0", + "lightningcss-win32-x64-msvc": "1.27.0" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.27.0.tgz", + "integrity": "sha512-Gl/lqIXY+d+ySmMbgDf0pgaWSqrWYxVHoc88q+Vhf2YNzZ8DwoRzGt5NZDVqqIW5ScpSnmmjcgXP87Dn2ylSSQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.27.0.tgz", + "integrity": "sha512-0+mZa54IlcNAoQS9E0+niovhyjjQWEMrwW0p2sSdLRhLDc8LMQ/b67z7+B5q4VmjYCMSfnFi3djAAQFIDuj/Tg==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.27.0.tgz", + "integrity": "sha512-n1sEf85fePoU2aDN2PzYjoI8gbBqnmLGEhKq7q0DKLj0UTVmOTwDC7PtLcy/zFxzASTSBlVQYJUhwIStQMIpRA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.27.0.tgz", + "integrity": "sha512-MUMRmtdRkOkd5z3h986HOuNBD1c2lq2BSQA1Jg88d9I7bmPGx08bwGcnB75dvr17CwxjxD6XPi3Qh8ArmKFqCA==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.27.0.tgz", + "integrity": "sha512-cPsxo1QEWq2sfKkSq2Bq5feQDHdUEwgtA9KaB27J5AX22+l4l0ptgjMZZtYtUnteBofjee+0oW1wQ1guv04a7A==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.27.0.tgz", + "integrity": "sha512-rCGBm2ax7kQ9pBSeITfCW9XSVF69VX+fm5DIpvDZQl4NnQoMQyRwhZQm9pd59m8leZ1IesRqWk2v/DntMo26lg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.27.0.tgz", + "integrity": "sha512-Dk/jovSI7qqhJDiUibvaikNKI2x6kWPN79AQiD/E/KeQWMjdGe9kw51RAgoWFDi0coP4jinaH14Nrt/J8z3U4A==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.27.0.tgz", + "integrity": "sha512-QKjTxXm8A9s6v9Tg3Fk0gscCQA1t/HMoF7Woy1u68wCk5kS4fR+q3vXa1p3++REW784cRAtkYKrPy6JKibrEZA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.27.0.tgz", + "integrity": "sha512-/wXegPS1hnhkeG4OXQKEMQeJd48RDC3qdh+OA8pCuOPCyvnm/yEayrJdJVqzBsqpy1aJklRCVxscpFur80o6iQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.27.0.tgz", + "integrity": "sha512-/OJLj94Zm/waZShL8nB5jsNj3CfNATLCTyFxZyouilfTmSoLDX7VlVAmhPHoZWVFp4vdmoiEbPEYC8HID3m6yw==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "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==", + "license": "MIT" + }, + "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==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "devOptional": true, + "license": "MIT" + }, + "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, + "license": "MIT" + }, + "node_modules/lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==", + "license": "MIT" + }, + "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, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/logkitty": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz", + "integrity": "sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "ansi-fragments": "^0.2.1", + "dayjs": "^1.8.15", + "yargs": "^15.1.0" + }, + "bin": { + "logkitty": "bin/logkitty.js" + } + }, + "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==", + "devOptional": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "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==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "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==", + "devOptional": true, + "license": "MIT", + "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==", + "devOptional": true, + "license": "MIT", + "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==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "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==", + "devOptional": true, + "license": "MIT", + "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==", + "devOptional": true, + "license": "ISC" + }, + "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==", + "devOptional": true, + "license": "MIT", + "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==", + "devOptional": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "license": "BSD-3-Clause", + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/marky": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/marky/-/marky-1.3.0.tgz", + "integrity": "sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==", + "license": "Apache-2.0" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "license": "CC0-1.0" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/metro": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro/-/metro-0.83.3.tgz", + "integrity": "sha512-+rP+/GieOzkt97hSJ0MrPOuAH/jpaS21ZDvL9DJ35QYRDlQcwzcvUlGUf79AnQxq/2NPiS/AULhhM4TKutIt8Q==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/core": "^7.25.2", + "@babel/generator": "^7.25.0", + "@babel/parser": "^7.25.3", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.3", + "@babel/types": "^7.25.2", + "accepts": "^1.3.7", + "chalk": "^4.0.0", + "ci-info": "^2.0.0", + "connect": "^3.6.5", + "debug": "^4.4.0", + "error-stack-parser": "^2.0.6", + "flow-enums-runtime": "^0.0.6", + "graceful-fs": "^4.2.4", + "hermes-parser": "0.32.0", + "image-size": "^1.0.2", + "invariant": "^2.2.4", + "jest-worker": "^29.7.0", + "jsc-safe-url": "^0.2.2", + "lodash.throttle": "^4.1.1", + "metro-babel-transformer": "0.83.3", + "metro-cache": "0.83.3", + "metro-cache-key": "0.83.3", + "metro-config": "0.83.3", + "metro-core": "0.83.3", + "metro-file-map": "0.83.3", + "metro-resolver": "0.83.3", + "metro-runtime": "0.83.3", + "metro-source-map": "0.83.3", + "metro-symbolicate": "0.83.3", + "metro-transform-plugins": "0.83.3", + "metro-transform-worker": "0.83.3", + "mime-types": "^2.1.27", + "nullthrows": "^1.1.1", + "serialize-error": "^2.1.0", + "source-map": "^0.5.6", + "throat": "^5.0.0", + "ws": "^7.5.10", + "yargs": "^17.6.2" + }, + "bin": { + "metro": "src/cli.js" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-babel-transformer": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.83.3.tgz", + "integrity": "sha512-1vxlvj2yY24ES1O5RsSIvg4a4WeL7PFXgKOHvXTXiW0deLvQr28ExXj6LjwCCDZ4YZLhq6HddLpZnX4dEdSq5g==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "flow-enums-runtime": "^0.0.6", + "hermes-parser": "0.32.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-cache": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.83.3.tgz", + "integrity": "sha512-3jo65X515mQJvKqK3vWRblxDEcgY55Sk3w4xa6LlfEXgQ9g1WgMh9m4qVZVwgcHoLy0a2HENTPCCX4Pk6s8c8Q==", + "license": "MIT", + "dependencies": { + "exponential-backoff": "^3.1.1", + "flow-enums-runtime": "^0.0.6", + "https-proxy-agent": "^7.0.5", + "metro-core": "0.83.3" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-cache-key": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.83.3.tgz", + "integrity": "sha512-59ZO049jKzSmvBmG/B5bZ6/dztP0ilp0o988nc6dpaDsU05Cl1c/lRf+yx8m9WW/JVgbmfO5MziBU559XjI5Zw==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-config": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.83.3.tgz", + "integrity": "sha512-mTel7ipT0yNjKILIan04bkJkuCzUUkm2SeEaTads8VfEecCh+ltXchdq6DovXJqzQAXuR2P9cxZB47Lg4klriA==", + "license": "MIT", + "dependencies": { + "connect": "^3.6.5", + "flow-enums-runtime": "^0.0.6", + "jest-validate": "^29.7.0", + "metro": "0.83.3", + "metro-cache": "0.83.3", + "metro-core": "0.83.3", + "metro-runtime": "0.83.3", + "yaml": "^2.6.1" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-core": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.83.3.tgz", + "integrity": "sha512-M+X59lm7oBmJZamc96usuF1kusd5YimqG/q97g4Ac7slnJ3YiGglW5CsOlicTR5EWf8MQFxxjDoB6ytTqRe8Hw==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6", + "lodash.throttle": "^4.1.1", + "metro-resolver": "0.83.3" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-file-map": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.83.3.tgz", + "integrity": "sha512-jg5AcyE0Q9Xbbu/4NAwwZkmQn7doJCKGW0SLeSJmzNB9Z24jBe0AL2PHNMy4eu0JiKtNWHz9IiONGZWq7hjVTA==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "fb-watchman": "^2.0.0", + "flow-enums-runtime": "^0.0.6", + "graceful-fs": "^4.2.4", + "invariant": "^2.2.4", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "nullthrows": "^1.1.1", + "walker": "^1.0.7" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-minify-terser": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.83.3.tgz", + "integrity": "sha512-O2BmfWj6FSfzBLrNCXt/rr2VYZdX5i6444QJU0fFoc7Ljg+Q+iqebwE3K0eTvkI6TRjELsXk1cjU+fXwAR4OjQ==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6", + "terser": "^5.15.0" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-resolver": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.83.3.tgz", + "integrity": "sha512-0js+zwI5flFxb1ktmR///bxHYg7OLpRpWZlBBruYG8OKYxeMP7SV0xQ/o/hUelrEMdK4LJzqVtHAhBm25LVfAQ==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-runtime": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.83.3.tgz", + "integrity": "sha512-JHCJb9ebr9rfJ+LcssFYA2x1qPYuSD/bbePupIGhpMrsla7RCwC/VL3yJ9cSU+nUhU4c9Ixxy8tBta+JbDeZWw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.25.0", + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-source-map": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.83.3.tgz", + "integrity": "sha512-xkC3qwUBh2psVZgVavo8+r2C9Igkk3DibiOXSAht1aYRRcztEZNFtAMtfSB7sdO2iFMx2Mlyu++cBxz/fhdzQg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.3", + "@babel/traverse--for-generate-function-map": "npm:@babel/traverse@^7.25.3", + "@babel/types": "^7.25.2", + "flow-enums-runtime": "^0.0.6", + "invariant": "^2.2.4", + "metro-symbolicate": "0.83.3", + "nullthrows": "^1.1.1", + "ob1": "0.83.3", + "source-map": "^0.5.6", + "vlq": "^1.0.0" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-source-map/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/metro-symbolicate": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.83.3.tgz", + "integrity": "sha512-F/YChgKd6KbFK3eUR5HdUsfBqVsanf5lNTwFd4Ca7uuxnHgBC3kR/Hba/RGkenR3pZaGNp5Bu9ZqqP52Wyhomw==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6", + "invariant": "^2.2.4", + "metro-source-map": "0.83.3", + "nullthrows": "^1.1.1", + "source-map": "^0.5.6", + "vlq": "^1.0.0" + }, + "bin": { + "metro-symbolicate": "src/index.js" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-symbolicate/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/metro-transform-plugins": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.83.3.tgz", + "integrity": "sha512-eRGoKJU6jmqOakBMH5kUB7VitEWiNrDzBHpYbkBXW7C5fUGeOd2CyqrosEzbMK5VMiZYyOcNFEphvxk3OXey2A==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/generator": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.3", + "flow-enums-runtime": "^0.0.6", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-transform-worker": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.83.3.tgz", + "integrity": "sha512-Ztekew9t/gOIMZX1tvJOgX7KlSLL5kWykl0Iwu2cL2vKMKVALRl1hysyhUw0vjpAvLFx+Kfq9VLjnHIkW32fPA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/generator": "^7.25.0", + "@babel/parser": "^7.25.3", + "@babel/types": "^7.25.2", + "flow-enums-runtime": "^0.0.6", + "metro": "0.83.3", + "metro-babel-transformer": "0.83.3", + "metro-cache": "0.83.3", + "metro-cache-key": "0.83.3", + "metro-minify-terser": "0.83.3", + "metro-source-map": "0.83.3", + "metro-transform-plugins": "0.83.3", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/metro/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/metro/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "license": "MIT", + "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/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "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==", + "devOptional": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "devOptional": true, + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types/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==", + "license": "MIT", + "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, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "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==", + "license": "MIT" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/nativewind": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/nativewind/-/nativewind-4.2.1.tgz", + "integrity": "sha512-10uUB2Dlli3MH3NDL5nMHqJHz1A3e/E6mzjTj6cl7hHECClJ7HpE6v+xZL+GXdbwQSnWE+UWMIMsNz7yOQkAJQ==", + "license": "MIT", + "dependencies": { + "comment-json": "^4.2.5", + "debug": "^4.3.7", + "react-native-css-interop": "0.2.1" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "tailwindcss": ">3.3.0" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nocache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz", + "integrity": "sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/node-exports-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/node-exports-info/-/node-exports-info-1.6.0.tgz", + "integrity": "sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "array.prototype.flatmap": "^1.3.3", + "es-errors": "^1.3.0", + "object.entries": "^1.1.9", + "semver": "^6.3.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "license": "MIT" + }, + "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==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/antelle" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "license": "BSD-2-Clause", + "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==", + "license": "MIT" + }, + "node_modules/ob1": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.83.3.tgz", + "integrity": "sha512-egUxXCDwoWG06NGCS5s5AdcpnumHKJlfd3HH06P3m9TEMwwScfcY35wpQxbm9oHof+dM/lVH9Rfyu1elTVelSA==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "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, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "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==", + "devOptional": true, + "license": "MIT", + "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/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "devOptional": true, + "license": "MIT", + "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/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "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==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "license": "MIT", + "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, + "license": "MIT", + "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, + "license": "MIT", + "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, + "license": "MIT", + "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, + "license": "MIT", + "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, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.1.0.tgz", + "integrity": "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz", + "integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.1.1" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "jiti": ">=1.21.0", + "postcss": ">=8.0.9", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT" + }, + "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, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.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==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/promise": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "license": "MIT", + "dependencies": { + "asap": "~2.0.6" + } + }, + "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, + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "license": "MIT" + }, + "node_modules/qs": { + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", + "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", + "devOptional": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/query-string": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz", + "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==", + "license": "MIT", + "dependencies": { + "decode-uri-component": "^0.2.2", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/queue": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", + "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", + "license": "MIT", + "dependencies": { + "inherits": "~2.0.3" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/react": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz", + "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-devtools-core": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-6.1.5.tgz", + "integrity": "sha512-ePrwPfxAnB+7hgnEr8vpKxL9cmnp7F322t8oqcPshbIQQhDKgFDW4tjhF2wjVbdXF9O/nyuy3sQWd9JGpiLPvA==", + "license": "MIT", + "dependencies": { + "shell-quote": "^1.6.1", + "ws": "^7" + } + }, + "node_modules/react-devtools-core/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "license": "MIT", + "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/react-freeze": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/react-freeze/-/react-freeze-1.0.4.tgz", + "integrity": "sha512-r4F0Sec0BLxWicc7HEyo2x3/2icUTrRmDjaaRyzzn+7aDyFZliszMDOgLVwSnQnYENOlL1o569Ze2HZefk8clA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": ">=17.0.0" + } + }, + "node_modules/react-i18next": { + "version": "16.5.4", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-16.5.4.tgz", + "integrity": "sha512-6yj+dcfMncEC21QPhOTsW8mOSO+pzFmT6uvU7XXdvM/Cp38zJkmTeMeKmTrmCMD5ToT79FmiE/mRWiYWcJYW4g==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.4", + "html-parse-stringify": "^3.0.1", + "use-sync-external-store": "^1.6.0" + }, + "peerDependencies": { + "i18next": ">= 25.6.2", + "react": ">= 16.8.0", + "typescript": "^5" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, + "node_modules/react-native": { + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.84.0.tgz", + "integrity": "sha512-CcBfucLDHz8MAjQx9kFXasYtpcn8zP1YapUgGtAy0psRZTLShwF9yeh5+ErSgEK2gXV1CCSz7hqCZqx1eMyBLA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@jest/create-cache-key-function": "^29.7.0", + "@react-native/assets-registry": "0.84.0", + "@react-native/codegen": "0.84.0", + "@react-native/community-cli-plugin": "0.84.0", + "@react-native/gradle-plugin": "0.84.0", + "@react-native/js-polyfills": "0.84.0", + "@react-native/normalize-colors": "0.84.0", + "@react-native/virtualized-lists": "0.84.0", + "abort-controller": "^3.0.0", + "anser": "^1.4.9", + "ansi-regex": "^5.0.0", + "babel-jest": "^29.7.0", + "babel-plugin-syntax-hermes-parser": "0.32.0", + "base64-js": "^1.5.1", + "commander": "^12.0.0", + "flow-enums-runtime": "^0.0.6", + "hermes-compiler": "250829098.0.7", + "invariant": "^2.2.4", + "jest-environment-node": "^29.7.0", + "memoize-one": "^5.0.0", + "metro-runtime": "^0.83.3", + "metro-source-map": "^0.83.3", + "nullthrows": "^1.1.1", + "pretty-format": "^29.7.0", + "promise": "^8.3.0", + "react-devtools-core": "^6.1.5", + "react-refresh": "^0.14.0", + "regenerator-runtime": "^0.13.2", + "scheduler": "0.27.0", + "semver": "^7.1.3", + "stacktrace-parser": "^0.1.10", + "tinyglobby": "^0.2.15", + "whatwg-fetch": "^3.0.0", + "ws": "^7.5.10", + "yargs": "^17.6.2" + }, + "bin": { + "react-native": "cli.js" + }, + "engines": { + "node": ">= 20.19.4" + }, + "peerDependencies": { + "@types/react": "^19.1.1", + "react": "^19.2.3" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-native-css-interop": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/react-native-css-interop/-/react-native-css-interop-0.2.1.tgz", + "integrity": "sha512-B88f5rIymJXmy1sNC/MhTkb3xxBej1KkuAt7TiT9iM7oXz3RM8Bn+7GUrfR02TvSgKm4cg2XiSuLEKYfKwNsjA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.22.15", + "@babel/traverse": "^7.23.0", + "@babel/types": "^7.23.0", + "debug": "^4.3.7", + "lightningcss": "~1.27.0", + "semver": "^7.6.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "react": ">=18", + "react-native": "*", + "react-native-reanimated": ">=3.6.2", + "tailwindcss": "~3" + }, + "peerDependenciesMeta": { + "react-native-safe-area-context": { + "optional": true + }, + "react-native-svg": { + "optional": true + } + } + }, + "node_modules/react-native-css-interop/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/react-native-gesture-handler": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.30.0.tgz", + "integrity": "sha512-5YsnKHGa0X9C8lb5oCnKm0fLUPM6CRduvUUw2Bav4RIj/C3HcFh4RIUnF8wgG6JQWCL1//gRx4v+LVWgcIQdGA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@egjs/hammerjs": "^2.0.17", + "hoist-non-react-statics": "^3.3.0", + "invariant": "^2.2.4" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-gifted-charts": { + "version": "1.4.74", + "resolved": "https://registry.npmjs.org/react-native-gifted-charts/-/react-native-gifted-charts-1.4.74.tgz", + "integrity": "sha512-HaTH/sIj7NBR/yOyQkzLjuikwQQW9srUXHpmJ4FARWOp+qUGX5KYyyc1cnxQQyLio+P8Sw8e6ME/LJsvVqmFQA==", + "license": "MIT", + "dependencies": { + "gifted-charts-core": "0.1.78" + }, + "peerDependencies": { + "expo-linear-gradient": "*", + "react": "*", + "react-native": "*", + "react-native-linear-gradient": "*", + "react-native-svg": "*" + }, + "peerDependenciesMeta": { + "expo-linear-gradient": { + "optional": true + }, + "react-native-linear-gradient": { + "optional": true + } + } + }, + "node_modules/react-native-haptic-feedback": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/react-native-haptic-feedback/-/react-native-haptic-feedback-2.3.3.tgz", + "integrity": "sha512-svS4D5PxfNv8o68m9ahWfwje5NqukM3qLS48+WTdhbDkNUkOhP9rDfDSRHzlhk4zq+ISjyw95EhLeh8NkKX5vQ==", + "license": "MIT", + "workspaces": [ + "example" + ], + "peerDependencies": { + "react-native": ">=0.60.0" + } + }, + "node_modules/react-native-is-edge-to-edge": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/react-native-is-edge-to-edge/-/react-native-is-edge-to-edge-1.2.1.tgz", + "integrity": "sha512-FLbPWl/MyYQWz+KwqOZsSyj2JmLKglHatd3xLZWskXOpRaio4LfEDEz8E/A6uD8QoTHW6Aobw1jbEwK7KMgR7Q==", + "license": "MIT", + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-mmkv": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/react-native-mmkv/-/react-native-mmkv-4.1.2.tgz", + "integrity": "sha512-6LHb2DQBXuo96Aues13EugmlWw/HAYuh3KoJoQNrC4JsBwn3J3KiRYAg2mCm5Je0VYq2YsmbgZG7XJwX/WFYZA==", + "license": "MIT", + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-nitro-modules": "*" + } + }, + "node_modules/react-native-nitro-modules": { + "version": "0.33.9", + "resolved": "https://registry.npmjs.org/react-native-nitro-modules/-/react-native-nitro-modules-0.33.9.tgz", + "integrity": "sha512-BM9C5mCGYYjrc8CDWZZ0anLWU/knH2xaEuFzvzogKTOW6fzgS6mmsCdM3ty+AhImJNSYwK19DLrHaqwnrrwEzw==", + "license": "MIT", + "peer": true, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-paper": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/react-native-paper/-/react-native-paper-5.15.0.tgz", + "integrity": "sha512-I/1CQLfW9VM0Oo5I5dQI/hjgf1I6q2S1wwgzAdsv6whAQ3zO97GWHwtgNh9se9j8zBOJ86afPTQKxxUL0IJd9A==", + "license": "MIT", + "workspaces": [ + "example", + "docs" + ], + "dependencies": { + "@callstack/react-theme-provider": "^3.0.9", + "color": "^3.1.2", + "use-latest-callback": "^0.2.3" + }, + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-safe-area-context": "*" + } + }, + "node_modules/react-native-paper/node_modules/color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "node_modules/react-native-paper/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==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/react-native-paper/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/react-native-reanimated": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-4.2.2.tgz", + "integrity": "sha512-o3kKvdD8cVlg12Z4u3jv0MFAt53QV4k7gD9OLwQqU8eZLyd8QvaOjVZIghMZhC2pjP93uUU44PlO5JgF8S4Vxw==", + "license": "MIT", + "peer": true, + "dependencies": { + "react-native-is-edge-to-edge": "1.2.1", + "semver": "7.7.3" + }, + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-worklets": ">=0.7.0" + } + }, + "node_modules/react-native-reanimated/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/react-native-safe-area-context": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-5.6.2.tgz", + "integrity": "sha512-4XGqMNj5qjUTYywJqpdWZ9IG8jgkS3h06sfVjfw5yZQZfWnRFXczi0GnYyFyCc2EBps/qFmoCH8fez//WumdVg==", + "license": "MIT", + "peer": true, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-screens": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-4.23.0.tgz", + "integrity": "sha512-XhO3aK0UeLpBn4kLecd+J+EDeRRJlI/Ro9Fze06vo1q163VeYtzfU9QS09/VyDFMWR1qxDC1iazCArTPSFFiPw==", + "license": "MIT", + "peer": true, + "dependencies": { + "react-freeze": "^1.0.0", + "warn-once": "^0.1.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-sqlite-storage": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/react-native-sqlite-storage/-/react-native-sqlite-storage-6.0.1.tgz", + "integrity": "sha512-1tDFjrint6X6qSYKf3gDyz+XB+X79jfiL6xTugKHPRtF0WvqMtVgdLuNqZunIXjNEvNtNVEbXaeZ6MsguFu00A==", + "license": "MIT", + "peerDependencies": { + "react-native": ">=0.14.0" + } + }, + "node_modules/react-native-svg": { + "version": "15.15.3", + "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-15.15.3.tgz", + "integrity": "sha512-/k4KYwPBLGcx2f5d4FjE+vCScK7QOX14cl2lIASJ28u4slHHtIhL0SZKU7u9qmRBHxTCKPoPBtN6haT1NENJNA==", + "license": "MIT", + "peer": true, + "dependencies": { + "css-select": "^5.1.0", + "css-tree": "^1.1.3", + "warn-once": "0.1.1" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-vector-icons": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-10.3.0.tgz", + "integrity": "sha512-IFQ0RE57819hOUdFvgK4FowM5aMXg7C7XKsuGLevqXkkIJatc3QopN0wYrb2IrzUgmdpfP+QVIbI3S6h7M0btw==", + "deprecated": "react-native-vector-icons package has moved to a new model of per-icon-family packages. See the https://github.com/oblador/react-native-vector-icons/blob/master/MIGRATION.md on how to migrate", + "license": "MIT", + "dependencies": { + "prop-types": "^15.7.2", + "yargs": "^16.1.1" + }, + "bin": { + "fa-upgrade.sh": "bin/fa-upgrade.sh", + "fa5-upgrade": "bin/fa5-upgrade.sh", + "fa6-upgrade": "bin/fa6-upgrade.sh", + "generate-icon": "bin/generate-icon.js" + } + }, + "node_modules/react-native-vector-icons/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==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/react-native-vector-icons/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "license": "MIT", + "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/react-native-vector-icons/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==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/react-native-worklets": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/react-native-worklets/-/react-native-worklets-0.7.4.tgz", + "integrity": "sha512-NYOdM1MwBb3n+AtMqy1tFy3Mn8DliQtd8sbzAVRf9Gc+uvQ0zRfxN7dS8ZzoyX7t6cyQL5THuGhlnX+iFlQTag==", + "license": "MIT", + "dependencies": { + "@babel/plugin-transform-arrow-functions": "7.27.1", + "@babel/plugin-transform-class-properties": "7.27.1", + "@babel/plugin-transform-classes": "7.28.4", + "@babel/plugin-transform-nullish-coalescing-operator": "7.27.1", + "@babel/plugin-transform-optional-chaining": "7.27.1", + "@babel/plugin-transform-shorthand-properties": "7.27.1", + "@babel/plugin-transform-template-literals": "7.27.1", + "@babel/plugin-transform-unicode-regex": "7.27.1", + "@babel/preset-typescript": "7.27.1", + "convert-source-map": "2.0.0", + "semver": "7.7.3" + }, + "peerDependencies": { + "@babel/core": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-worklets/node_modules/@babel/plugin-transform-class-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz", + "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/react-native-worklets/node_modules/@babel/plugin-transform-classes": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.4.tgz", + "integrity": "sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-globals": "^7.28.0", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/traverse": "^7.28.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/react-native-worklets/node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz", + "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/react-native-worklets/node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz", + "integrity": "sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/react-native-worklets/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/react-native/node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/react-native/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/react-native/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "license": "MIT", + "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/react-refresh": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", + "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-test-renderer": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-19.2.3.tgz", + "integrity": "sha512-TMR1LnSFiWZMJkCgNf5ATSvAheTT2NvKIwiVwdBPHxjBI7n/JbWd4gaZ16DVd9foAXdvDz+sB5yxZTwMjPRxpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "react-is": "^19.2.3", + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.3" + } + }, + "node_modules/react-test-renderer/node_modules/react-is": { + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.4.tgz", + "integrity": "sha512-W+EWGn2v0ApPKgKKCy/7s7WHXkboGcsrXE+2joLyVxkbyVQfO3MUEaUQDHoSmb8TFFrSKYa9mw64WZHNHSDzYA==", + "dev": true, + "license": "MIT" + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "devOptional": true, + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", + "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "license": "MIT" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", + "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.2", + "regjsgen": "^0.8.0", + "regjsparser": "^0.13.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.2.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz", + "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==", + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.1.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "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==", + "devOptional": true, + "license": "ISC" + }, + "node_modules/resolve": { + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "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, + "license": "MIT", + "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, + "license": "MIT", + "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==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve.exports": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", + "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", + "dev": true, + "license": "MIT", + "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, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "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==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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" + } + ], + "license": "MIT" + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "license": "MIT" + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.4.1", + "range-parser": "~1.2.1", + "statuses": "~2.0.2" + }, + "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==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/send/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "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==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/send/node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serialize-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", + "integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/serve-static": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "~0.19.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-static/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "devOptional": true, + "license": "ISC" + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/sf-symbols-typescript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/sf-symbols-typescript/-/sf-symbols-typescript-2.2.0.tgz", + "integrity": "sha512-TPbeg0b7ylrswdGCji8FRGFAKuqbpQlLbL8SOle3j1iHSs5Ob5mhvMAxWN2UItOjgALAB5Zp3fmMfj8mbWvXKw==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", + "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "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==", + "license": "ISC" + }, + "node_modules/simple-swizzle": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.4.tgz", + "integrity": "sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.4.tgz", + "integrity": "sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==", + "license": "MIT" + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/slice-ansi/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, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/slice-ansi/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, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/slice-ansi/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "devOptional": true, + "license": "MIT" + }, + "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==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "license": "BSD-3-Clause" + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", + "license": "MIT" + }, + "node_modules/stacktrace-parser": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.11.tgz", + "integrity": "sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==", + "license": "MIT", + "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==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "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, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "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, + "license": "MIT", + "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, + "license": "MIT" + }, + "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==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "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==", + "license": "MIT", + "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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strnum": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz", + "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==", + "devOptional": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, + "node_modules/sucrase": { + "version": "3.35.1", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz", + "integrity": "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "tinyglobby": "^0.2.11", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.19", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.19.tgz", + "integrity": "sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.6.0", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.2", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.7", + "lilconfig": "^3.1.3", + "micromatch": "^4.0.8", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.2 || ^5.0 || ^6.0", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/terser": { + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.0.tgz", + "integrity": "sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==", + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/terser/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==", + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "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==", + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/test-exclude/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/test-exclude/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "license": "BSD-3-Clause" + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/ts-api-utils": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz", + "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "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==", + "license": "Apache-2.0" + }, + "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, + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "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, + "license": "(MIT OR CC0-1.0)", + "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, + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "devOptional": true, + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "license": "MIT" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "license": "MIT", + "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==", + "license": "MIT", + "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.2.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", + "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/use-latest-callback": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/use-latest-callback/-/use-latest-callback-0.2.6.tgz", + "integrity": "sha512-FvRG9i1HSo0wagmX63Vrm8SnlUU3LMM3WyZkQ76RnslpBrX694AdG4A0zQBx2B3ZifFA0yv/BaEHGBnEax5rZg==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/use-sync-external-store": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-13.0.0.tgz", + "integrity": "sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist-node/bin/uuid" + } + }, + "node_modules/v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "dev": true, + "license": "ISC", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vlq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz", + "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==", + "license": "MIT" + }, + "node_modules/void-elements": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "license": "Apache-2.0", + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/warn-once": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/warn-once/-/warn-once-0.1.1.tgz", + "integrity": "sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q==", + "license": "MIT" + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/whatwg-fetch": { + "version": "3.6.20", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", + "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", + "license": "MIT" + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "devOptional": true, + "license": "ISC" + }, + "node_modules/which-typed-array": { + "version": "1.1.20", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", + "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/ws": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", + "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", + "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", + "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-validation-error": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-4.0.2.tgz", + "integrity": "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "zod": "^3.25.0 || ^4.0.0" + } + }, + "node_modules/zustand": { + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.11.tgz", + "integrity": "sha512-fdZY+dk7zn/vbWNCYmzZULHRrss0jx5pPFiOuMZ/5HJN6Yv3u+1Wswy/4MpZEkEGhtNH+pwxZB8OKgUBPzYAGg==", + "license": "MIT", + "engines": { + "node": ">=12.20.0" + }, + "peerDependencies": { + "@types/react": ">=18.0.0", + "immer": ">=9.0.6", + "react": ">=18.0.0", + "use-sync-external-store": ">=1.2.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + }, + "use-sync-external-store": { + "optional": true + } + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..27c897b --- /dev/null +++ b/package.json @@ -0,0 +1,70 @@ +{ + "name": "Expensso", + "version": "0.0.1", + "private": true, + "scripts": { + "android": "react-native run-android", + "ios": "react-native run-ios", + "lint": "eslint .", + "start": "react-native start", + "test": "jest", + "build:release": "cd android && ./gradlew assembleRelease --no-daemon", + "build:release:aab": "cd android && ./gradlew bundleRelease --no-daemon" + }, + "dependencies": { + "@gorhom/bottom-sheet": "^5.2.8", + "@react-native/new-app-screen": "0.84.0", + "@react-navigation/bottom-tabs": "^7.14.0", + "@react-navigation/native": "^7.1.28", + "@react-navigation/stack": "^7.7.2", + "@tanstack/react-query": "^5.90.21", + "dayjs": "^1.11.19", + "i18next": "^25.8.10", + "nativewind": "^4.2.1", + "react": "19.2.3", + "react-i18next": "^16.5.4", + "react-native": "0.84.0", + "react-native-gesture-handler": "^2.30.0", + "react-native-gifted-charts": "^1.4.74", + "react-native-haptic-feedback": "^2.3.3", + "react-native-mmkv": "^4.1.2", + "react-native-nitro-modules": "^0.33.9", + "react-native-paper": "^5.15.0", + "react-native-reanimated": "^4.2.2", + "react-native-safe-area-context": "^5.6.2", + "react-native-screens": "^4.23.0", + "react-native-sqlite-storage": "^6.0.1", + "react-native-svg": "^15.15.3", + "react-native-vector-icons": "^10.3.0", + "react-native-worklets": "^0.7.4", + "uuid": "^13.0.0", + "zustand": "^5.0.11" + }, + "devDependencies": { + "@babel/core": "^7.25.2", + "@babel/preset-env": "^7.25.3", + "@babel/runtime": "^7.25.0", + "@react-native-community/cli": "20.1.0", + "@react-native-community/cli-platform-android": "20.1.0", + "@react-native-community/cli-platform-ios": "20.1.0", + "@react-native/babel-preset": "0.84.0", + "@react-native/eslint-config": "0.84.0", + "@react-native/metro-config": "0.84.0", + "@react-native/typescript-config": "0.84.0", + "@types/jest": "^29.5.13", + "@types/react": "^19.2.0", + "@types/react-native-sqlite-storage": "^6.0.5", + "@types/react-native-vector-icons": "^6.4.18", + "@types/react-test-renderer": "^19.1.0", + "@types/uuid": "^10.0.0", + "eslint": "^8.19.0", + "jest": "^29.6.3", + "prettier": "2.8.8", + "react-test-renderer": "19.2.3", + "tailwindcss": "^3.4.19", + "typescript": "^5.8.3" + }, + "engines": { + "node": ">= 22.11.0" + } +} diff --git a/src/components/CustomBottomSheet.tsx b/src/components/CustomBottomSheet.tsx new file mode 100644 index 0000000..1537e6f --- /dev/null +++ b/src/components/CustomBottomSheet.tsx @@ -0,0 +1,433 @@ +/** + * CustomBottomSheet — replaces ALL system Alert/Modal patterns. + * + * Built on @gorhom/bottom-sheet with MD3 styling, drag-handle, + * scrim overlay, and smooth reanimated transitions. + * + * Usage: + * + * + * + * + * Imperative API: + * sheetRef.current?.present() – open + * sheetRef.current?.dismiss() – close + */ + +import React, { + forwardRef, + useCallback, + useImperativeHandle, + useMemo, + useRef, +} from 'react'; +import { + View, + Text, + StyleSheet, + TouchableOpacity, + Pressable, +} from 'react-native'; +import BottomSheet, { + BottomSheetBackdrop, + BottomSheetScrollView, + BottomSheetView, + type BottomSheetBackdropProps, +} from '@gorhom/bottom-sheet'; +import ReactNativeHapticFeedback from 'react-native-haptic-feedback'; +import {useTheme} from '../theme'; +import type {MD3Theme} from '../theme'; + +const hapticOptions = {enableVibrateFallback: true, ignoreAndroidSystemSettings: false}; +export const triggerHaptic = (type: 'impactLight' | 'impactMedium' | 'selection' | 'notificationSuccess' = 'impactLight') => + ReactNativeHapticFeedback.trigger(type, hapticOptions); + +// ─── Public Handle ─────────────────────────────────────────────────── + +export interface CustomBottomSheetHandle { + present: () => void; + dismiss: () => void; +} + +// ─── Props ─────────────────────────────────────────────────────────── + +export interface CustomBottomSheetProps { + /** Title displayed in the sheet header */ + title?: string; + /** Snap-point percentages or absolute values */ + snapPoints?: (string | number)[]; + /** Callback when the sheet is fully closed */ + onDismiss?: () => void; + /** Whether to wrap children in a ScrollView (default: true) */ + scrollable?: boolean; + /** Header left action (e.g. Cancel) */ + headerLeft?: {label: string; onPress: () => void}; + /** Header right action (e.g. Save) */ + headerRight?: {label: string; onPress: () => void; color?: string}; + /** Content */ + children: React.ReactNode; + /** Enable dynamic sizing instead of snapPoints */ + enableDynamicSizing?: boolean; +} + +// ─── Component ─────────────────────────────────────────────────────── + +const CustomBottomSheetInner = forwardRef( + ( + { + title, + snapPoints: snapPointsProp, + onDismiss, + scrollable = true, + headerLeft, + headerRight, + children, + enableDynamicSizing = false, + }, + ref, + ) => { + const theme = useTheme(); + const s = makeStyles(theme); + const sheetRef = useRef(null); + const snapPoints = useMemo(() => snapPointsProp ?? ['60%'], [snapPointsProp]); + + // Imperative handle + useImperativeHandle(ref, () => ({ + present: () => { + triggerHaptic('impactMedium'); + sheetRef.current?.snapToIndex(0); + }, + dismiss: () => { + triggerHaptic('impactLight'); + sheetRef.current?.close(); + }, + })); + + // Backdrop with scrim + const renderBackdrop = useCallback( + (props: BottomSheetBackdropProps) => ( + + ), + [], + ); + + // Handle indicator + const renderHandle = useCallback( + () => ( + + + + ), + [s], + ); + + const Wrapper = scrollable ? BottomSheetScrollView : BottomSheetView; + + return ( + + {/* Sheet Header */} + {(title || headerLeft || headerRight) && ( + + {headerLeft ? ( + + {headerLeft.label} + + ) : ( + + )} + {title ? {title} : } + {headerRight ? ( + + + {headerRight.label} + + + ) : ( + + )} + + )} + + {/* Sheet Body */} + + {children} + + + ); + }, +); + +CustomBottomSheetInner.displayName = 'CustomBottomSheet'; + +export const CustomBottomSheet = CustomBottomSheetInner; + +// ─── Styles ────────────────────────────────────────────────────────── + +function makeStyles(theme: MD3Theme) { + const {colors, typography, shape, spacing} = theme; + return StyleSheet.create({ + container: { + zIndex: 999, + }, + background: { + backgroundColor: colors.surfaceContainerLow, + borderTopLeftRadius: shape.extraLarge, + borderTopRightRadius: shape.extraLarge, + }, + handleContainer: { + alignItems: 'center', + paddingTop: spacing.sm, + paddingBottom: spacing.xs, + }, + handle: { + width: 32, + height: 4, + borderRadius: 2, + backgroundColor: colors.onSurfaceVariant, + opacity: 0.4, + }, + header: { + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + paddingHorizontal: spacing.xl, + paddingTop: spacing.sm, + paddingBottom: spacing.md, + borderBottomWidth: 1, + borderBottomColor: colors.outlineVariant, + }, + headerTitle: { + ...typography.titleMedium, + color: colors.onSurface, + fontWeight: '600', + }, + headerLeftText: { + ...typography.labelLarge, + color: colors.onSurfaceVariant, + }, + headerRightText: { + ...typography.labelLarge, + color: colors.primary, + fontWeight: '600', + }, + headerPlaceholder: { + width: 48, + }, + body: { + flex: 1, + }, + bodyContent: { + paddingHorizontal: spacing.xl, + paddingTop: spacing.lg, + paddingBottom: spacing.xxxl + 20, + }, + }); +} + +// ─── Convenience Sub-Components ────────────────────────────────────── + +/** + * MD3-styled text input for use inside bottom sheets. + */ +export interface BottomSheetInputProps { + label: string; + value: string; + onChangeText: (text: string) => void; + placeholder?: string; + keyboardType?: 'default' | 'decimal-pad' | 'number-pad' | 'email-address'; + error?: string; + multiline?: boolean; + prefix?: string; + autoFocus?: boolean; +} + +import {TextInput} from 'react-native'; + +export const BottomSheetInput: React.FC = ({ + label, + value, + onChangeText, + placeholder, + keyboardType = 'default', + error, + multiline = false, + prefix, + autoFocus = false, +}) => { + const theme = useTheme(); + const {colors, typography, shape, spacing} = theme; + const [focused, setFocused] = React.useState(false); + + const borderColor = error + ? colors.error + : focused + ? colors.primary + : colors.outline; + + return ( + + + {label} + + + {prefix && ( + + {prefix} + + )} + setFocused(true)} + onBlur={() => setFocused(false)} + /> + + {error && ( + + {error} + + )} + + ); +}; + +/** + * MD3 chip selector row for use inside bottom sheets. + */ +export interface BottomSheetChipSelectorProps { + label?: string; + options: {value: T; label: string; icon?: string}[]; + selected: T; + onSelect: (value: T) => void; +} + +import Icon from 'react-native-vector-icons/MaterialCommunityIcons'; + +export function BottomSheetChipSelector({ + label, + options, + selected, + onSelect, +}: BottomSheetChipSelectorProps) { + const theme = useTheme(); + const {colors, typography, shape, spacing} = theme; + + return ( + + {label && ( + + {label} + + )} + + {options.map(opt => { + const isSelected = opt.value === selected; + return ( + { + triggerHaptic('selection'); + onSelect(opt.value); + }} + style={{ + flexDirection: 'row', + alignItems: 'center', + paddingHorizontal: spacing.md, + paddingVertical: spacing.sm, + borderRadius: shape.small, + borderWidth: 1, + borderColor: isSelected ? colors.primary : colors.outlineVariant, + backgroundColor: isSelected + ? colors.primaryContainer + : colors.surfaceContainerLowest, + }}> + {opt.icon && ( + + )} + + {opt.label} + + + ); + })} + + + ); +} diff --git a/src/components/EmptyState.tsx b/src/components/EmptyState.tsx new file mode 100644 index 0000000..f7bfe28 --- /dev/null +++ b/src/components/EmptyState.tsx @@ -0,0 +1,43 @@ +import React from 'react'; +import {View, Text, StyleSheet} from 'react-native'; +import Icon from 'react-native-vector-icons/MaterialCommunityIcons'; +import {useTheme} from '../theme'; + +interface EmptyStateProps { + icon: string; + title: string; + subtitle?: string; +} + +export const EmptyState: React.FC = ({icon, title, subtitle}) => { + const {colors} = useTheme(); + return ( + + + {title} + {subtitle ? {subtitle} : null} + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + paddingVertical: 60, + paddingHorizontal: 32, + }, + title: { + fontSize: 17, + fontWeight: '600', + marginTop: 16, + textAlign: 'center', + }, + subtitle: { + fontSize: 14, + marginTop: 6, + textAlign: 'center', + lineHeight: 20, + }, +}); diff --git a/src/components/SectionHeader.tsx b/src/components/SectionHeader.tsx new file mode 100644 index 0000000..011fa38 --- /dev/null +++ b/src/components/SectionHeader.tsx @@ -0,0 +1,54 @@ +import React from 'react'; +import {View, Text, StyleSheet, Pressable, ViewStyle} from 'react-native'; +import Icon from 'react-native-vector-icons/MaterialCommunityIcons'; +import {useTheme} from '../theme'; + +interface SectionHeaderProps { + title: string; + actionLabel?: string; + onAction?: () => void; + style?: ViewStyle; +} + +export const SectionHeader: React.FC = ({ + title, + actionLabel, + onAction, + style, +}) => { + const {colors} = useTheme(); + return ( + + {title} + {actionLabel && onAction ? ( + + {actionLabel} + + + ) : null} + + ); +}; + +const styles = StyleSheet.create({ + container: { + flexDirection: 'row', + justifyContent: 'space-between', + alignItems: 'center', + paddingHorizontal: 20, + paddingTop: 24, + paddingBottom: 12, + }, + title: { + fontSize: 18, + fontWeight: '700', + }, + action: { + flexDirection: 'row', + alignItems: 'center', + }, + actionLabel: { + fontSize: 15, + fontWeight: '600', + }, +}); diff --git a/src/components/SummaryCard.tsx b/src/components/SummaryCard.tsx new file mode 100644 index 0000000..5c02149 --- /dev/null +++ b/src/components/SummaryCard.tsx @@ -0,0 +1,69 @@ +import React from 'react'; +import {View, Text, StyleSheet, ViewStyle} from 'react-native'; +import {useTheme} from '../theme'; + +interface SummaryCardProps { + title: string; + value: string; + subtitle?: string; + icon?: React.ReactNode; + valueColor?: string; + style?: ViewStyle; +} + +export const SummaryCard: React.FC = ({ + title, + value, + subtitle, + icon, + valueColor, + style, +}) => { + const {colors, typography, elevation, shape, spacing} = useTheme(); + return ( + + + {icon && {icon}} + {title} + + + {value} + + {subtitle ? {subtitle} : null} + + ); +}; + +const styles = StyleSheet.create({ + card: { + borderRadius: 16, + padding: 16, + shadowColor: '#000', + shadowOffset: {width: 0, height: 2}, + shadowOpacity: 0.06, + shadowRadius: 8, + elevation: 3, + }, + cardHeader: { + flexDirection: 'row', + alignItems: 'center', + marginBottom: 8, + }, + iconContainer: { + marginRight: 8, + }, + cardTitle: { + fontSize: 14, + fontWeight: '500', + letterSpacing: 0.2, + }, + cardValue: { + fontSize: 26, + fontWeight: '700', + marginBottom: 2, + }, + cardSubtitle: { + fontSize: 13, + marginTop: 2, + }, +}); diff --git a/src/components/TransactionItem.tsx b/src/components/TransactionItem.tsx new file mode 100644 index 0000000..ffdd42d --- /dev/null +++ b/src/components/TransactionItem.tsx @@ -0,0 +1,106 @@ +import React from 'react'; +import {View, Text, StyleSheet, Pressable} from 'react-native'; +import Icon from 'react-native-vector-icons/MaterialCommunityIcons'; +import {Transaction} from '../types'; +import {formatCurrency} from '../utils'; +import {useSettingsStore} from '../store'; +import {useTheme} from '../theme'; + +interface TransactionItemProps { + transaction: Transaction; + onPress?: (transaction: Transaction) => void; +} + +export const TransactionItem: React.FC = ({ + transaction, + onPress, +}) => { + const baseCurrency = useSettingsStore(s => s.baseCurrency); + const {colors} = useTheme(); + const isExpense = transaction.type === 'expense'; + + return ( + onPress?.(transaction)} + android_ripple={{color: colors.primary + '12'}}> + + + + + + + {transaction.categoryName || 'Uncategorized'} + + + {transaction.paymentMethod} + {transaction.note ? ` · ${transaction.note}` : ''} + + + + + + {isExpense ? '-' : '+'} + {formatCurrency(transaction.amount, baseCurrency)} + + + {new Date(transaction.date).toLocaleDateString('en-IN', { + day: 'numeric', + month: 'short', + })} + + + + ); +}; + +const styles = StyleSheet.create({ + container: { + flexDirection: 'row', + alignItems: 'center', + paddingVertical: 14, + paddingHorizontal: 18, + }, + iconCircle: { + width: 44, + height: 44, + borderRadius: 22, + justifyContent: 'center', + alignItems: 'center', + }, + details: { + flex: 1, + marginLeft: 12, + }, + categoryName: { + fontSize: 16, + fontWeight: '600', + }, + meta: { + fontSize: 13, + marginTop: 2, + }, + amountContainer: { + alignItems: 'flex-end', + }, + amount: { + fontSize: 16, + fontWeight: '700', + }, + date: { + fontSize: 12, + marginTop: 2, + }, +}); diff --git a/src/components/dashboard/AssetChipRow.tsx b/src/components/dashboard/AssetChipRow.tsx new file mode 100644 index 0000000..8ce8cb6 --- /dev/null +++ b/src/components/dashboard/AssetChipRow.tsx @@ -0,0 +1,164 @@ +/** + * AssetChipRow — Horizontal scrolling chip/card row + * showing quick totals for Bank, Stocks, Gold, Debt, etc. + */ + +import React from 'react'; +import {View, Text, StyleSheet, ScrollView} from 'react-native'; +import Icon from 'react-native-vector-icons/MaterialCommunityIcons'; +import Animated, {FadeInRight} from 'react-native-reanimated'; + +import {useTheme} from '../../theme'; +import type {MD3Theme} from '../../theme'; +import {formatCompact} from '../../utils'; +import type {Asset, Liability, Currency} from '../../types'; + +interface AssetChipRowProps { + assets: Asset[]; + liabilities: Liability[]; + currency: Currency; +} + +const ASSET_ICONS: Record = { + Bank: {icon: 'bank', color: '#1E88E5'}, + Stocks: {icon: 'chart-line', color: '#7E57C2'}, + Gold: {icon: 'gold', color: '#D4AF37'}, + EPF: {icon: 'shield-account', color: '#00ACC1'}, + 'Real Estate': {icon: 'home-city', color: '#8D6E63'}, + 'Mutual Funds': {icon: 'chart-areaspline', color: '#26A69A'}, + 'Fixed Deposit': {icon: 'safe', color: '#3949AB'}, + PPF: {icon: 'piggy-bank', color: '#43A047'}, + Other: {icon: 'dots-horizontal', color: '#78909C'}, +}; + +export const AssetChipRow: React.FC = ({ + assets, + liabilities, + currency, +}) => { + const theme = useTheme(); + const s = makeStyles(theme); + + // Group assets by type and sum values + const groupedAssets = assets.reduce>((acc, a) => { + acc[a.type] = (acc[a.type] || 0) + a.currentValue; + return acc; + }, {}); + + // Sum total liabilities + const totalDebt = liabilities.reduce((sum, l) => sum + l.outstandingAmount, 0); + + const chips: {label: string; value: number; icon: string; iconColor: string; isDebt?: boolean}[] = []; + + Object.entries(groupedAssets).forEach(([type, value]) => { + const visual = ASSET_ICONS[type] || ASSET_ICONS.Other; + chips.push({ + label: type, + value, + icon: visual.icon, + iconColor: visual.color, + }); + }); + + if (totalDebt > 0) { + chips.push({ + label: 'Debt', + value: totalDebt, + icon: 'credit-card-clock', + iconColor: theme.colors.error, + isDebt: true, + }); + } + + if (chips.length === 0) return null; + + return ( + + Portfolio Breakdown + + {chips.map((chip, idx) => ( + + + + + + + {chip.label} + + + {chip.isDebt ? '-' : ''} + {formatCompact(chip.value, currency)} + + + + ))} + + + ); +}; + +function makeStyles(theme: MD3Theme) { + const {colors, typography, shape, spacing} = theme; + return StyleSheet.create({ + container: { + marginTop: spacing.xl, + }, + sectionLabel: { + ...typography.labelMedium, + color: colors.onSurfaceVariant, + letterSpacing: 0.8, + textTransform: 'uppercase', + marginLeft: spacing.xl, + marginBottom: spacing.sm, + }, + scrollContent: { + paddingHorizontal: spacing.xl, + gap: spacing.sm, + }, + chip: { + backgroundColor: colors.surfaceContainerLow, + borderRadius: shape.medium, + borderWidth: 1, + borderColor: colors.outlineVariant, + padding: spacing.md, + minWidth: 110, + alignItems: 'flex-start', + }, + chipIconBg: { + width: 32, + height: 32, + borderRadius: shape.small, + justifyContent: 'center', + alignItems: 'center', + marginBottom: spacing.sm, + }, + chipLabel: { + ...typography.labelSmall, + color: colors.onSurfaceVariant, + marginBottom: 2, + }, + chipValue: { + ...typography.titleSmall, + color: colors.onSurface, + fontWeight: '700', + }, + }); +} diff --git a/src/components/dashboard/FinancialHealthGauges.tsx b/src/components/dashboard/FinancialHealthGauges.tsx new file mode 100644 index 0000000..ff4e91b --- /dev/null +++ b/src/components/dashboard/FinancialHealthGauges.tsx @@ -0,0 +1,277 @@ +/** + * FinancialHealthGauges — Monthly Budget vs. Spent progress bars + * and savings rate indicator. + */ + +import React from 'react'; +import {View, Text, StyleSheet} from 'react-native'; +import Icon from 'react-native-vector-icons/MaterialCommunityIcons'; +import Animated, {FadeInUp} from 'react-native-reanimated'; + +import {useTheme} from '../../theme'; +import type {MD3Theme} from '../../theme'; +import {formatCompact} from '../../utils'; +import type {Currency} from '../../types'; + +interface FinancialHealthGaugesProps { + monthlyIncome: number; + monthlyExpense: number; + currency: Currency; + /** Optional monthly budget target. Defaults to income. */ + monthlyBudget?: number; +} + +export const FinancialHealthGauges: React.FC = ({ + monthlyIncome, + monthlyExpense, + currency, + monthlyBudget, +}) => { + const theme = useTheme(); + const s = makeStyles(theme); + + const budget = monthlyBudget || monthlyIncome; + const savingsRate = + monthlyIncome > 0 + ? (((monthlyIncome - monthlyExpense) / monthlyIncome) * 100).toFixed(0) + : '0'; + const spentPercent = budget > 0 ? Math.min((monthlyExpense / budget) * 100, 100) : 0; + const remaining = Math.max(budget - monthlyExpense, 0); + + const spentColor = + spentPercent > 90 + ? theme.colors.error + : spentPercent > 70 + ? theme.colors.warning + : theme.colors.success; + + return ( + + Financial Health + + + {/* Budget Gauge */} + + + + Budget + + + {/* Progress Bar */} + + + + + + + {formatCompact(monthlyExpense, currency)} spent + + + {formatCompact(remaining, currency)} left + + + + + {/* Savings Rate Gauge */} + + + = 20 + ? theme.colors.success + : theme.colors.warning + } + /> + Savings + + + = 20 + ? theme.colors.success + : Number(savingsRate) >= 0 + ? theme.colors.warning + : theme.colors.error, + }, + ]}> + {savingsRate}% + + of income saved + + + + {/* Income vs Expense Bar */} + + + + + Income + + {formatCompact(monthlyIncome, currency)} + + + + + Expense + + {formatCompact(monthlyExpense, currency)} + + + + + {/* Dual progress bar */} + + {monthlyIncome > 0 && ( + + )} + {monthlyExpense > 0 && ( + + )} + + + + ); +}; + +function makeStyles(theme: MD3Theme) { + const {colors, typography, elevation, shape, spacing} = theme; + return StyleSheet.create({ + container: { + marginTop: spacing.xl, + marginHorizontal: spacing.xl, + }, + sectionTitle: { + ...typography.titleSmall, + color: colors.onSurface, + fontWeight: '600', + marginBottom: spacing.md, + }, + cardsRow: { + flexDirection: 'row', + gap: spacing.md, + }, + gaugeCard: { + flex: 1, + backgroundColor: colors.surfaceContainerLow, + borderRadius: shape.medium, + padding: spacing.lg, + ...elevation.level1, + }, + gaugeHeader: { + flexDirection: 'row', + alignItems: 'center', + gap: spacing.xs, + marginBottom: spacing.md, + }, + gaugeLabel: { + ...typography.labelMedium, + color: colors.onSurfaceVariant, + }, + progressTrack: { + height: 8, + backgroundColor: colors.surfaceContainerHighest, + borderRadius: 4, + overflow: 'hidden', + marginBottom: spacing.sm, + }, + progressFill: { + height: 8, + borderRadius: 4, + }, + gaugeFooter: { + flexDirection: 'row', + justifyContent: 'space-between', + }, + gaugeSpent: { + ...typography.labelSmall, + color: colors.onSurfaceVariant, + }, + gaugeRemaining: { + ...typography.labelSmall, + color: colors.onSurfaceVariant, + }, + savingsRate: { + ...typography.headlineMedium, + fontWeight: '700', + marginBottom: 2, + }, + savingsSub: { + ...typography.labelSmall, + color: colors.onSurfaceVariant, + }, + comparisonCard: { + marginTop: spacing.md, + backgroundColor: colors.surfaceContainerLow, + borderRadius: shape.medium, + padding: spacing.lg, + ...elevation.level1, + }, + comparisonRow: { + flexDirection: 'row', + justifyContent: 'space-around', + marginBottom: spacing.md, + }, + comparisonItem: { + alignItems: 'center', + gap: 2, + }, + comparisonDot: { + width: 8, + height: 8, + borderRadius: 4, + marginBottom: 2, + }, + comparisonLabel: { + ...typography.labelSmall, + color: colors.onSurfaceVariant, + }, + comparisonValue: { + ...typography.titleSmall, + fontWeight: '700', + }, + dualTrack: { + height: 8, + flexDirection: 'row', + borderRadius: 4, + overflow: 'hidden', + backgroundColor: colors.surfaceContainerHighest, + gap: 2, + }, + dualFill: { + height: 8, + }, + }); +} diff --git a/src/components/dashboard/NetWorthHeroCard.tsx b/src/components/dashboard/NetWorthHeroCard.tsx new file mode 100644 index 0000000..22e8ad9 --- /dev/null +++ b/src/components/dashboard/NetWorthHeroCard.tsx @@ -0,0 +1,200 @@ +/** + * NetWorthHeroCard — Sophisticated header showing total net worth + * with a sparkline trend overlaying the background. + */ + +import React, {useMemo} from 'react'; +import {View, Text, StyleSheet} from 'react-native'; +import {LineChart} from 'react-native-gifted-charts'; +import Icon from 'react-native-vector-icons/MaterialCommunityIcons'; +import Animated, {FadeInDown} from 'react-native-reanimated'; + +import {useTheme} from '../../theme'; +import type {MD3Theme} from '../../theme'; +import {formatCurrency, formatCompact} from '../../utils'; +import type {Currency, NetWorthSnapshot} from '../../types'; + +interface NetWorthHeroCardProps { + netWorth: number; + totalAssets: number; + totalLiabilities: number; + currency: Currency; + history: NetWorthSnapshot[]; +} + +export const NetWorthHeroCard: React.FC = ({ + netWorth, + totalAssets, + totalLiabilities, + currency, + history, +}) => { + const theme = useTheme(); + const s = makeStyles(theme); + + const sparklineData = useMemo(() => { + if (history.length < 2) return []; + return history.map(snap => ({ + value: snap.netWorth, + })); + }, [history]); + + const isPositive = netWorth >= 0; + + return ( + + {/* Sparkline Background */} + {sparklineData.length >= 2 && ( + + d.value)) * 0.95} + /> + + )} + + {/* Content Overlay */} + + + + NET WORTH + + + + {formatCurrency(netWorth, currency)} + + + {/* Asset / Liability Split */} + + + + + Assets + + {formatCompact(totalAssets, currency)} + + + + + + + + Liabilities + + {formatCompact(totalLiabilities, currency)} + + + + + + + ); +}; + +function makeStyles(theme: MD3Theme) { + const {colors, typography, elevation, shape, spacing} = theme; + return StyleSheet.create({ + card: { + marginHorizontal: spacing.xl, + marginTop: spacing.md, + borderRadius: shape.extraLarge, + backgroundColor: colors.surfaceContainerLow, + overflow: 'hidden', + ...elevation.level3, + }, + sparklineContainer: { + position: 'absolute', + bottom: 0, + left: 0, + right: 0, + opacity: 0.6, + overflow: 'hidden', + borderRadius: shape.extraLarge, + }, + content: { + padding: spacing.xxl, + }, + labelRow: { + flexDirection: 'row', + alignItems: 'center', + gap: spacing.xs, + marginBottom: spacing.sm, + }, + label: { + ...typography.labelSmall, + color: colors.onSurfaceVariant, + letterSpacing: 1.5, + }, + value: { + ...typography.displaySmall, + fontWeight: '700', + marginBottom: spacing.lg, + }, + splitRow: { + flexDirection: 'row', + alignItems: 'center', + backgroundColor: colors.surfaceContainer, + borderRadius: shape.medium, + padding: spacing.md, + }, + splitItem: { + flex: 1, + flexDirection: 'row', + alignItems: 'center', + gap: spacing.sm, + justifyContent: 'center', + }, + splitDot: { + width: 8, + height: 8, + borderRadius: 4, + }, + splitLabel: { + ...typography.labelSmall, + color: colors.onSurfaceVariant, + }, + splitValue: { + ...typography.titleSmall, + fontWeight: '700', + }, + splitDivider: { + width: 1, + height: 28, + backgroundColor: colors.outlineVariant, + }, + }); +} diff --git a/src/components/dashboard/RecentActivityList.tsx b/src/components/dashboard/RecentActivityList.tsx new file mode 100644 index 0000000..b20277a --- /dev/null +++ b/src/components/dashboard/RecentActivityList.tsx @@ -0,0 +1,223 @@ +/** + * RecentActivityList — "Glassmorphism" elevated surface list of the + * last 5 transactions with high-quality category icons. + */ + +import React from 'react'; +import {View, Text, StyleSheet, Pressable} from 'react-native'; +import Icon from 'react-native-vector-icons/MaterialCommunityIcons'; +import Animated, {FadeInUp} from 'react-native-reanimated'; + +import {useTheme} from '../../theme'; +import type {MD3Theme} from '../../theme'; +import {formatCurrency} from '../../utils'; +import type {Transaction, Currency} from '../../types'; + +// Map common categories to premium Material icons +const CATEGORY_ICONS: Record = { + Groceries: 'cart', + Rent: 'home', + Fuel: 'gas-station', + 'Domestic Help': 'account-group', + Tiffin: 'food', + Utilities: 'lightning-bolt', + 'Mobile Recharge': 'cellphone', + Transport: 'bus', + Shopping: 'shopping', + Medical: 'hospital-box', + Education: 'school', + Entertainment: 'movie', + 'Dining Out': 'silverware-fork-knife', + Subscriptions: 'television-play', + Insurance: 'shield-check', + Salary: 'briefcase', + Freelance: 'laptop', + Investments: 'chart-line', + 'Rental Income': 'home-city', + Dividends: 'cash-multiple', + UPI: 'contactless-payment', +}; + +interface RecentActivityListProps { + transactions: Transaction[]; + currency: Currency; + onViewAll?: () => void; +} + +export const RecentActivityList: React.FC = ({ + transactions, + currency, + onViewAll, +}) => { + const theme = useTheme(); + const s = makeStyles(theme); + + if (transactions.length === 0) { + return ( + + + No recent transactions + Start tracking to see activity here + + ); + } + + return ( + + + Recent Activity + {onViewAll && ( + + View All + + )} + + + + {transactions.slice(0, 5).map((txn, idx) => { + const isExpense = txn.type === 'expense'; + const iconName = + CATEGORY_ICONS[txn.categoryName || ''] || + txn.categoryIcon || + 'dots-horizontal'; + const iconColor = txn.categoryColor || theme.colors.onSurfaceVariant; + + return ( + + + + + + + + {txn.categoryName || 'Uncategorized'} + + + {txn.paymentMethod} + {txn.note ? ` · ${txn.note}` : ''} + + + + + + {isExpense ? '-' : '+'} + {formatCurrency(txn.amount, currency)} + + + {new Date(txn.date).toLocaleDateString('en-IN', { + day: 'numeric', + month: 'short', + })} + + + + ); + })} + + + ); +}; + +function makeStyles(theme: MD3Theme) { + const {colors, typography, elevation, shape, spacing} = theme; + return StyleSheet.create({ + container: { + marginHorizontal: spacing.xl, + marginTop: spacing.xl, + }, + headerRow: { + flexDirection: 'row', + justifyContent: 'space-between', + alignItems: 'center', + marginBottom: spacing.md, + }, + title: { + ...typography.titleSmall, + color: colors.onSurface, + fontWeight: '600', + }, + viewAll: { + ...typography.labelMedium, + color: colors.primary, + }, + glassCard: { + backgroundColor: colors.surfaceContainerLow, + borderRadius: shape.large, + borderWidth: 1, + borderColor: colors.outlineVariant + '40', + overflow: 'hidden', + ...elevation.level2, + }, + txnRow: { + flexDirection: 'row', + alignItems: 'center', + paddingVertical: spacing.md, + paddingHorizontal: spacing.lg, + }, + txnRowBorder: { + borderBottomWidth: 1, + borderBottomColor: colors.outlineVariant + '30', + }, + iconCircle: { + width: 40, + height: 40, + borderRadius: 20, + justifyContent: 'center', + alignItems: 'center', + }, + txnDetails: { + flex: 1, + marginLeft: spacing.md, + }, + txnCategory: { + ...typography.bodyMedium, + color: colors.onSurface, + fontWeight: '500', + }, + txnMeta: { + ...typography.bodySmall, + color: colors.onSurfaceVariant, + marginTop: 1, + }, + txnAmountCol: { + alignItems: 'flex-end', + }, + txnAmount: { + ...typography.titleSmall, + fontWeight: '700', + }, + txnDate: { + ...typography.labelSmall, + color: colors.onSurfaceVariant, + marginTop: 1, + }, + emptyContainer: { + alignItems: 'center', + paddingVertical: spacing.xxxl + 16, + marginHorizontal: spacing.xl, + }, + emptyText: { + ...typography.bodyLarge, + color: colors.onSurfaceVariant, + marginTop: spacing.md, + }, + emptySubtext: { + ...typography.bodySmall, + color: colors.onSurfaceVariant + '80', + marginTop: spacing.xs, + }, + }); +} diff --git a/src/components/dashboard/WealthDistributionChart.tsx b/src/components/dashboard/WealthDistributionChart.tsx new file mode 100644 index 0000000..6c613ea --- /dev/null +++ b/src/components/dashboard/WealthDistributionChart.tsx @@ -0,0 +1,181 @@ +/** + * WealthDistributionChart — Donut chart showing asset allocation: + * Liquid (Bank, FD) vs Equity (Stocks, MF) vs Fixed (Gold, RE, EPF, PPF) + */ + +import React, {useCallback, useMemo} from 'react'; +import {View, Text, StyleSheet} from 'react-native'; +import {PieChart} from 'react-native-gifted-charts'; +import Animated, {FadeInUp} from 'react-native-reanimated'; + +import {useTheme} from '../../theme'; +import type {MD3Theme} from '../../theme'; +import {formatCompact} from '../../utils'; +import type {Asset, Currency} from '../../types'; + +interface WealthDistributionChartProps { + assets: Asset[]; + currency: Currency; +} + +const ALLOCATION_MAP: Record = { + Bank: 'Liquid', + 'Fixed Deposit': 'Liquid', + Stocks: 'Equity', + 'Mutual Funds': 'Equity', + Gold: 'Fixed', + 'Real Estate': 'Fixed', + EPF: 'Fixed', + PPF: 'Fixed', + Other: 'Other', +}; + +const ALLOCATION_COLORS: Record = { + Liquid: {light: '#1E88E5', dark: '#64B5F6'}, + Equity: {light: '#7E57C2', dark: '#CE93D8'}, + Fixed: {light: '#D4AF37', dark: '#FFD54F'}, + Other: {light: '#78909C', dark: '#B0BEC5'}, +}; + +export const WealthDistributionChart: React.FC = ({ + assets, + currency, +}) => { + const theme = useTheme(); + const s = makeStyles(theme); + + const {pieData, totalValue, segments} = useMemo(() => { + const groups: Record = {}; + let total = 0; + + assets.forEach(a => { + const bucket = ALLOCATION_MAP[a.type] || 'Other'; + groups[bucket] = (groups[bucket] || 0) + a.currentValue; + total += a.currentValue; + }); + + const segs = Object.entries(groups) + .filter(([_, v]) => v > 0) + .sort((a, b) => b[1] - a[1]) + .map(([name, value]) => ({ + name, + value, + percentage: total > 0 ? ((value / total) * 100).toFixed(1) : '0', + color: + ALLOCATION_COLORS[name]?.[theme.isDark ? 'dark' : 'light'] || '#78909C', + })); + + const pie = segs.map((seg, idx) => ({ + value: seg.value, + color: seg.color, + text: `${seg.percentage}%`, + focused: idx === 0, + })); + + return {pieData: pie, totalValue: total, segments: segs}; + }, [assets, theme.isDark]); + + const CenterLabel = useCallback(() => ( + + + {formatCompact(totalValue, currency)} + + Total + + ), [totalValue, currency, s]); + + if (pieData.length === 0) return null; + + return ( + + Wealth Distribution + + + + + + {segments.map(seg => ( + + + + {seg.name} + + {formatCompact(seg.value, currency)} · {seg.percentage}% + + + + ))} + + + + ); +}; + +function makeStyles(theme: MD3Theme) { + const {colors, typography, elevation, shape, spacing} = theme; + return StyleSheet.create({ + card: { + marginHorizontal: spacing.xl, + marginTop: spacing.xl, + backgroundColor: colors.surfaceContainerLow, + borderRadius: shape.large, + padding: spacing.xl, + ...elevation.level1, + }, + title: { + ...typography.titleSmall, + color: colors.onSurface, + fontWeight: '600', + marginBottom: spacing.lg, + }, + chartRow: { + flexDirection: 'row', + alignItems: 'center', + gap: spacing.xl, + }, + centerLabel: { + alignItems: 'center', + }, + centerValue: { + ...typography.titleSmall, + color: colors.onSurface, + fontWeight: '700', + }, + centerSubtitle: { + ...typography.labelSmall, + color: colors.onSurfaceVariant, + }, + legend: { + flex: 1, + gap: spacing.md, + }, + legendItem: { + flexDirection: 'row', + alignItems: 'center', + gap: spacing.sm, + }, + legendDot: { + width: 10, + height: 10, + borderRadius: 5, + }, + legendText: { + flex: 1, + }, + legendName: { + ...typography.labelMedium, + color: colors.onSurface, + }, + legendValue: { + ...typography.bodySmall, + color: colors.onSurfaceVariant, + }, + }); +} diff --git a/src/components/dashboard/index.ts b/src/components/dashboard/index.ts new file mode 100644 index 0000000..663903c --- /dev/null +++ b/src/components/dashboard/index.ts @@ -0,0 +1,5 @@ +export {NetWorthHeroCard} from './NetWorthHeroCard'; +export {AssetChipRow} from './AssetChipRow'; +export {WealthDistributionChart} from './WealthDistributionChart'; +export {RecentActivityList} from './RecentActivityList'; +export {FinancialHealthGauges} from './FinancialHealthGauges'; diff --git a/src/components/index.ts b/src/components/index.ts new file mode 100644 index 0000000..c83d4d4 --- /dev/null +++ b/src/components/index.ts @@ -0,0 +1,11 @@ +export {SummaryCard} from './SummaryCard'; +export {TransactionItem} from './TransactionItem'; +export {EmptyState} from './EmptyState'; +export {SectionHeader} from './SectionHeader'; +export { + CustomBottomSheet, + BottomSheetInput, + BottomSheetChipSelector, + triggerHaptic, +} from './CustomBottomSheet'; +export type {CustomBottomSheetHandle} from './CustomBottomSheet'; diff --git a/src/constants/index.ts b/src/constants/index.ts new file mode 100644 index 0000000..f592bc3 --- /dev/null +++ b/src/constants/index.ts @@ -0,0 +1,142 @@ +import {Category, ExchangeRates, PaymentMethod} from '../types'; + +// ─── Default Expense Categories (Indian Context) ──────────────────── + +export const DEFAULT_EXPENSE_CATEGORIES: Omit[] = [ + {name: 'Rent', icon: 'home', color: '#E74C3C', type: 'expense', isDefault: true}, + {name: 'Groceries', icon: 'cart', color: '#2ECC71', type: 'expense', isDefault: true}, + {name: 'Fuel', icon: 'gas-station', color: '#F39C12', type: 'expense', isDefault: true}, + {name: 'Domestic Help', icon: 'account-group', color: '#9B59B6', type: 'expense', isDefault: true}, + {name: 'Tiffin', icon: 'food', color: '#E67E22', type: 'expense', isDefault: true}, + {name: 'Utilities', icon: 'lightning-bolt', color: '#3498DB', type: 'expense', isDefault: true}, + {name: 'Mobile Recharge', icon: 'cellphone', color: '#1ABC9C', type: 'expense', isDefault: true}, + {name: 'Transport', icon: 'bus', color: '#34495E', type: 'expense', isDefault: true}, + {name: 'Shopping', icon: 'shopping', color: '#E91E63', type: 'expense', isDefault: true}, + {name: 'Medical', icon: 'hospital-box', color: '#F44336', type: 'expense', isDefault: true}, + {name: 'Education', icon: 'school', color: '#673AB7', type: 'expense', isDefault: true}, + {name: 'Entertainment', icon: 'movie', color: '#FF9800', type: 'expense', isDefault: true}, + {name: 'Dining Out', icon: 'silverware-fork-knife', color: '#795548', type: 'expense', isDefault: true}, + {name: 'Subscriptions', icon: 'television-play', color: '#607D8B', type: 'expense', isDefault: true}, + {name: 'Insurance', icon: 'shield-check', color: '#4CAF50', type: 'expense', isDefault: true}, + {name: 'Other', icon: 'dots-horizontal', color: '#95A5A6', type: 'expense', isDefault: true}, +]; + +export const DEFAULT_INCOME_CATEGORIES: Omit[] = [ + {name: 'Salary', icon: 'briefcase', color: '#27AE60', type: 'income', isDefault: true}, + {name: 'Freelance', icon: 'laptop', color: '#2980B9', type: 'income', isDefault: true}, + {name: 'Investments', icon: 'chart-line', color: '#8E44AD', type: 'income', isDefault: true}, + {name: 'Rental Income', icon: 'home-city', color: '#D35400', type: 'income', isDefault: true}, + {name: 'Dividends', icon: 'cash-multiple', color: '#16A085', type: 'income', isDefault: true}, + {name: 'Other', icon: 'dots-horizontal', color: '#7F8C8D', type: 'income', isDefault: true}, +]; + +// ─── Payment Methods ───────────────────────────────────────────────── + +export const PAYMENT_METHODS: PaymentMethod[] = [ + 'UPI', + 'Cash', + 'Credit Card', + 'Debit Card', + 'Digital Wallet', + 'Net Banking', + 'Other', +]; + +// ─── Static Exchange Rates (fallback) ──────────────────────────────── + +export const STATIC_EXCHANGE_RATES: ExchangeRates = { + INR: 1, + USD: 84.5, // 1 USD = 84.5 INR + EUR: 91.2, // 1 EUR = 91.2 INR +}; + +// ─── Currency Symbols ──────────────────────────────────────────────── + +export const CURRENCY_SYMBOLS: Record = { + INR: '₹', + USD: '$', + EUR: '€', +}; + +// ─── Theme Colors ──────────────────────────────────────────────────── + +export const COLORS = { + primary: '#0A84FF', + primaryDark: '#0066CC', + secondary: '#5856D6', + success: '#34C759', + danger: '#FF3B30', + warning: '#FF9500', + info: '#5AC8FA', + + background: '#F2F2F7', + surface: '#FFFFFF', + surfaceVariant: '#F8F9FA', + card: '#FFFFFF', + + text: '#000000', + textSecondary: '#6B7280', + textTertiary: '#9CA3AF', + textInverse: '#FFFFFF', + + border: '#E5E7EB', + borderLight: '#F3F4F6', + divider: '#E5E7EB', + + income: '#34C759', + expense: '#FF3B30', + asset: '#0A84FF', + liability: '#FF9500', + + chartColors: [ + '#0A84FF', '#34C759', '#FF9500', '#FF3B30', + '#5856D6', '#AF52DE', '#FF2D55', '#5AC8FA', + '#FFCC00', '#64D2FF', + ], +}; + +export const DARK_COLORS: typeof COLORS = { + primary: '#0A84FF', + primaryDark: '#409CFF', + secondary: '#5E5CE6', + success: '#30D158', + danger: '#FF453A', + warning: '#FF9F0A', + info: '#64D2FF', + + background: '#000000', + surface: '#1C1C1E', + surfaceVariant: '#2C2C2E', + card: '#1C1C1E', + + text: '#FFFFFF', + textSecondary: '#EBEBF5', + textTertiary: '#636366', + textInverse: '#000000', + + border: '#38383A', + borderLight: '#2C2C2E', + divider: '#38383A', + + income: '#30D158', + expense: '#FF453A', + asset: '#0A84FF', + liability: '#FF9F0A', + + chartColors: [ + '#0A84FF', '#30D158', '#FF9F0A', '#FF453A', + '#5E5CE6', '#BF5AF2', '#FF375F', '#64D2FF', + '#FFD60A', '#64D2FF', + ], +}; + +// ─── Date Formats ──────────────────────────────────────────────────── + +export const DATE_FORMATS = { + display: 'DD MMM YYYY', + displayShort: 'DD MMM', + month: 'MMM YYYY', + iso: 'YYYY-MM-DD', + time: 'hh:mm A', + full: 'DD MMM YYYY, hh:mm A', +}; diff --git a/src/db/database.ts b/src/db/database.ts new file mode 100644 index 0000000..0a8e722 --- /dev/null +++ b/src/db/database.ts @@ -0,0 +1,167 @@ +import SQLite, { + SQLiteDatabase, + Transaction as SQLTransaction, + ResultSet, +} from 'react-native-sqlite-storage'; + +// Enable promise-based API +SQLite.enablePromise(true); + +const DATABASE_NAME = 'expensso.db'; +const DATABASE_VERSION = '1.0'; +const DATABASE_DISPLAY_NAME = 'Expensso Database'; +const DATABASE_SIZE = 200000; + +let db: SQLiteDatabase | null = null; + +// ─── Open / Get Database ───────────────────────────────────────────── + +export async function getDatabase(): Promise { + if (db) { + return db; + } + + db = await SQLite.openDatabase({ + name: DATABASE_NAME, + location: 'default', + }); + + await createTables(db); + return db; +} + +// ─── Schema Creation ───────────────────────────────────────────────── + +async function createTables(database: SQLiteDatabase): Promise { + await database.transaction(async (tx: SQLTransaction) => { + // Categories table + tx.executeSql(` + CREATE TABLE IF NOT EXISTS categories ( + id TEXT PRIMARY KEY, + name TEXT NOT NULL, + icon TEXT NOT NULL DEFAULT 'dots-horizontal', + color TEXT NOT NULL DEFAULT '#95A5A6', + type TEXT NOT NULL CHECK(type IN ('income', 'expense')), + is_default INTEGER NOT NULL DEFAULT 0, + created_at TEXT NOT NULL DEFAULT (datetime('now')) + ); + `); + + // Transactions table (the ledger) + tx.executeSql(` + CREATE TABLE IF NOT EXISTS transactions ( + id TEXT PRIMARY KEY, + amount REAL NOT NULL, + currency TEXT NOT NULL DEFAULT 'INR', + type TEXT NOT NULL CHECK(type IN ('income', 'expense')), + category_id TEXT NOT NULL, + payment_method TEXT NOT NULL DEFAULT 'UPI', + note TEXT DEFAULT '', + date TEXT NOT NULL, + created_at TEXT NOT NULL DEFAULT (datetime('now')), + updated_at TEXT NOT NULL DEFAULT (datetime('now')), + FOREIGN KEY (category_id) REFERENCES categories(id) ON DELETE SET NULL + ); + `); + + // Transaction impacts table (links transactions to net-worth entries) + tx.executeSql(` + CREATE TABLE IF NOT EXISTS transaction_impacts ( + transaction_id TEXT PRIMARY KEY, + target_type TEXT NOT NULL CHECK(target_type IN ('asset', 'liability')), + target_id TEXT NOT NULL, + operation TEXT NOT NULL CHECK(operation IN ('add', 'subtract')), + created_at TEXT NOT NULL DEFAULT (datetime('now')), + FOREIGN KEY (transaction_id) REFERENCES transactions(id) ON DELETE CASCADE + ); + `); + + // Assets table + tx.executeSql(` + CREATE TABLE IF NOT EXISTS assets ( + id TEXT PRIMARY KEY, + name TEXT NOT NULL, + type TEXT NOT NULL, + current_value REAL NOT NULL DEFAULT 0, + currency TEXT NOT NULL DEFAULT 'INR', + note TEXT DEFAULT '', + last_updated TEXT NOT NULL DEFAULT (datetime('now')), + created_at TEXT NOT NULL DEFAULT (datetime('now')) + ); + `); + + // Liabilities table + tx.executeSql(` + CREATE TABLE IF NOT EXISTS liabilities ( + id TEXT PRIMARY KEY, + name TEXT NOT NULL, + type TEXT NOT NULL, + outstanding_amount REAL NOT NULL DEFAULT 0, + currency TEXT NOT NULL DEFAULT 'INR', + interest_rate REAL NOT NULL DEFAULT 0, + emi_amount REAL NOT NULL DEFAULT 0, + note TEXT DEFAULT '', + last_updated TEXT NOT NULL DEFAULT (datetime('now')), + created_at TEXT NOT NULL DEFAULT (datetime('now')) + ); + `); + + // Net-worth snapshots for historical tracking + tx.executeSql(` + CREATE TABLE IF NOT EXISTS net_worth_snapshots ( + id TEXT PRIMARY KEY, + total_assets REAL NOT NULL DEFAULT 0, + total_liabilities REAL NOT NULL DEFAULT 0, + net_worth REAL NOT NULL DEFAULT 0, + currency TEXT NOT NULL DEFAULT 'INR', + snapshot_date TEXT NOT NULL, + created_at TEXT NOT NULL DEFAULT (datetime('now')) + ); + `); + + // Indexes for performance + tx.executeSql(` + CREATE INDEX IF NOT EXISTS idx_transactions_date ON transactions(date); + `); + tx.executeSql(` + CREATE INDEX IF NOT EXISTS idx_transactions_type ON transactions(type); + `); + tx.executeSql(` + CREATE INDEX IF NOT EXISTS idx_transactions_category ON transactions(category_id); + `); + tx.executeSql(` + CREATE INDEX IF NOT EXISTS idx_transaction_impacts_target ON transaction_impacts(target_type, target_id); + `); + tx.executeSql(` + CREATE INDEX IF NOT EXISTS idx_snapshots_date ON net_worth_snapshots(snapshot_date); + `); + }); +} + +// ─── Generic Helpers ───────────────────────────────────────────────── + +export async function executeSql( + sql: string, + params: any[] = [], +): Promise { + const database = await getDatabase(); + const [result] = await database.executeSql(sql, params); + return result; +} + +export function rowsToArray(result: ResultSet): T[] { + const rows: T[] = []; + for (let i = 0; i < result.rows.length; i++) { + rows.push(result.rows.item(i) as T); + } + return rows; +} + +// ─── Close Database ────────────────────────────────────────────────── + +export async function closeDatabase(): Promise { + if (db) { + await db.close(); + db = null; + } +} diff --git a/src/db/index.ts b/src/db/index.ts new file mode 100644 index 0000000..381406f --- /dev/null +++ b/src/db/index.ts @@ -0,0 +1,2 @@ +export {getDatabase, executeSql, rowsToArray, closeDatabase} from './database'; +export * from './queries'; diff --git a/src/db/queries.ts b/src/db/queries.ts new file mode 100644 index 0000000..365e0b6 --- /dev/null +++ b/src/db/queries.ts @@ -0,0 +1,445 @@ +import {executeSql, rowsToArray} from './database'; +import { + Category, + Transaction, + Asset, + Liability, + NetWorthSnapshot, + TransactionImpact, + NetWorthTargetType, + ImpactOperation, +} from '../types'; +import {generateId} from '../utils'; +import {DEFAULT_EXPENSE_CATEGORIES, DEFAULT_INCOME_CATEGORIES} from '../constants'; + +// ═══════════════════════════════════════════════════════════════════════ +// CATEGORIES +// ═══════════════════════════════════════════════════════════════════════ + +export async function seedDefaultCategories(): Promise { + const result = await executeSql('SELECT COUNT(*) as count FROM categories'); + const count = result.rows.item(0).count; + + if (count > 0) {return;} + + const allCategories = [...DEFAULT_EXPENSE_CATEGORIES, ...DEFAULT_INCOME_CATEGORIES]; + + for (const cat of allCategories) { + await executeSql( + 'INSERT INTO categories (id, name, icon, color, type, is_default) VALUES (?, ?, ?, ?, ?, ?)', + [generateId(), cat.name, cat.icon, cat.color, cat.type, cat.isDefault ? 1 : 0], + ); + } +} + +export async function getCategories(type?: 'income' | 'expense'): Promise { + let sql = 'SELECT id, name, icon, color, type, is_default as isDefault, created_at as createdAt FROM categories'; + const params: any[] = []; + + if (type) { + sql += ' WHERE type = ?'; + params.push(type); + } + + sql += ' ORDER BY is_default DESC, name ASC'; + const result = await executeSql(sql, params); + return rowsToArray(result); +} + +export async function insertCategory(cat: Omit): Promise { + const id = generateId(); + await executeSql( + 'INSERT INTO categories (id, name, icon, color, type, is_default) VALUES (?, ?, ?, ?, ?, ?)', + [id, cat.name, cat.icon, cat.color, cat.type, cat.isDefault ? 1 : 0], + ); + return id; +} + +// ═══════════════════════════════════════════════════════════════════════ +// TRANSACTIONS +// ═══════════════════════════════════════════════════════════════════════ + +export async function getTransactions(options?: { + type?: 'income' | 'expense'; + fromDate?: string; + toDate?: string; + categoryId?: string; + limit?: number; + offset?: number; +}): Promise { + let sql = ` + SELECT + t.id, t.amount, t.currency, t.type, t.category_id as categoryId, + t.payment_method as paymentMethod, t.note, t.date, + t.created_at as createdAt, t.updated_at as updatedAt, + c.name as categoryName, c.icon as categoryIcon, c.color as categoryColor + FROM transactions t + LEFT JOIN categories c ON t.category_id = c.id + WHERE 1=1 + `; + const params: any[] = []; + + if (options?.type) { + sql += ' AND t.type = ?'; + params.push(options.type); + } + if (options?.fromDate) { + sql += ' AND t.date >= ?'; + params.push(options.fromDate); + } + if (options?.toDate) { + sql += ' AND t.date <= ?'; + params.push(options.toDate); + } + if (options?.categoryId) { + sql += ' AND t.category_id = ?'; + params.push(options.categoryId); + } + + sql += ' ORDER BY t.date DESC, t.created_at DESC'; + + if (options?.limit) { + sql += ' LIMIT ?'; + params.push(options.limit); + } + if (options?.offset) { + sql += ' OFFSET ?'; + params.push(options.offset); + } + + const result = await executeSql(sql, params); + return rowsToArray(result); +} + +export async function getTransactionById(id: string): Promise { + const result = await executeSql( + `SELECT + t.id, t.amount, t.currency, t.type, t.category_id as categoryId, + t.payment_method as paymentMethod, t.note, t.date, + t.created_at as createdAt, t.updated_at as updatedAt, + c.name as categoryName, c.icon as categoryIcon, c.color as categoryColor + FROM transactions t + LEFT JOIN categories c ON t.category_id = c.id + WHERE t.id = ?`, + [id], + ); + + if (result.rows.length === 0) { + return null; + } + + return result.rows.item(0) as Transaction; +} + +export async function insertTransaction( + txn: Omit, +): Promise { + const id = generateId(); + await executeSql( + `INSERT INTO transactions (id, amount, currency, type, category_id, payment_method, note, date) + VALUES (?, ?, ?, ?, ?, ?, ?, ?)`, + [id, txn.amount, txn.currency, txn.type, txn.categoryId, txn.paymentMethod, txn.note, txn.date], + ); + return id; +} + +export async function updateTransaction( + id: string, + txn: Partial>, +): Promise { + const fields: string[] = []; + const params: any[] = []; + + if (txn.amount !== undefined) { fields.push('amount = ?'); params.push(txn.amount); } + if (txn.currency) { fields.push('currency = ?'); params.push(txn.currency); } + if (txn.type) { fields.push('type = ?'); params.push(txn.type); } + if (txn.categoryId) { fields.push('category_id = ?'); params.push(txn.categoryId); } + if (txn.paymentMethod) { fields.push('payment_method = ?'); params.push(txn.paymentMethod); } + if (txn.note !== undefined) { fields.push('note = ?'); params.push(txn.note); } + if (txn.date) { fields.push('date = ?'); params.push(txn.date); } + + fields.push("updated_at = datetime('now')"); + params.push(id); + + await executeSql(`UPDATE transactions SET ${fields.join(', ')} WHERE id = ?`, params); +} + +export async function deleteTransaction(id: string): Promise { + await executeSql('DELETE FROM transactions WHERE id = ?', [id]); +} + +export async function saveTransactionImpact(input: TransactionImpact): Promise { + await executeSql( + `INSERT OR REPLACE INTO transaction_impacts (transaction_id, target_type, target_id, operation) + VALUES (?, ?, ?, ?)`, + [input.transactionId, input.targetType, input.targetId, input.operation], + ); +} + +export async function getTransactionImpact(transactionId: string): Promise { + const result = await executeSql( + `SELECT transaction_id as transactionId, target_type as targetType, target_id as targetId, operation + FROM transaction_impacts + WHERE transaction_id = ?`, + [transactionId], + ); + + if (result.rows.length === 0) { + return null; + } + + return result.rows.item(0) as TransactionImpact; +} + +export async function deleteTransactionImpact(transactionId: string): Promise { + await executeSql('DELETE FROM transaction_impacts WHERE transaction_id = ?', [transactionId]); +} + +export async function applyTargetImpact( + targetType: NetWorthTargetType, + targetId: string, + operation: ImpactOperation, + amount: number, +): Promise { + if (amount <= 0) { + return; + } + + if (targetType === 'asset') { + if (operation === 'add') { + await executeSql( + `UPDATE assets + SET current_value = current_value + ?, + last_updated = datetime('now') + WHERE id = ?`, + [amount, targetId], + ); + return; + } + + await executeSql( + `UPDATE assets + SET current_value = MAX(current_value - ?, 0), + last_updated = datetime('now') + WHERE id = ?`, + [amount, targetId], + ); + return; + } + + if (operation === 'add') { + await executeSql( + `UPDATE liabilities + SET outstanding_amount = outstanding_amount + ?, + last_updated = datetime('now') + WHERE id = ?`, + [amount, targetId], + ); + return; + } + + await executeSql( + `UPDATE liabilities + SET outstanding_amount = MAX(outstanding_amount - ?, 0), + last_updated = datetime('now') + WHERE id = ?`, + [amount, targetId], + ); +} + +export async function reverseTargetImpact(impact: TransactionImpact, amount: number): Promise { + const reverseOperation: ImpactOperation = impact.operation === 'add' ? 'subtract' : 'add'; + await applyTargetImpact(impact.targetType, impact.targetId, reverseOperation, amount); +} + +export async function getMonthlyTotals( + type: 'income' | 'expense', + year: number, + month: number, +): Promise { + const startDate = `${year}-${String(month).padStart(2, '0')}-01`; + const endDate = + month === 12 + ? `${year + 1}-01-01` + : `${year}-${String(month + 1).padStart(2, '0')}-01`; + + const result = await executeSql( + 'SELECT COALESCE(SUM(amount), 0) as total FROM transactions WHERE type = ? AND date >= ? AND date < ?', + [type, startDate, endDate], + ); + return result.rows.item(0).total; +} + +export async function getSpendingByCategory( + fromDate: string, + toDate: string, +): Promise<{categoryName: string; categoryColor: string; categoryIcon: string; total: number}[]> { + const result = await executeSql( + `SELECT c.name as categoryName, c.color as categoryColor, c.icon as categoryIcon, + SUM(t.amount) as total + FROM transactions t + LEFT JOIN categories c ON t.category_id = c.id + WHERE t.type = 'expense' AND t.date >= ? AND t.date < ? + GROUP BY t.category_id + ORDER BY total DESC`, + [fromDate, toDate], + ); + return rowsToArray(result); +} + +export async function getMonthlySpendingTrend(months: number = 6): Promise<{month: string; total: number}[]> { + const result = await executeSql( + `SELECT strftime('%Y-%m', date) as month, SUM(amount) as total + FROM transactions + WHERE type = 'expense' + AND date >= date('now', '-' || ? || ' months') + GROUP BY strftime('%Y-%m', date) + ORDER BY month ASC`, + [months], + ); + return rowsToArray(result); +} + +// ═══════════════════════════════════════════════════════════════════════ +// ASSETS +// ═══════════════════════════════════════════════════════════════════════ + +export async function getAssets(): Promise { + const result = await executeSql( + `SELECT id, name, type, current_value as currentValue, currency, + note, last_updated as lastUpdated, created_at as createdAt + FROM assets + ORDER BY current_value DESC`, + ); + return rowsToArray(result); +} + +export async function insertAsset(asset: Omit): Promise { + const id = generateId(); + await executeSql( + 'INSERT INTO assets (id, name, type, current_value, currency, note) VALUES (?, ?, ?, ?, ?, ?)', + [id, asset.name, asset.type, asset.currentValue, asset.currency, asset.note], + ); + return id; +} + +export async function updateAsset(id: string, asset: Partial>): Promise { + const fields: string[] = []; + const params: any[] = []; + + if (asset.name) { fields.push('name = ?'); params.push(asset.name); } + if (asset.type) { fields.push('type = ?'); params.push(asset.type); } + if (asset.currentValue !== undefined) { fields.push('current_value = ?'); params.push(asset.currentValue); } + if (asset.currency) { fields.push('currency = ?'); params.push(asset.currency); } + if (asset.note !== undefined) { fields.push('note = ?'); params.push(asset.note); } + + fields.push("last_updated = datetime('now')"); + params.push(id); + + await executeSql(`UPDATE assets SET ${fields.join(', ')} WHERE id = ?`, params); +} + +export async function deleteAsset(id: string): Promise { + await executeSql('DELETE FROM assets WHERE id = ?', [id]); +} + +export async function getTotalAssets(): Promise { + const result = await executeSql('SELECT COALESCE(SUM(current_value), 0) as total FROM assets'); + return result.rows.item(0).total; +} + +// ═══════════════════════════════════════════════════════════════════════ +// LIABILITIES +// ═══════════════════════════════════════════════════════════════════════ + +export async function getLiabilities(): Promise { + const result = await executeSql( + `SELECT id, name, type, outstanding_amount as outstandingAmount, currency, + interest_rate as interestRate, emi_amount as emiAmount, + note, last_updated as lastUpdated, created_at as createdAt + FROM liabilities + ORDER BY outstanding_amount DESC`, + ); + return rowsToArray(result); +} + +export async function insertLiability( + liability: Omit, +): Promise { + const id = generateId(); + await executeSql( + `INSERT INTO liabilities (id, name, type, outstanding_amount, currency, interest_rate, emi_amount, note) + VALUES (?, ?, ?, ?, ?, ?, ?, ?)`, + [ + id, liability.name, liability.type, liability.outstandingAmount, + liability.currency, liability.interestRate, liability.emiAmount, liability.note, + ], + ); + return id; +} + +export async function updateLiability( + id: string, + liability: Partial>, +): Promise { + const fields: string[] = []; + const params: any[] = []; + + if (liability.name) { fields.push('name = ?'); params.push(liability.name); } + if (liability.type) { fields.push('type = ?'); params.push(liability.type); } + if (liability.outstandingAmount !== undefined) { fields.push('outstanding_amount = ?'); params.push(liability.outstandingAmount); } + if (liability.currency) { fields.push('currency = ?'); params.push(liability.currency); } + if (liability.interestRate !== undefined) { fields.push('interest_rate = ?'); params.push(liability.interestRate); } + if (liability.emiAmount !== undefined) { fields.push('emi_amount = ?'); params.push(liability.emiAmount); } + if (liability.note !== undefined) { fields.push('note = ?'); params.push(liability.note); } + + fields.push("last_updated = datetime('now')"); + params.push(id); + + await executeSql(`UPDATE liabilities SET ${fields.join(', ')} WHERE id = ?`, params); +} + +export async function deleteLiability(id: string): Promise { + await executeSql('DELETE FROM liabilities WHERE id = ?', [id]); +} + +export async function getTotalLiabilities(): Promise { + const result = await executeSql('SELECT COALESCE(SUM(outstanding_amount), 0) as total FROM liabilities'); + return result.rows.item(0).total; +} + +// ═══════════════════════════════════════════════════════════════════════ +// NET WORTH SNAPSHOTS +// ═══════════════════════════════════════════════════════════════════════ + +export async function saveNetWorthSnapshot( + totalAssets: number, + totalLiabilities: number, + currency: string, +): Promise { + const id = generateId(); + const netWorth = totalAssets - totalLiabilities; + const today = new Date().toISOString().split('T')[0]; + + // Upsert: delete any existing snapshot for today then insert + await executeSql('DELETE FROM net_worth_snapshots WHERE snapshot_date = ?', [today]); + await executeSql( + `INSERT INTO net_worth_snapshots (id, total_assets, total_liabilities, net_worth, currency, snapshot_date) + VALUES (?, ?, ?, ?, ?, ?)`, + [id, totalAssets, totalLiabilities, netWorth, currency, today], + ); + return id; +} + +export async function getNetWorthHistory(months: number = 12): Promise { + const result = await executeSql( + `SELECT id, total_assets as totalAssets, total_liabilities as totalLiabilities, + net_worth as netWorth, currency, snapshot_date as snapshotDate, + created_at as createdAt + FROM net_worth_snapshots + WHERE snapshot_date >= date('now', '-' || ? || ' months') + ORDER BY snapshot_date ASC`, + [months], + ); + return rowsToArray(result); +} diff --git a/src/hooks/index.ts b/src/hooks/index.ts new file mode 100644 index 0000000..b592793 --- /dev/null +++ b/src/hooks/index.ts @@ -0,0 +1,2 @@ +export {useAppInit} from './useAppInit'; +export {useThemeColors, useIsDarkTheme} from './useThemeColors'; diff --git a/src/hooks/useAppInit.ts b/src/hooks/useAppInit.ts new file mode 100644 index 0000000..26c2291 --- /dev/null +++ b/src/hooks/useAppInit.ts @@ -0,0 +1,53 @@ +import {useEffect, useState} from 'react'; +import {getDatabase} from '../db/database'; +import {seedDefaultCategories} from '../db/queries'; +import {useSettingsStore} from '../store/settingsStore'; +import {useExpenseStore} from '../store/expenseStore'; + +/** + * Hook to initialize the app: open DB, seed categories, hydrate settings. + * Returns `isReady` when all initialization is complete. + */ +export function useAppInit(): {isReady: boolean; error: string | null} { + const [isReady, setIsReady] = useState(false); + const [error, setError] = useState(null); + const hydrate = useSettingsStore(s => s.hydrate); + const initialize = useExpenseStore(s => s.initialize); + + useEffect(() => { + let mounted = true; + + async function init() { + try { + // 1. Open SQLite database (creates tables if needed) + await getDatabase(); + + // 2. Seed default categories + await seedDefaultCategories(); + + // 3. Hydrate settings from MMKV + hydrate(); + + // 4. Initialize expense store (load categories) + await initialize(); + + if (mounted) { + setIsReady(true); + } + } catch (err: any) { + console.error('App initialization failed:', err); + if (mounted) { + setError(err.message || 'Initialization failed'); + } + } + } + + init(); + + return () => { + mounted = false; + }; + }, [hydrate, initialize]); + + return {isReady, error}; +} diff --git a/src/hooks/useThemeColors.ts b/src/hooks/useThemeColors.ts new file mode 100644 index 0000000..1cfa39f --- /dev/null +++ b/src/hooks/useThemeColors.ts @@ -0,0 +1,32 @@ +import {useColorScheme} from 'react-native'; +import {useSettingsStore} from '../store'; +import {COLORS, DARK_COLORS} from '../constants'; + +/** + * Returns the appropriate color palette based on the user's theme setting. + * - 'light' → always light + * - 'dark' → always dark + * - 'system' → follows the device setting + */ +export const useThemeColors = (): typeof COLORS => { + const theme = useSettingsStore(s => s.theme); + const systemScheme = useColorScheme(); // 'light' | 'dark' | null + + if (theme === 'dark') return DARK_COLORS; + if (theme === 'light') return COLORS; + + // system + return systemScheme === 'dark' ? DARK_COLORS : COLORS; +}; + +/** + * Returns true when the resolved theme is dark. + */ +export const useIsDarkTheme = (): boolean => { + const theme = useSettingsStore(s => s.theme); + const systemScheme = useColorScheme(); + + if (theme === 'dark') return true; + if (theme === 'light') return false; + return systemScheme === 'dark'; +}; diff --git a/src/i18n/en.ts b/src/i18n/en.ts new file mode 100644 index 0000000..0c7ee97 --- /dev/null +++ b/src/i18n/en.ts @@ -0,0 +1,99 @@ +export default { + translation: { + // ─── Common ─── + common: { + save: 'Save', + cancel: 'Cancel', + delete: 'Delete', + edit: 'Edit', + add: 'Add', + done: 'Done', + confirm: 'Confirm', + loading: 'Loading...', + noData: 'No data available', + error: 'Something went wrong', + retry: 'Retry', + }, + + // ─── Tabs ─── + tabs: { + dashboard: 'Dashboard', + expenses: 'Expenses', + netWorth: 'Net Worth', + settings: 'Settings', + }, + + // ─── Dashboard ─── + dashboard: { + title: 'Dashboard', + netWorth: 'Net Worth', + totalAssets: 'Total Assets', + totalLiabilities: 'Total Liabilities', + monthlySpending: 'Monthly Spending', + monthlyIncome: 'Monthly Income', + recentTransactions: 'Recent Transactions', + spendingTrends: 'Spending Trends', + viewAll: 'View All', + thisMonth: 'This Month', + lastMonth: 'Last Month', + }, + + // ─── Expenses ─── + expenses: { + title: 'Expenses', + addExpense: 'Add Expense', + addIncome: 'Add Income', + amount: 'Amount', + category: 'Category', + paymentMethod: 'Payment Method', + date: 'Date', + note: 'Note (optional)', + noTransactions: 'No transactions yet', + startTracking: 'Start tracking your expenses', + }, + + // ─── Net Worth ─── + netWorth: { + title: 'Net Worth', + assets: 'Assets', + liabilities: 'Liabilities', + addAsset: 'Add Asset', + addLiability: 'Add Liability', + assetName: 'Asset Name', + assetType: 'Asset Type', + currentValue: 'Current Value', + liabilityName: 'Liability Name', + liabilityType: 'Liability Type', + outstandingAmount: 'Outstanding Amount', + interestRate: 'Interest Rate (%)', + emiAmount: 'EMI Amount', + growth: 'Growth', + noAssets: 'No assets added yet', + noLiabilities: 'No liabilities added yet', + }, + + // ─── Settings ─── + settings: { + title: 'Settings', + general: 'General', + baseCurrency: 'Base Currency', + language: 'Language', + theme: 'Theme', + data: 'Data', + exportData: 'Export Data', + importData: 'Import Data', + clearData: 'Clear All Data', + clearDataConfirm: 'Are you sure? This action cannot be undone.', + about: 'About', + version: 'Version', + appName: 'Expensso', + }, + + // ─── Currency ─── + currency: { + INR: 'Indian Rupee (₹)', + USD: 'US Dollar ($)', + EUR: 'Euro (€)', + }, + }, +}; diff --git a/src/i18n/index.ts b/src/i18n/index.ts new file mode 100644 index 0000000..f4b7c0c --- /dev/null +++ b/src/i18n/index.ts @@ -0,0 +1,17 @@ +import i18n from 'i18next'; +import {initReactI18next} from 'react-i18next'; +import en from './en'; + +i18n.use(initReactI18next).init({ + compatibilityJSON: 'v4', + resources: { + en, + }, + lng: 'en', + fallbackLng: 'en', + interpolation: { + escapeValue: false, + }, +}); + +export default i18n; diff --git a/src/navigation/AppNavigator.tsx b/src/navigation/AppNavigator.tsx new file mode 100644 index 0000000..afd5b57 --- /dev/null +++ b/src/navigation/AppNavigator.tsx @@ -0,0 +1,93 @@ +import React from 'react'; +import {NavigationContainer, DefaultTheme as NavDefaultTheme, DarkTheme as NavDarkTheme} from '@react-navigation/native'; +import {createBottomTabNavigator} from '@react-navigation/bottom-tabs'; +import Icon from 'react-native-vector-icons/MaterialCommunityIcons'; +import {useTranslation} from 'react-i18next'; +import {useSafeAreaInsets} from 'react-native-safe-area-context'; + +import { + ModernDashboard, + ExpensesScreen, + NetWorthScreen, + SettingsScreen, +} from '../screens'; +import {useTheme} from '../theme'; + +const Tab = createBottomTabNavigator(); + +const TAB_ICONS: Record = { + Dashboard: {focused: 'view-dashboard', unfocused: 'view-dashboard-outline'}, + Expenses: {focused: 'receipt', unfocused: 'receipt'}, + NetWorth: {focused: 'chart-line', unfocused: 'chart-line'}, + Settings: {focused: 'cog', unfocused: 'cog-outline'}, +}; + +const AppNavigator: React.FC = () => { + const {t} = useTranslation(); + const theme = useTheme(); + const {colors, isDark} = theme; + const insets = useSafeAreaInsets(); + + const baseNavTheme = isDark ? NavDarkTheme : NavDefaultTheme; + const navigationTheme = { + ...baseNavTheme, + colors: { + ...baseNavTheme.colors, + background: colors.background, + card: colors.surfaceContainerLow, + text: colors.onSurface, + border: colors.outlineVariant, + primary: colors.primary, + }, + }; + + return ( + + ({ + headerShown: false, + tabBarIcon: ({focused, color, size}) => { + const icons = TAB_ICONS[route.name]; + const iconName = focused ? icons.focused : icons.unfocused; + return ; + }, + tabBarActiveTintColor: colors.primary, + tabBarInactiveTintColor: colors.onSurfaceVariant, + tabBarStyle: { + backgroundColor: colors.surfaceContainerLow, + borderTopColor: colors.outlineVariant + '40', + borderTopWidth: 1, + height: 60 + insets.bottom, + paddingBottom: insets.bottom, + }, + tabBarLabelStyle: { + fontSize: 11, + fontWeight: '600', + }, + })}> + + + + + + + ); +}; + +export default AppNavigator; diff --git a/src/screens/DashboardScreen.tsx b/src/screens/DashboardScreen.tsx new file mode 100644 index 0000000..5c691d0 --- /dev/null +++ b/src/screens/DashboardScreen.tsx @@ -0,0 +1,429 @@ +import React, {useCallback, useEffect} from 'react'; +import { + View, + Text, + StyleSheet, + ScrollView, + RefreshControl, + StatusBar, +} from 'react-native'; +import {useFocusEffect} from '@react-navigation/native'; +import {SafeAreaView, useSafeAreaInsets} from 'react-native-safe-area-context'; +import {useTranslation} from 'react-i18next'; +import Icon from 'react-native-vector-icons/MaterialCommunityIcons'; +import {BarChart, PieChart} from 'react-native-gifted-charts'; + +import {SummaryCard, SectionHeader, TransactionItem, EmptyState} from '../components'; +import {useSettingsStore, useNetWorthStore, useExpenseStore} from '../store'; +import {formatCurrency, formatCompact, percentageChange} from '../utils'; +import {COLORS} from '../constants'; +import {useThemeColors, useIsDarkTheme} from '../hooks'; + +const DashboardScreen: React.FC = () => { + const {t} = useTranslation(); + const baseCurrency = useSettingsStore(s => s.baseCurrency); + const colors = useThemeColors(); + const isDark = useIsDarkTheme(); + const insets = useSafeAreaInsets(); + + const { + totalAssets, + totalLiabilities, + netWorth, + loadNetWorth, + isLoading: nwLoading, + } = useNetWorthStore(); + + const { + transactions, + monthlyExpense, + monthlyIncome, + spendingByCategory, + monthlyTrend, + loadTransactions, + loadMonthlyStats, + loadSpendingAnalytics, + isLoading: txLoading, + } = useExpenseStore(); + + const loadAll = useCallback(async () => { + await Promise.all([ + loadNetWorth(), + loadTransactions({limit: 5}), + loadMonthlyStats(), + loadSpendingAnalytics(), + ]); + }, [loadNetWorth, loadTransactions, loadMonthlyStats, loadSpendingAnalytics]); + + // Reload on screen focus + useFocusEffect( + useCallback(() => { + loadAll(); + }, [loadAll]), + ); + + const isLoading = nwLoading || txLoading; + + // ─── Chart: Spending by Category (Pie) ───────────────────────────── + const pieData = spendingByCategory.slice(0, 6).map((item, idx) => ({ + value: item.total, + text: formatCompact(item.total, baseCurrency), + color: item.categoryColor || colors.chartColors[idx % colors.chartColors.length], + focused: idx === 0, + })); + + // ─── Chart: Monthly Trend (Bar) ──────────────────────────────────── + const barData = monthlyTrend.map((item, idx) => ({ + value: item.total, + label: item.month.slice(5), // "01", "02", etc. + frontColor: colors.chartColors[idx % colors.chartColors.length], + })); + + // ─── Net Worth Calculation Breakdown ─────────────────────────────── + // Net Worth = Total Assets - Total Liabilities + // This is already computed in the netWorthStore from live SQLite data. + + return ( + + + + {/* Header */} + + + Hello, + {t('dashboard.title')} + + + {baseCurrency} + + + + + }> + + {/* ── Net Worth Hero Card ─────────────────────────────────── */} + + {t('dashboard.netWorth')} + = 0 ? colors.success : colors.danger}, + ]} + numberOfLines={1} + adjustsFontSizeToFit> + {formatCurrency(netWorth, baseCurrency)} + + + + + + + {t('dashboard.totalAssets')} + + + {formatCompact(totalAssets, baseCurrency)} + + + + + + + {t('dashboard.totalLiabilities')} + + + {formatCompact(totalLiabilities, baseCurrency)} + + + + + + {/* ── Monthly Summary Cards ──────────────────────────────── */} + + } + style={styles.halfCard} + /> + } + style={styles.halfCard} + /> + + + {/* ── Spending by Category (Pie Chart) ───────────────────── */} + {pieData.length > 0 && ( + <> + + + ( + + + {formatCompact(monthlyExpense, baseCurrency)} + + Spent + + )} + /> + + {spendingByCategory.slice(0, 5).map((item, idx) => ( + + + + {item.categoryName} + + + {formatCompact(item.total, baseCurrency)} + + + ))} + + + + )} + + {/* ── Spending Trends (Bar Chart) ────────────────────────── */} + {barData.length > 0 && ( + <> + + + + + + )} + + {/* ── Recent Transactions ─────────────────────────────────── */} + + + {transactions.length > 0 ? ( + transactions.map(txn => ( + + )) + ) : ( + + )} + + + + + + ); +}; + +export default DashboardScreen; + +// ─── Styles ──────────────────────────────────────────────────────────── + +const styles = StyleSheet.create({ + screen: { + flex: 1, + backgroundColor: COLORS.background, + }, + header: { + flexDirection: 'row', + justifyContent: 'space-between', + alignItems: 'center', + paddingHorizontal: 20, + paddingTop: 16, + paddingBottom: 8, + backgroundColor: COLORS.background, + }, + greeting: { + fontSize: 14, + color: COLORS.textSecondary, + }, + headerTitle: { + fontSize: 28, + fontWeight: '800', + color: COLORS.text, + }, + currencyBadge: { + backgroundColor: COLORS.primary + '15', + paddingHorizontal: 12, + paddingVertical: 6, + borderRadius: 20, + }, + currencyText: { + fontSize: 13, + fontWeight: '700', + color: COLORS.primary, + }, + scrollView: { + flex: 1, + }, + scrollContent: {}, + + // Hero card + heroCard: { + backgroundColor: COLORS.surface, + margin: 20, + marginTop: 12, + borderRadius: 20, + padding: 24, + shadowColor: '#000', + shadowOffset: {width: 0, height: 4}, + shadowOpacity: 0.08, + shadowRadius: 12, + elevation: 5, + }, + heroLabel: { + fontSize: 13, + fontWeight: '600', + color: COLORS.textSecondary, + textTransform: 'uppercase', + letterSpacing: 1, + }, + heroValue: { + fontSize: 36, + fontWeight: '800', + marginTop: 4, + marginBottom: 16, + }, + heroBreakdown: { + flexDirection: 'row', + alignItems: 'center', + borderTopWidth: 1, + borderTopColor: COLORS.borderLight, + paddingTop: 16, + }, + heroBreakdownItem: { + flex: 1, + alignItems: 'center', + }, + heroBreakdownDivider: { + width: 1, + height: 36, + backgroundColor: COLORS.borderLight, + }, + heroBreakdownLabel: { + fontSize: 11, + color: COLORS.textTertiary, + marginTop: 4, + }, + heroBreakdownValue: { + fontSize: 16, + fontWeight: '700', + marginTop: 2, + }, + + // Monthly cards + cardRow: { + flexDirection: 'row', + paddingHorizontal: 20, + gap: 12, + }, + halfCard: { + flex: 1, + }, + + // Charts + chartCard: { + backgroundColor: COLORS.surface, + marginHorizontal: 20, + borderRadius: 16, + padding: 20, + alignItems: 'center', + shadowColor: '#000', + shadowOffset: {width: 0, height: 2}, + shadowOpacity: 0.04, + shadowRadius: 8, + elevation: 2, + }, + chartAxisText: { + fontSize: 10, + color: COLORS.textTertiary, + }, + pieCenter: { + alignItems: 'center', + }, + pieCenterValue: { + fontSize: 16, + fontWeight: '700', + color: COLORS.text, + }, + pieCenterLabel: { + fontSize: 11, + color: COLORS.textTertiary, + }, + legendContainer: { + width: '100%', + marginTop: 16, + }, + legendItem: { + flexDirection: 'row', + alignItems: 'center', + paddingVertical: 4, + }, + legendDot: { + width: 10, + height: 10, + borderRadius: 5, + marginRight: 8, + }, + legendText: { + flex: 1, + fontSize: 13, + color: COLORS.text, + }, + legendValue: { + fontSize: 13, + fontWeight: '600', + color: COLORS.textSecondary, + }, + + // Transactions + transactionsList: { + backgroundColor: COLORS.surface, + marginHorizontal: 20, + borderRadius: 16, + overflow: 'hidden', + shadowColor: '#000', + shadowOffset: {width: 0, height: 2}, + shadowOpacity: 0.04, + shadowRadius: 8, + elevation: 2, + }, + + bottomSpacer: { + height: 40, + }, +}); diff --git a/src/screens/ExpensesScreen.tsx b/src/screens/ExpensesScreen.tsx new file mode 100644 index 0000000..a7bb713 --- /dev/null +++ b/src/screens/ExpensesScreen.tsx @@ -0,0 +1,552 @@ +/** + * ExpensesScreen — MD3 refactored. + * Replaces the system Modal with CustomBottomSheet. + * Uses MD3 theme tokens (useTheme), Reanimated animations, and haptic feedback. + */ + +import React, {useCallback, useRef, useState} from 'react'; +import { + View, + Text, + StyleSheet, + FlatList, + ScrollView, + Pressable, + Alert, + StatusBar, +} from 'react-native'; +import {useFocusEffect} from '@react-navigation/native'; +import {SafeAreaView, useSafeAreaInsets} from 'react-native-safe-area-context'; +import {useTranslation} from 'react-i18next'; +import Icon from 'react-native-vector-icons/MaterialCommunityIcons'; +import Animated, {FadeIn, FadeInDown} from 'react-native-reanimated'; +import dayjs from 'dayjs'; + +import { + TransactionItem, + EmptyState, + CustomBottomSheet, + BottomSheetInput, + BottomSheetChipSelector, + triggerHaptic, +} from '../components'; +import type {CustomBottomSheetHandle} from '../components'; +import {useExpenseStore, useSettingsStore, useNetWorthStore} from '../store'; +import {PAYMENT_METHODS} from '../constants'; +import {formatCurrency} from '../utils'; +import {useTheme} from '../theme'; +import type {MD3Theme} from '../theme'; +import { + TransactionType, + PaymentMethod, + Category, + Transaction, + NetWorthTargetType, + AssetType, + LiabilityType, +} from '../types'; + +const ASSET_TYPES: AssetType[] = [ + 'Bank', 'Stocks', 'Gold', 'EPF', 'Mutual Funds', 'Fixed Deposit', 'PPF', 'Real Estate', 'Other', +]; +const LIABILITY_TYPES: LiabilityType[] = [ + 'Home Loan', 'Car Loan', 'Personal Loan', 'Education Loan', 'Credit Card', 'Other', +]; + +const ExpensesScreen: React.FC = () => { + const {t} = useTranslation(); + const baseCurrency = useSettingsStore(s => s.baseCurrency); + const theme = useTheme(); + const s = makeStyles(theme); + const {colors, spacing} = theme; + const insets = useSafeAreaInsets(); + const sheetRef = useRef(null); + + const { + transactions, + categories, + monthlyExpense, + monthlyIncome, + loadTransactions, + loadMonthlyStats, + addTransaction, + removeTransaction, + } = useExpenseStore(); + const {assets, liabilities, loadNetWorth} = useNetWorthStore(); + + const [txnType, setTxnType] = useState('expense'); + const [amount, setAmount] = useState(''); + const [selectedCategory, setSelectedCategory] = useState(null); + const [paymentMethod, setPaymentMethod] = useState('UPI'); + const [note, setNote] = useState(''); + const [targetType, setTargetType] = useState('asset'); + const [targetMode, setTargetMode] = useState<'existing' | 'new'>('existing'); + const [selectedTargetId, setSelectedTargetId] = useState(''); + const [newTargetName, setNewTargetName] = useState(''); + const [newAssetType, setNewAssetType] = useState('Bank'); + const [newLiabilityType, setNewLiabilityType] = useState('Home Loan'); + + useFocusEffect( + useCallback(() => { + loadTransactions({limit: 100}); + loadMonthlyStats(); + loadNetWorth(); + }, [loadTransactions, loadMonthlyStats, loadNetWorth]), + ); + + const filteredCategories = categories.filter(c => c.type === txnType); + const selectedTargets = targetType === 'asset' ? assets : liabilities; + + const resetForm = () => { + setAmount(''); + setSelectedCategory(null); + setPaymentMethod('UPI'); + setNote(''); + setTargetType('asset'); + setTargetMode('existing'); + setSelectedTargetId(''); + setNewTargetName(''); + setNewAssetType('Bank'); + setNewLiabilityType('Home Loan'); + }; + + const handleSave = async () => { + const parsed = parseFloat(amount); + if (isNaN(parsed) || parsed <= 0) { + Alert.alert('Invalid Amount', 'Please enter a valid amount.'); + return; + } + if (!selectedCategory) { + Alert.alert('Select Category', 'Please select a category.'); + return; + } + if (targetMode === 'existing' && !selectedTargetId) { + Alert.alert('Select Entry', 'Please select an existing asset or liability entry.'); + return; + } + if (targetMode === 'new' && !newTargetName.trim()) { + Alert.alert('Entry Name Required', 'Please enter a name for the new net worth entry.'); + return; + } + + const operation = + txnType === 'income' + ? targetType === 'asset' ? 'add' : 'subtract' + : targetType === 'asset' ? 'subtract' : 'add'; + + await addTransaction({ + amount: parsed, + currency: baseCurrency, + type: txnType, + categoryId: selectedCategory.id, + paymentMethod, + note, + date: dayjs().format('YYYY-MM-DD'), + impact: { + targetType, + targetId: targetMode === 'existing' ? selectedTargetId : undefined, + operation, + createNew: + targetMode === 'new' + ? { + name: newTargetName.trim(), + type: targetType === 'asset' ? newAssetType : newLiabilityType, + note: '', + } + : undefined, + }, + }); + + triggerHaptic('notificationSuccess'); + resetForm(); + sheetRef.current?.dismiss(); + loadNetWorth(); + }; + + const handleDelete = (txn: Transaction) => { + Alert.alert('Delete Transaction', 'Are you sure you want to delete this?', [ + {text: 'Cancel', style: 'cancel'}, + { + text: 'Delete', + style: 'destructive', + onPress: () => { + triggerHaptic('impactMedium'); + removeTransaction(txn.id); + }, + }, + ]); + }; + + // ── List Header ───────────────────────────────────────────────────── + + const renderHeader = () => ( + + + + + Income + + {formatCurrency(monthlyIncome, baseCurrency)} + + + + + Expense + + {formatCurrency(monthlyExpense, baseCurrency)} + + + + + ); + + // ── Category chip options ─────────────────────────────────────────── + + const categoryOptions = filteredCategories.map(c => ({ + value: c.id, + label: c.name, + icon: c.icon, + })); + + const paymentOptions = PAYMENT_METHODS.map(m => ({value: m, label: m})); + + // ── Render ────────────────────────────────────────────────────────── + + return ( + + + + {t('expenses.title')} + + + item.id} + renderItem={({item}) => ( + + )} + ListHeaderComponent={renderHeader} + ListEmptyComponent={ + + } + ItemSeparatorComponent={() => ( + + )} + contentContainerStyle={{paddingBottom: 80 + insets.bottom}} + showsVerticalScrollIndicator={false} + /> + + {/* FAB */} + { + resetForm(); + triggerHaptic('impactMedium'); + sheetRef.current?.present(); + }}> + + + + {/* ── Add Transaction Bottom Sheet ──────────────────────── */} + sheetRef.current?.dismiss()}} + headerRight={{label: t('common.save'), onPress: handleSave}}> + + {/* Expense / Income Toggle */} + + { + triggerHaptic('selection'); + setTxnType('expense'); + setSelectedCategory(null); + }}> + + Expense + + + { + triggerHaptic('selection'); + setTxnType('income'); + setSelectedCategory(null); + }}> + + Income + + + + + {/* Amount */} + + + {/* Category */} + { + const cat = filteredCategories.find(c => c.id === id) ?? null; + setSelectedCategory(cat); + }} + /> + + {/* Payment Method */} + setPaymentMethod(m as PaymentMethod)} + /> + + {/* Net Worth Impact */} + Net Worth Entry + + + { + triggerHaptic('selection'); + setTargetType('asset'); + setSelectedTargetId(''); + }}> + + Asset + + + { + triggerHaptic('selection'); + setTargetType('liability'); + setSelectedTargetId(''); + }}> + + Liability + + + + + + { + triggerHaptic('selection'); + setTargetMode('existing'); + }}> + + Existing + + + { + triggerHaptic('selection'); + setTargetMode('new'); + setSelectedTargetId(''); + }}> + + New + + + + + {targetMode === 'existing' ? ( + + {selectedTargets.map(entry => { + const active = selectedTargetId === entry.id; + return ( + { + triggerHaptic('selection'); + setSelectedTargetId(entry.id); + }}> + + {entry.name} + + + ); + })} + + ) : ( + + + + {(targetType === 'asset' ? ASSET_TYPES : LIABILITY_TYPES).map(entryType => { + const active = (targetType === 'asset' ? newAssetType : newLiabilityType) === entryType; + return ( + { + triggerHaptic('selection'); + if (targetType === 'asset') setNewAssetType(entryType as AssetType); + else setNewLiabilityType(entryType as LiabilityType); + }}> + + {entryType} + + + ); + })} + + + )} + + + {txnType === 'income' + ? targetType === 'asset' + ? 'Income will add to this asset.' + : 'Income will reduce this liability.' + : targetType === 'asset' + ? 'Expense will reduce this asset.' + : 'Expense will increase this liability.'} + + + {/* Note */} + + + + ); +}; + +export default ExpensesScreen; + +// ─── Styles ──────────────────────────────────────────────────────────── + +function makeStyles(theme: MD3Theme) { + const {colors, typography, elevation, shape, spacing} = theme; + return StyleSheet.create({ + screen: {flex: 1, backgroundColor: colors.background}, + header: { + paddingHorizontal: spacing.xl, + paddingTop: spacing.lg, + paddingBottom: spacing.sm, + }, + headerTitle: { + ...typography.headlineMedium, + color: colors.onSurface, + fontWeight: '700', + }, + headerSection: { + paddingHorizontal: spacing.xl, + paddingBottom: spacing.md, + }, + summaryRow: { + flexDirection: 'row', + gap: spacing.md, + marginTop: spacing.sm, + marginBottom: spacing.lg, + }, + summaryItem: { + flex: 1, + borderRadius: shape.large, + padding: spacing.lg, + alignItems: 'center', + }, + summaryLabel: { + ...typography.bodySmall, + color: colors.onSurfaceVariant, + marginTop: spacing.xs, + }, + summaryValue: { + ...typography.titleMedium, + fontWeight: '700', + marginTop: 2, + }, + separator: {height: 1, marginLeft: 72}, + fab: { + position: 'absolute', + right: spacing.xl, + width: 56, + height: 56, + borderRadius: shape.large, + backgroundColor: colors.primary, + justifyContent: 'center', + alignItems: 'center', + ...elevation.level3, + }, + typeToggle: { + flexDirection: 'row', + backgroundColor: colors.surfaceContainerLow, + borderRadius: shape.medium, + padding: 4, + marginBottom: spacing.xl, + }, + typeBtn: { + flex: 1, + paddingVertical: spacing.md, + borderRadius: shape.small, + alignItems: 'center', + }, + typeBtnText: { + ...typography.labelLarge, + color: colors.onSurfaceVariant, + }, + chip: { + paddingHorizontal: spacing.lg, + paddingVertical: spacing.sm, + borderRadius: shape.full, + borderWidth: 1, + borderColor: colors.outlineVariant, + backgroundColor: colors.surfaceContainerLowest, + marginRight: spacing.sm, + }, + chipText: { + ...typography.labelMedium, + color: colors.onSurfaceVariant, + }, + sectionLabel: { + ...typography.bodySmall, + color: colors.onSurfaceVariant, + marginBottom: spacing.sm, + }, + operationHint: { + ...typography.bodySmall, + color: colors.onSurfaceVariant, + marginBottom: spacing.lg, + fontStyle: 'italic', + }, + }); +} diff --git a/src/screens/ModernDashboard.tsx b/src/screens/ModernDashboard.tsx new file mode 100644 index 0000000..65781f3 --- /dev/null +++ b/src/screens/ModernDashboard.tsx @@ -0,0 +1,213 @@ +/** + * ModernDashboard — Full MD3 redesign of the dashboard screen. + * + * Sections: + * 1. Net Worth "Hero" Card with sparkline trend + * 2. Asset vs. Liability chip row + * 3. Wealth Distribution donut chart + * 4. Financial Health gauges (budget vs. spent) + * 5. Recent Activity glassmorphism list + */ + +import React, {useCallback, useState} from 'react'; +import { + View, + Text, + StyleSheet, + ScrollView, + RefreshControl, + StatusBar, + Pressable, +} from 'react-native'; +import {useFocusEffect, useNavigation} from '@react-navigation/native'; +import {SafeAreaView, useSafeAreaInsets} from 'react-native-safe-area-context'; +import {useTranslation} from 'react-i18next'; +import Icon from 'react-native-vector-icons/MaterialCommunityIcons'; +import Animated, {FadeIn} from 'react-native-reanimated'; + +import {useTheme} from '../theme'; +import type {MD3Theme} from '../theme'; +import {useSettingsStore, useNetWorthStore, useExpenseStore} from '../store'; +import {getNetWorthHistory} from '../db'; +import type {NetWorthSnapshot} from '../types'; + +import { + NetWorthHeroCard, + AssetChipRow, + WealthDistributionChart, + RecentActivityList, + FinancialHealthGauges, +} from '../components/dashboard'; + +const ModernDashboard: React.FC = () => { + const {t} = useTranslation(); + const theme = useTheme(); + const s = makeStyles(theme); + const insets = useSafeAreaInsets(); + const navigation = useNavigation(); + + const baseCurrency = useSettingsStore(ss => ss.baseCurrency); + + const { + totalAssets, + totalLiabilities, + netWorth, + assets, + liabilities, + loadNetWorth, + isLoading: nwLoading, + } = useNetWorthStore(); + + const { + transactions, + monthlyExpense, + monthlyIncome, + loadTransactions, + loadMonthlyStats, + loadSpendingAnalytics, + isLoading: txLoading, + } = useExpenseStore(); + + const [history, setHistory] = useState([]); + + const loadAll = useCallback(async () => { + await Promise.all([ + loadNetWorth(), + loadTransactions({limit: 5}), + loadMonthlyStats(), + loadSpendingAnalytics(), + ]); + const hist = await getNetWorthHistory(12); + setHistory(hist); + }, [loadNetWorth, loadTransactions, loadMonthlyStats, loadSpendingAnalytics]); + + useFocusEffect( + useCallback(() => { + loadAll(); + }, [loadAll]), + ); + + const isLoading = nwLoading || txLoading; + + return ( + + + + {/* ── Header ──────────────────────────────────────────────── */} + + + Hello, + {t('dashboard.title')} + + + + {baseCurrency} + + + + {/* ── Scrollable Content ──────────────────────────────────── */} + + }> + + {/* 1. Net Worth Hero Card */} + + + {/* 2. Asset vs. Liability Chip Row */} + + + {/* 3. Wealth Distribution Donut */} + + + {/* 4. Financial Health Gauges */} + + + {/* 5. Recent Activity */} + navigation.navigate('Expenses')} + /> + + + + + ); +}; + +export default ModernDashboard; + +// ─── Styles ──────────────────────────────────────────────────────────── + +function makeStyles(theme: MD3Theme) { + const {colors, typography, spacing} = theme; + return StyleSheet.create({ + screen: { + flex: 1, + backgroundColor: colors.background, + }, + header: { + flexDirection: 'row', + justifyContent: 'space-between', + alignItems: 'center', + paddingHorizontal: spacing.xl, + paddingTop: spacing.lg, + paddingBottom: spacing.sm, + }, + greeting: { + ...typography.bodyMedium, + color: colors.onSurfaceVariant, + }, + headerTitle: { + ...typography.headlineMedium, + color: colors.onSurface, + fontWeight: '700', + }, + currencyBadge: { + flexDirection: 'row', + alignItems: 'center', + gap: spacing.xs, + backgroundColor: colors.primaryContainer, + paddingHorizontal: spacing.md, + paddingVertical: spacing.sm, + borderRadius: 20, + }, + currencyText: { + ...typography.labelMedium, + color: colors.onPrimaryContainer, + fontWeight: '600', + }, + scrollView: { + flex: 1, + }, + bottomSpacer: { + height: 20, + }, + }); +} diff --git a/src/screens/NetWorthScreen.tsx b/src/screens/NetWorthScreen.tsx new file mode 100644 index 0000000..33c3705 --- /dev/null +++ b/src/screens/NetWorthScreen.tsx @@ -0,0 +1,633 @@ +/** + * NetWorthScreen — MD3 refactored. + * Replaces system Modals with CustomBottomSheet. + * Uses MD3 theme tokens (useTheme), Reanimated animations, and haptic feedback. + */ + +import React, {useCallback, useRef, useState} from 'react'; +import { + View, + Text, + StyleSheet, + ScrollView, + Pressable, + Alert, + RefreshControl, + StatusBar, +} from 'react-native'; +import {useFocusEffect} from '@react-navigation/native'; +import {SafeAreaView, useSafeAreaInsets} from 'react-native-safe-area-context'; +import {useTranslation} from 'react-i18next'; +import Icon from 'react-native-vector-icons/MaterialCommunityIcons'; +import {LineChart} from 'react-native-gifted-charts'; +import Animated, {FadeIn, FadeInDown, FadeInUp} from 'react-native-reanimated'; + +import { + SectionHeader, + EmptyState, + CustomBottomSheet, + BottomSheetInput, + BottomSheetChipSelector, + triggerHaptic, +} from '../components'; +import type {CustomBottomSheetHandle} from '../components'; +import {useNetWorthStore, useSettingsStore} from '../store'; +import {getNetWorthHistory} from '../db'; +import {formatCurrency, formatCompact} from '../utils'; +import {useTheme} from '../theme'; +import type {MD3Theme} from '../theme'; +import {Asset, AssetType, Liability, LiabilityType, NetWorthSnapshot} from '../types'; + +const ASSET_TYPES: AssetType[] = [ + 'Bank', 'Stocks', 'Gold', 'EPF', 'Mutual Funds', 'Fixed Deposit', 'PPF', 'Real Estate', 'Other', +]; +const LIABILITY_TYPES: LiabilityType[] = [ + 'Home Loan', 'Car Loan', 'Personal Loan', 'Education Loan', 'Credit Card', 'Other', +]; + +const ASSET_ICONS: Record = { + Bank: 'bank', + Stocks: 'chart-line', + Gold: 'gold', + EPF: 'shield-account', + 'Real Estate': 'home-city', + 'Mutual Funds': 'chart-areaspline', + 'Fixed Deposit': 'safe', + PPF: 'piggy-bank', + Other: 'dots-horizontal', +}; + +const ASSET_ICON_COLORS: Record = { + Bank: '#1E88E5', + Stocks: '#7E57C2', + Gold: '#D4AF37', + EPF: '#00ACC1', + 'Real Estate': '#8D6E63', + 'Mutual Funds': '#26A69A', + 'Fixed Deposit': '#3949AB', + PPF: '#43A047', + Other: '#78909C', +}; + +const LIABILITY_ICON_COLORS: Record = { + 'Home Loan': {icon: 'home-city', color: '#EF6C00'}, + 'Car Loan': {icon: 'car', color: '#5E35B1'}, + 'Personal Loan': {icon: 'account-cash', color: '#E53935'}, + 'Education Loan': {icon: 'school', color: '#1E88E5'}, + 'Credit Card': {icon: 'credit-card', color: '#D81B60'}, + Other: {icon: 'alert-circle-outline', color: '#757575'}, +}; + +const NetWorthScreen: React.FC = () => { + const {t} = useTranslation(); + const baseCurrency = useSettingsStore(s => s.baseCurrency); + const theme = useTheme(); + const s = makeStyles(theme); + const {colors, spacing, shape} = theme; + const insets = useSafeAreaInsets(); + + const assetSheetRef = useRef(null); + const liabilitySheetRef = useRef(null); + + const { + assets, + liabilities, + totalAssets, + totalLiabilities, + netWorth, + isLoading, + loadNetWorth, + addAsset, + removeAsset, + editAsset, + addLiability, + removeLiability, + editLiability, + takeSnapshot, + } = useNetWorthStore(); + + const [history, setHistory] = useState([]); + const [editingAsset, setEditingAsset] = useState(null); + const [editingLiability, setEditingLiability] = useState(null); + + // Asset form + const [assetName, setAssetName] = useState(''); + const [assetType, setAssetType] = useState('Bank'); + const [assetValue, setAssetValue] = useState(''); + const [assetNote, setAssetNote] = useState(''); + + // Liability form + const [liabName, setLiabName] = useState(''); + const [liabType, setLiabType] = useState('Home Loan'); + const [liabAmount, setLiabAmount] = useState(''); + const [liabRate, setLiabRate] = useState(''); + const [liabEmi, setLiabEmi] = useState(''); + const [liabNote, setLiabNote] = useState(''); + + const loadAll = useCallback(async () => { + await loadNetWorth(); + const hist = await getNetWorthHistory(12); + setHistory(hist); + }, [loadNetWorth]); + + useFocusEffect(useCallback(() => { loadAll(); }, [loadAll])); + + // Chart data + const lineData = history.map(snap => ({ + value: snap.netWorth, + label: snap.snapshotDate.slice(5, 10), + dataPointText: formatCompact(snap.netWorth, baseCurrency), + })); + + // Asset type chip options + const assetTypeOptions = ASSET_TYPES.map(at => ({ + value: at, + label: at, + icon: ASSET_ICONS[at], + })); + + const liabTypeOptions = LIABILITY_TYPES.map(lt => ({ + value: lt, + label: lt, + })); + + // ── Save Asset ────────────────────────────────────────────────── + + const handleSaveAsset = async () => { + const val = parseFloat(assetValue); + if (!assetName.trim() || isNaN(val) || val <= 0) { + Alert.alert('Invalid', 'Please enter a valid name and value.'); + return; + } + if (editingAsset) { + await editAsset(editingAsset.id, { + name: assetName.trim(), + type: assetType, + currentValue: val, + note: assetNote, + }); + } else { + await addAsset({ + name: assetName.trim(), + type: assetType, + currentValue: val, + currency: baseCurrency, + note: assetNote, + }); + } + triggerHaptic('notificationSuccess'); + await takeSnapshot(baseCurrency); + setAssetName(''); setAssetValue(''); setAssetNote(''); setEditingAsset(null); + assetSheetRef.current?.dismiss(); + loadAll(); + }; + + // ── Save Liability ────────────────────────────────────────────── + + const handleSaveLiability = async () => { + const amt = parseFloat(liabAmount); + if (!liabName.trim() || isNaN(amt) || amt <= 0) { + Alert.alert('Invalid', 'Please enter a valid name and amount.'); + return; + } + if (editingLiability) { + await editLiability(editingLiability.id, { + name: liabName.trim(), + type: liabType, + outstandingAmount: amt, + interestRate: parseFloat(liabRate) || 0, + emiAmount: parseFloat(liabEmi) || 0, + note: liabNote, + }); + } else { + await addLiability({ + name: liabName.trim(), + type: liabType, + outstandingAmount: amt, + currency: baseCurrency, + interestRate: parseFloat(liabRate) || 0, + emiAmount: parseFloat(liabEmi) || 0, + note: liabNote, + }); + } + triggerHaptic('notificationSuccess'); + await takeSnapshot(baseCurrency); + setLiabName(''); setLiabAmount(''); setLiabRate(''); + setLiabEmi(''); setLiabNote(''); setEditingLiability(null); + liabilitySheetRef.current?.dismiss(); + loadAll(); + }; + + // ── Delete / Edit handlers ────────────────────────────────────── + + const handleDeleteAsset = (asset: Asset) => { + Alert.alert('Delete Asset', `Remove "${asset.name}"?`, [ + {text: 'Cancel', style: 'cancel'}, + {text: 'Delete', style: 'destructive', onPress: () => { + triggerHaptic('impactMedium'); + removeAsset(asset.id); + }}, + ]); + }; + + const handleDeleteLiability = (liab: Liability) => { + Alert.alert('Delete Liability', `Remove "${liab.name}"?`, [ + {text: 'Cancel', style: 'cancel'}, + {text: 'Delete', style: 'destructive', onPress: () => { + triggerHaptic('impactMedium'); + removeLiability(liab.id); + }}, + ]); + }; + + const handleEditAsset = (asset: Asset) => { + setEditingAsset(asset); + setAssetName(asset.name); + setAssetType(asset.type as AssetType); + setAssetValue(asset.currentValue.toString()); + setAssetNote(asset.note || ''); + assetSheetRef.current?.present(); + }; + + const handleEditLiability = (liab: Liability) => { + setEditingLiability(liab); + setLiabName(liab.name); + setLiabType(liab.type as LiabilityType); + setLiabAmount(liab.outstandingAmount.toString()); + setLiabRate(liab.interestRate.toString()); + setLiabEmi(liab.emiAmount.toString()); + setLiabNote(liab.note || ''); + liabilitySheetRef.current?.present(); + }; + + const handleOpenAddAsset = () => { + setEditingAsset(null); + setAssetName(''); setAssetType('Bank'); setAssetValue(''); setAssetNote(''); + assetSheetRef.current?.present(); + }; + + const handleOpenAddLiability = () => { + setEditingLiability(null); + setLiabName(''); setLiabType('Home Loan'); setLiabAmount(''); + setLiabRate(''); setLiabEmi(''); setLiabNote(''); + liabilitySheetRef.current?.present(); + }; + + // ── Render ────────────────────────────────────────────────────── + + return ( + + + + {t('netWorth.title')} + + + }> + + {/* Hero Card */} + + {t('dashboard.netWorth')} + = 0 ? colors.success : colors.error}]} + numberOfLines={1} + adjustsFontSizeToFit> + {formatCurrency(netWorth, baseCurrency)} + + + + + Assets + + {formatCurrency(totalAssets, baseCurrency)} + + + + + + Liabilities + + {formatCurrency(totalLiabilities, baseCurrency)} + + + + + + {/* Chart */} + {lineData.length > 1 && ( + + + + + + + )} + + {/* Assets List */} + + + + {assets.length > 0 ? ( + assets.map((asset, idx) => { + const iconColor = ASSET_ICON_COLORS[asset.type as AssetType] || colors.primary; + const iconName = ASSET_ICONS[asset.type as AssetType] || 'dots-horizontal'; + return ( + handleEditAsset(asset)} + onLongPress={() => handleDeleteAsset(asset)} + android_ripple={{color: colors.primary + '12'}}> + + + + + {asset.name} + {asset.type} + + + {formatCurrency(asset.currentValue, baseCurrency)} + + + ); + }) + ) : ( + + )} + + + + {/* Liabilities List */} + + + + {liabilities.length > 0 ? ( + liabilities.map((liab, idx) => { + const liabVisual = LIABILITY_ICON_COLORS[liab.type as LiabilityType] || LIABILITY_ICON_COLORS.Other; + return ( + handleEditLiability(liab)} + onLongPress={() => handleDeleteLiability(liab)} + android_ripple={{color: colors.primary + '12'}}> + + + + + {liab.name} + + {liab.type} · {liab.interestRate}% · EMI {formatCompact(liab.emiAmount, baseCurrency)} + + + + {formatCurrency(liab.outstandingAmount, baseCurrency)} + + + ); + }) + ) : ( + + )} + + + + + {/* ── Asset Bottom Sheet ─────────────────────────────────────── */} + assetSheetRef.current?.dismiss()}} + headerRight={{label: t('common.save'), onPress: handleSaveAsset}}> + + + + setAssetType(at as AssetType)} + /> + + + + + + + {/* ── Liability Bottom Sheet ─────────────────────────────────── */} + liabilitySheetRef.current?.dismiss()}} + headerRight={{label: t('common.save'), onPress: handleSaveLiability}}> + + + + setLiabType(lt as LiabilityType)} + /> + + + + + + + + + + + ); +}; + +export default NetWorthScreen; + +// ─── Styles ──────────────────────────────────────────────────────────── + +function makeStyles(theme: MD3Theme) { + const {colors, typography, elevation, shape, spacing} = theme; + return StyleSheet.create({ + screen: {flex: 1, backgroundColor: colors.background}, + header: { + paddingHorizontal: spacing.xl, + paddingTop: spacing.lg, + paddingBottom: spacing.sm, + }, + headerTitle: { + ...typography.headlineMedium, + color: colors.onSurface, + fontWeight: '700', + }, + heroCard: { + backgroundColor: colors.surfaceContainerLow, + marginHorizontal: spacing.xl, + marginTop: spacing.md, + borderRadius: shape.extraLarge, + padding: spacing.xl, + ...elevation.level2, + }, + heroLabel: { + ...typography.labelSmall, + color: colors.onSurfaceVariant, + textTransform: 'uppercase', + letterSpacing: 1, + }, + heroValue: { + ...typography.displaySmall, + fontWeight: '800', + marginTop: spacing.xs, + }, + heroSplit: { + flexDirection: 'row', + marginTop: spacing.lg, + paddingTop: spacing.lg, + borderTopWidth: 1, + borderTopColor: colors.outlineVariant + '40', + }, + heroSplitItem: { + flex: 1, + alignItems: 'center', + gap: 2, + }, + heroSplitDivider: { + width: 1, + marginHorizontal: spacing.md, + }, + heroSplitLabel: { + ...typography.bodySmall, + }, + heroSplitValue: { + ...typography.titleSmall, + fontWeight: '700', + }, + chartCard: { + backgroundColor: colors.surfaceContainerLow, + marginHorizontal: spacing.xl, + borderRadius: shape.large, + padding: spacing.xl, + alignItems: 'center', + ...elevation.level1, + }, + listCard: { + backgroundColor: colors.surfaceContainerLow, + marginHorizontal: spacing.xl, + borderRadius: shape.large, + overflow: 'hidden', + ...elevation.level1, + }, + listItem: { + flexDirection: 'row', + alignItems: 'center', + paddingVertical: spacing.lg, + paddingHorizontal: spacing.lg, + }, + listItemBorder: { + borderBottomWidth: 1, + borderBottomColor: colors.outlineVariant + '30', + }, + listIcon: { + width: 42, + height: 42, + borderRadius: 21, + justifyContent: 'center', + alignItems: 'center', + }, + listDetails: {flex: 1, marginLeft: spacing.md}, + listName: { + ...typography.bodyLarge, + color: colors.onSurface, + fontWeight: '600', + }, + listType: { + ...typography.bodySmall, + color: colors.onSurfaceVariant, + marginTop: 2, + }, + listValue: { + ...typography.titleSmall, + fontWeight: '700', + }, + }); +} diff --git a/src/screens/SettingsScreen.tsx b/src/screens/SettingsScreen.tsx new file mode 100644 index 0000000..ee10de0 --- /dev/null +++ b/src/screens/SettingsScreen.tsx @@ -0,0 +1,379 @@ +/** + * SettingsScreen — Refactored with MD3 theme and CustomBottomSheet + * for selection dialogs (replaces system Alert-based selectors). + */ + +import React, {useRef} from 'react'; +import { + View, + Text, + StyleSheet, + ScrollView, + Pressable, + Alert, + StatusBar, +} from 'react-native'; +import {SafeAreaView, useSafeAreaInsets} from 'react-native-safe-area-context'; +import {useTranslation} from 'react-i18next'; +import Icon from 'react-native-vector-icons/MaterialCommunityIcons'; +import Animated, {FadeIn, FadeInDown} from 'react-native-reanimated'; + +import { + CustomBottomSheet, + triggerHaptic, +} from '../components'; +import type {CustomBottomSheetHandle} from '../components'; +import {useSettingsStore} from '../store'; +import {useTheme} from '../theme'; +import type {MD3Theme} from '../theme'; +import {Currency} from '../types'; + +const CURRENCIES: {label: string; value: Currency; icon: string}[] = [ + {label: 'Indian Rupee (\u20B9)', value: 'INR', icon: 'currency-inr'}, + {label: 'US Dollar ($)', value: 'USD', icon: 'currency-usd'}, + {label: 'Euro (\u20AC)', value: 'EUR', icon: 'currency-eur'}, + {label: 'British Pound (\u00A3)', value: 'GBP', icon: 'currency-gbp'}, +]; + +const THEMES: {label: string; value: 'light' | 'dark' | 'system'; icon: string}[] = [ + {label: 'Light', value: 'light', icon: 'white-balance-sunny'}, + {label: 'Dark', value: 'dark', icon: 'moon-waning-crescent'}, + {label: 'System', value: 'system', icon: 'theme-light-dark'}, +]; + +// ── Extracted SettingsRow for lint compliance ────────────────────── + +interface SettingsRowProps { + icon: string; + iconColor?: string; + label: string; + value?: string; + onPress?: () => void; + destructive?: boolean; + theme: MD3Theme; +} + +const SettingsRow: React.FC = ({ + icon, + iconColor, + label, + value, + onPress, + destructive, + theme: thm, +}) => { + const {colors, typography, shape, spacing} = thm; + return ( + + + + + + {label} + + {value ? ( + + {value} + + ) : null} + {onPress ? ( + + ) : null} + + ); +}; + +// ── Main Component ──────────────────────────────────────────────── + +const SettingsScreen: React.FC = () => { + const {t} = useTranslation(); + const {baseCurrency, setBaseCurrency, theme: themeSetting, setTheme} = useSettingsStore(); + const theme = useTheme(); + const s = makeStyles(theme); + const {colors} = theme; + const insets = useSafeAreaInsets(); + + const currencySheetRef = useRef(null); + const themeSheetRef = useRef(null); + + const handleClearData = () => { + Alert.alert( + t('settings.clearData'), + t('settings.clearDataConfirm'), + [ + {text: t('common.cancel'), style: 'cancel'}, + { + text: t('common.confirm'), + style: 'destructive', + onPress: async () => { + triggerHaptic('impactMedium'); + Alert.alert('Done', 'All data has been cleared.'); + }, + }, + ], + ); + }; + + return ( + + + + {t('settings.title')} + + + + + {/* General */} + + {t('settings.general')} + + currencySheetRef.current?.present()} + /> + + + + themeSheetRef.current?.present()} + /> + + + + {/* Data */} + + {t('settings.data')} + + Alert.alert('Coming Soon', 'Export functionality will be available in a future release.')} + /> + + Alert.alert('Coming Soon', 'Import functionality will be available in a future release.')} + /> + + + + + + {/* About */} + + {t('settings.about')} + + + + + + + {t('settings.appName')} - Made by WebArk + + + + {/* Currency Selection Bottom Sheet */} + + {CURRENCIES.map(c => ( + { + triggerHaptic('selection'); + setBaseCurrency(c.value); + currencySheetRef.current?.dismiss(); + }}> + + + {c.label} + + {c.value === baseCurrency && ( + + )} + + ))} + + + {/* Theme Selection Bottom Sheet */} + + {THEMES.map(th => ( + { + triggerHaptic('selection'); + setTheme(th.value); + themeSheetRef.current?.dismiss(); + }}> + + + {th.label} + + {th.value === themeSetting && ( + + )} + + ))} + + + ); +}; + +export default SettingsScreen; + +// ─── Styles ──────────────────────────────────────────────────────────── + +function makeStyles(theme: MD3Theme) { + const {colors, typography, elevation, shape, spacing} = theme; + return StyleSheet.create({ + screen: {flex: 1, backgroundColor: colors.background}, + header: { + paddingHorizontal: spacing.xl, + paddingTop: spacing.lg, + paddingBottom: spacing.sm, + }, + headerTitle: { + ...typography.headlineMedium, + color: colors.onSurface, + fontWeight: '700', + }, + scrollView: {flex: 1, paddingHorizontal: spacing.xl}, + sectionTitle: { + ...typography.labelSmall, + color: colors.onSurfaceVariant, + textTransform: 'uppercase', + letterSpacing: 0.8, + marginTop: spacing.xxl, + marginBottom: spacing.sm, + marginLeft: spacing.xs, + }, + sectionCard: { + backgroundColor: colors.surfaceContainerLow, + borderRadius: shape.large, + overflow: 'hidden', + ...elevation.level1, + }, + divider: { + height: 1, + backgroundColor: colors.outlineVariant + '30', + marginLeft: 64, + }, + footer: { + textAlign: 'center', + ...typography.bodySmall, + color: colors.onSurfaceVariant, + marginTop: spacing.xxxl, + marginBottom: spacing.xxxl + 8, + }, + selectionRow: { + flexDirection: 'row', + alignItems: 'center', + gap: spacing.md, + paddingVertical: spacing.lg, + paddingHorizontal: spacing.lg, + borderRadius: shape.medium, + marginBottom: spacing.xs, + }, + selectionLabel: { + flex: 1, + ...typography.bodyLarge, + color: colors.onSurface, + }, + }); +} diff --git a/src/screens/index.ts b/src/screens/index.ts new file mode 100644 index 0000000..63f918f --- /dev/null +++ b/src/screens/index.ts @@ -0,0 +1,5 @@ +export {default as DashboardScreen} from './DashboardScreen'; +export {default as ModernDashboard} from './ModernDashboard'; +export {default as ExpensesScreen} from './ExpensesScreen'; +export {default as NetWorthScreen} from './NetWorthScreen'; +export {default as SettingsScreen} from './SettingsScreen'; diff --git a/src/store/expenseStore.ts b/src/store/expenseStore.ts new file mode 100644 index 0000000..b9d60d5 --- /dev/null +++ b/src/store/expenseStore.ts @@ -0,0 +1,257 @@ +import {create} from 'zustand'; +import { + Transaction, + Category, + Currency, + TransactionType, + PaymentMethod, + NetWorthTargetType, + ImpactOperation, +} from '../types'; +import { + getTransactions, + getTransactionById, + insertTransaction, + updateTransaction as updateTxnDb, + deleteTransaction as deleteTxnDb, + getMonthlyTotals, + getCategories, + seedDefaultCategories, + getSpendingByCategory, + getMonthlySpendingTrend, + insertAsset, + insertLiability, + saveTransactionImpact, + getTransactionImpact, + deleteTransactionImpact, + applyTargetImpact, + reverseTargetImpact, +} from '../db'; + +interface TransactionImpactInput { + targetType: NetWorthTargetType; + targetId?: string; + operation: ImpactOperation; + createNew?: { + name: string; + type: string; + note?: string; + }; +} + +interface ExpenseState { + transactions: Transaction[]; + categories: Category[]; + monthlyExpense: number; + monthlyIncome: number; + isLoading: boolean; + spendingByCategory: {categoryName: string; categoryColor: string; categoryIcon: string; total: number}[]; + monthlyTrend: {month: string; total: number}[]; + + // Actions + initialize: () => Promise; + loadTransactions: (options?: { + type?: TransactionType; + fromDate?: string; + toDate?: string; + limit?: number; + }) => Promise; + addTransaction: (txn: { + amount: number; + currency: Currency; + type: TransactionType; + categoryId: string; + paymentMethod: PaymentMethod; + note: string; + date: string; + impact?: TransactionImpactInput; + }) => Promise; + editTransaction: (id: string, txn: Partial, impact?: TransactionImpactInput) => Promise; + removeTransaction: (id: string) => Promise; + loadMonthlyStats: () => Promise; + loadSpendingAnalytics: () => Promise; +} + +export const useExpenseStore = create((set, get) => ({ + transactions: [], + categories: [], + monthlyExpense: 0, + monthlyIncome: 0, + isLoading: false, + spendingByCategory: [], + monthlyTrend: [], + + initialize: async () => { + set({isLoading: true}); + try { + await seedDefaultCategories(); + const categories = await getCategories(); + set({categories, isLoading: false}); + } catch (error) { + console.error('Failed to initialize expense store:', error); + set({isLoading: false}); + } + }, + + loadTransactions: async (options) => { + set({isLoading: true}); + try { + const transactions = await getTransactions(options); + set({transactions, isLoading: false}); + } catch (error) { + console.error('Failed to load transactions:', error); + set({isLoading: false}); + } + }, + + addTransaction: async (txn) => { + const {impact, ...transactionPayload} = txn; + const transactionId = await insertTransaction(transactionPayload); + + if (impact) { + let targetId = impact.targetId; + + if (!targetId && impact.createNew) { + if (impact.targetType === 'asset') { + targetId = await insertAsset({ + name: impact.createNew.name, + type: impact.createNew.type as any, + currentValue: 0, + currency: txn.currency, + note: impact.createNew.note || '', + }); + } else { + targetId = await insertLiability({ + name: impact.createNew.name, + type: impact.createNew.type as any, + outstandingAmount: 0, + currency: txn.currency, + interestRate: 0, + emiAmount: 0, + note: impact.createNew.note || '', + }); + } + } + + if (targetId) { + await applyTargetImpact(impact.targetType, targetId, impact.operation, txn.amount); + await saveTransactionImpact({ + transactionId, + targetType: impact.targetType, + targetId, + operation: impact.operation, + }); + } + } + + // Reload current transactions and monthly stats + await get().loadTransactions({limit: 50}); + await get().loadMonthlyStats(); + }, + + editTransaction: async (id, txn, impact) => { + const oldTransaction = await getTransactionById(id); + const oldImpact = await getTransactionImpact(id); + + if (oldTransaction && oldImpact) { + await reverseTargetImpact(oldImpact, oldTransaction.amount); + } + + await updateTxnDb(id, txn); + + const updatedTransaction = await getTransactionById(id); + if (updatedTransaction) { + if (impact) { + let targetId = impact.targetId; + + if (!targetId && impact.createNew) { + if (impact.targetType === 'asset') { + targetId = await insertAsset({ + name: impact.createNew.name, + type: impact.createNew.type as any, + currentValue: 0, + currency: updatedTransaction.currency, + note: impact.createNew.note || '', + }); + } else { + targetId = await insertLiability({ + name: impact.createNew.name, + type: impact.createNew.type as any, + outstandingAmount: 0, + currency: updatedTransaction.currency, + interestRate: 0, + emiAmount: 0, + note: impact.createNew.note || '', + }); + } + } + + if (targetId) { + await applyTargetImpact(impact.targetType, targetId, impact.operation, updatedTransaction.amount); + await saveTransactionImpact({ + transactionId: id, + targetType: impact.targetType, + targetId, + operation: impact.operation, + }); + } + } else if (oldImpact) { + await applyTargetImpact(oldImpact.targetType, oldImpact.targetId, oldImpact.operation, updatedTransaction.amount); + await saveTransactionImpact({ + transactionId: id, + targetType: oldImpact.targetType, + targetId: oldImpact.targetId, + operation: oldImpact.operation, + }); + } + } + + await get().loadTransactions({limit: 50}); + await get().loadMonthlyStats(); + }, + + removeTransaction: async (id) => { + const transaction = await getTransactionById(id); + const impact = await getTransactionImpact(id); + + if (transaction && impact) { + await reverseTargetImpact(impact, transaction.amount); + await deleteTransactionImpact(id); + } + + await deleteTxnDb(id); + await get().loadTransactions({limit: 50}); + await get().loadMonthlyStats(); + }, + + loadMonthlyStats: async () => { + const now = new Date(); + const year = now.getFullYear(); + const month = now.getMonth() + 1; + + const [expense, income] = await Promise.all([ + getMonthlyTotals('expense', year, month), + getMonthlyTotals('income', year, month), + ]); + + set({monthlyExpense: expense, monthlyIncome: income}); + }, + + loadSpendingAnalytics: async () => { + const now = new Date(); + const year = now.getFullYear(); + const month = now.getMonth() + 1; + const startDate = `${year}-${String(month).padStart(2, '0')}-01`; + const endDate = + month === 12 + ? `${year + 1}-01-01` + : `${year}-${String(month + 1).padStart(2, '0')}-01`; + + const [byCategory, trend] = await Promise.all([ + getSpendingByCategory(startDate, endDate), + getMonthlySpendingTrend(6), + ]); + + set({spendingByCategory: byCategory, monthlyTrend: trend}); + }, +})); diff --git a/src/store/index.ts b/src/store/index.ts new file mode 100644 index 0000000..8e1037c --- /dev/null +++ b/src/store/index.ts @@ -0,0 +1,4 @@ +export {useSettingsStore} from './settingsStore'; +export {useNetWorthStore} from './netWorthStore'; +export {useExpenseStore} from './expenseStore'; +export {mmkvStorage} from './mmkv'; diff --git a/src/store/mmkv.ts b/src/store/mmkv.ts new file mode 100644 index 0000000..6bc664b --- /dev/null +++ b/src/store/mmkv.ts @@ -0,0 +1,72 @@ +import {createMMKV, type MMKV} from 'react-native-mmkv'; +import {AppSettings, Currency} from '../types'; + +let _storage: MMKV | null = null; + +function getStorage(): MMKV { + if (!_storage) { + _storage = createMMKV({id: 'expensso-settings'}); + } + return _storage; +} + +// ─── Keys ──────────────────────────────────────────────────────────── + +const KEYS = { + BASE_CURRENCY: 'settings.baseCurrency', + LOCALE: 'settings.locale', + THEME: 'settings.theme', + BIOMETRIC: 'settings.biometricEnabled', + ONBOARDING: 'settings.onboardingComplete', +} as const; + +// ─── Typed Getters / Setters ───────────────────────────────────────── + +export const mmkvStorage = { + getBaseCurrency: (): Currency => { + return (getStorage().getString(KEYS.BASE_CURRENCY) as Currency) || 'INR'; + }, + setBaseCurrency: (currency: Currency) => { + getStorage().set(KEYS.BASE_CURRENCY, currency); + }, + + getLocale: (): string => { + return getStorage().getString(KEYS.LOCALE) || 'en'; + }, + setLocale: (locale: string) => { + getStorage().set(KEYS.LOCALE, locale); + }, + + getTheme: (): 'light' | 'dark' | 'system' => { + return (getStorage().getString(KEYS.THEME) as AppSettings['theme']) || 'light'; + }, + setTheme: (theme: AppSettings['theme']) => { + getStorage().set(KEYS.THEME, theme); + }, + + getBiometric: (): boolean => { + return getStorage().getBoolean(KEYS.BIOMETRIC) || false; + }, + setBiometric: (enabled: boolean) => { + getStorage().set(KEYS.BIOMETRIC, enabled); + }, + + getOnboardingComplete: (): boolean => { + return getStorage().getBoolean(KEYS.ONBOARDING) || false; + }, + setOnboardingComplete: (complete: boolean) => { + getStorage().set(KEYS.ONBOARDING, complete); + }, + + getAllSettings: (): AppSettings => ({ + baseCurrency: mmkvStorage.getBaseCurrency(), + locale: mmkvStorage.getLocale(), + theme: mmkvStorage.getTheme(), + biometricEnabled: mmkvStorage.getBiometric(), + onboardingComplete: mmkvStorage.getOnboardingComplete(), + }), + + clearAll: () => { + getStorage().clearAll(); + }, +}; diff --git a/src/store/netWorthStore.ts b/src/store/netWorthStore.ts new file mode 100644 index 0000000..443c7e3 --- /dev/null +++ b/src/store/netWorthStore.ts @@ -0,0 +1,101 @@ +import {create} from 'zustand'; +import {Asset, Liability, Currency} from '../types'; +import { + getAssets, + getLiabilities, + insertAsset, + insertLiability, + updateAsset as updateAssetDb, + updateLiability as updateLiabilityDb, + deleteAsset as deleteAssetDb, + deleteLiability as deleteLiabilityDb, + getTotalAssets, + getTotalLiabilities, + saveNetWorthSnapshot, +} from '../db'; + +interface NetWorthState { + assets: Asset[]; + liabilities: Liability[]; + totalAssets: number; + totalLiabilities: number; + netWorth: number; + isLoading: boolean; + + // Actions + loadNetWorth: () => Promise; + addAsset: (asset: Omit) => Promise; + editAsset: (id: string, asset: Partial>) => Promise; + removeAsset: (id: string) => Promise; + addLiability: (liability: Omit) => Promise; + editLiability: (id: string, liability: Partial>) => Promise; + removeLiability: (id: string) => Promise; + takeSnapshot: (currency: Currency) => Promise; +} + +export const useNetWorthStore = create((set, get) => ({ + assets: [], + liabilities: [], + totalAssets: 0, + totalLiabilities: 0, + netWorth: 0, + isLoading: false, + + loadNetWorth: async () => { + set({isLoading: true}); + try { + const [assets, liabilities, totalA, totalL] = await Promise.all([ + getAssets(), + getLiabilities(), + getTotalAssets(), + getTotalLiabilities(), + ]); + set({ + assets, + liabilities, + totalAssets: totalA, + totalLiabilities: totalL, + netWorth: totalA - totalL, + isLoading: false, + }); + } catch (error) { + console.error('Failed to load net worth:', error); + set({isLoading: false}); + } + }, + + addAsset: async (asset) => { + await insertAsset(asset); + await get().loadNetWorth(); + }, + + editAsset: async (id, asset) => { + await updateAssetDb(id, asset); + await get().loadNetWorth(); + }, + + removeAsset: async (id) => { + await deleteAssetDb(id); + await get().loadNetWorth(); + }, + + addLiability: async (liability) => { + await insertLiability(liability); + await get().loadNetWorth(); + }, + + editLiability: async (id, liability) => { + await updateLiabilityDb(id, liability); + await get().loadNetWorth(); + }, + + removeLiability: async (id) => { + await deleteLiabilityDb(id); + await get().loadNetWorth(); + }, + + takeSnapshot: async (currency) => { + const {totalAssets, totalLiabilities} = get(); + await saveNetWorthSnapshot(totalAssets, totalLiabilities, currency); + }, +})); diff --git a/src/store/settingsStore.ts b/src/store/settingsStore.ts new file mode 100644 index 0000000..e3df4a2 --- /dev/null +++ b/src/store/settingsStore.ts @@ -0,0 +1,53 @@ +import {create} from 'zustand'; +import {AppSettings, Currency} from '../types'; +import {mmkvStorage} from './mmkv'; + +interface SettingsState extends AppSettings { + // Actions + setBaseCurrency: (currency: Currency) => void; + setLocale: (locale: string) => void; + setTheme: (theme: AppSettings['theme']) => void; + setBiometric: (enabled: boolean) => void; + setOnboardingComplete: (complete: boolean) => void; + hydrate: () => void; +} + +export const useSettingsStore = create((set) => ({ + // Default state (hydrated from MMKV on app load) + baseCurrency: 'INR', + locale: 'en', + theme: 'light', + biometricEnabled: false, + onboardingComplete: false, + + // Actions persist to MMKV and update zustand state simultaneously + setBaseCurrency: (currency: Currency) => { + mmkvStorage.setBaseCurrency(currency); + set({baseCurrency: currency}); + }, + + setLocale: (locale: string) => { + mmkvStorage.setLocale(locale); + set({locale}); + }, + + setTheme: (theme: AppSettings['theme']) => { + mmkvStorage.setTheme(theme); + set({theme}); + }, + + setBiometric: (enabled: boolean) => { + mmkvStorage.setBiometric(enabled); + set({biometricEnabled: enabled}); + }, + + setOnboardingComplete: (complete: boolean) => { + mmkvStorage.setOnboardingComplete(complete); + set({onboardingComplete: complete}); + }, + + hydrate: () => { + const settings = mmkvStorage.getAllSettings(); + set(settings); + }, +})); diff --git a/src/theme/ThemeProvider.tsx b/src/theme/ThemeProvider.tsx new file mode 100644 index 0000000..b1f9074 --- /dev/null +++ b/src/theme/ThemeProvider.tsx @@ -0,0 +1,36 @@ +/** + * MD3 ThemeProvider — React Context bridge between zustand settings and MD3 tokens. + * + * Wraps the app and exposes `useTheme()` which returns the fully resolved + * MD3Theme object (colors, typography, elevation, shape, spacing). + */ + +import React, {createContext, useContext, useMemo} from 'react'; +import {useColorScheme} from 'react-native'; +import {useSettingsStore} from '../store/settingsStore'; +import {LightTheme, DarkTheme} from './md3'; +import type {MD3Theme} from './md3'; + +const ThemeContext = createContext(LightTheme); + +export const ThemeProvider: React.FC<{children: React.ReactNode}> = ({children}) => { + const themeSetting = useSettingsStore(s => s.theme); + const systemScheme = useColorScheme(); + + const resolvedTheme = useMemo(() => { + if (themeSetting === 'dark') return DarkTheme; + if (themeSetting === 'light') return LightTheme; + return systemScheme === 'dark' ? DarkTheme : LightTheme; + }, [themeSetting, systemScheme]); + + return ( + + {children} + + ); +}; + +/** + * Hook to access the full MD3 theme from anywhere in the tree. + */ +export const useTheme = (): MD3Theme => useContext(ThemeContext); diff --git a/src/theme/index.ts b/src/theme/index.ts new file mode 100644 index 0000000..459a3ce --- /dev/null +++ b/src/theme/index.ts @@ -0,0 +1,12 @@ +export { + MD3LightColors, + MD3DarkColors, + MD3Typography, + MD3Elevation, + MD3Shape, + Spacing, + LightTheme, + DarkTheme, +} from './md3'; +export type {MD3Theme, MD3ColorScheme} from './md3'; +export {ThemeProvider, useTheme} from './ThemeProvider'; diff --git a/src/theme/md3.ts b/src/theme/md3.ts new file mode 100644 index 0000000..a1e17cd --- /dev/null +++ b/src/theme/md3.ts @@ -0,0 +1,380 @@ +/** + * Material Design 3 Theme System for Expensso + * + * Implements full MD3 color roles, typography scales, elevation, + * and shape tokens with "Material You"–style palette. + */ + +// ─── MD3 Color Palette ─────────────────────────────────────────────── + +export const MD3LightColors = { + // Primary + primary: '#6750A4', + onPrimary: '#FFFFFF', + primaryContainer: '#EADDFF', + onPrimaryContainer: '#21005D', + + // Secondary + secondary: '#625B71', + onSecondary: '#FFFFFF', + secondaryContainer: '#E8DEF8', + onSecondaryContainer: '#1D192B', + + // Tertiary (Fintech Teal) + tertiary: '#00897B', + onTertiary: '#FFFFFF', + tertiaryContainer: '#A7F3D0', + onTertiaryContainer: '#00382E', + + // Error + error: '#B3261E', + onError: '#FFFFFF', + errorContainer: '#F9DEDC', + onErrorContainer: '#410E0B', + + // Success (custom MD3 extension) + success: '#1B873B', + onSuccess: '#FFFFFF', + successContainer: '#D4EDDA', + onSuccessContainer: '#0A3D1B', + + // Warning (custom MD3 extension) + warning: '#E65100', + onWarning: '#FFFFFF', + warningContainer: '#FFE0B2', + onWarningContainer: '#3E2723', + + // Surface + background: '#FFFBFE', + onBackground: '#1C1B1F', + surface: '#FFFBFE', + onSurface: '#1C1B1F', + surfaceVariant: '#E7E0EC', + onSurfaceVariant: '#49454F', + surfaceDim: '#DED8E1', + surfaceBright: '#FFF8FF', + surfaceContainerLowest: '#FFFFFF', + surfaceContainerLow: '#F7F2FA', + surfaceContainer: '#F3EDF7', + surfaceContainerHigh: '#ECE6F0', + surfaceContainerHighest: '#E6E0E9', + + // Outline + outline: '#79747E', + outlineVariant: '#CAC4D0', + + // Inverse + inverseSurface: '#313033', + inverseOnSurface: '#F4EFF4', + inversePrimary: '#D0BCFF', + + // Scrim & Shadow + scrim: '#000000', + shadow: '#000000', + + // ─── App-Specific Semantic Colors ───────────────────────────── + + income: '#1B873B', + expense: '#B3261E', + asset: '#6750A4', + liability: '#E65100', + + // Chart palette (MD3 tonal) + chartColors: [ + '#6750A4', '#00897B', '#1E88E5', '#E65100', + '#8E24AA', '#00ACC1', '#43A047', '#F4511E', + '#5C6BC0', '#FFB300', + ], +}; + +export const MD3DarkColors: typeof MD3LightColors = { + // Primary + primary: '#D0BCFF', + onPrimary: '#381E72', + primaryContainer: '#4F378B', + onPrimaryContainer: '#EADDFF', + + // Secondary + secondary: '#CCC2DC', + onSecondary: '#332D41', + secondaryContainer: '#4A4458', + onSecondaryContainer: '#E8DEF8', + + // Tertiary + tertiary: '#4DB6AC', + onTertiary: '#003730', + tertiaryContainer: '#005048', + onTertiaryContainer: '#A7F3D0', + + // Error + error: '#F2B8B5', + onError: '#601410', + errorContainer: '#8C1D18', + onErrorContainer: '#F9DEDC', + + // Success + success: '#81C784', + onSuccess: '#0A3D1B', + successContainer: '#1B5E20', + onSuccessContainer: '#D4EDDA', + + // Warning + warning: '#FFB74D', + onWarning: '#3E2723', + warningContainer: '#BF360C', + onWarningContainer: '#FFE0B2', + + // Surface + background: '#141218', + onBackground: '#E6E0E9', + surface: '#141218', + onSurface: '#E6E0E9', + surfaceVariant: '#49454F', + onSurfaceVariant: '#CAC4D0', + surfaceDim: '#141218', + surfaceBright: '#3B383E', + surfaceContainerLowest: '#0F0D13', + surfaceContainerLow: '#1D1B20', + surfaceContainer: '#211F26', + surfaceContainerHigh: '#2B2930', + surfaceContainerHighest: '#36343B', + + // Outline + outline: '#938F99', + outlineVariant: '#49454F', + + // Inverse + inverseSurface: '#E6E0E9', + inverseOnSurface: '#313033', + inversePrimary: '#6750A4', + + // Scrim & Shadow + scrim: '#000000', + shadow: '#000000', + + // App-Specific + income: '#81C784', + expense: '#F2B8B5', + asset: '#D0BCFF', + liability: '#FFB74D', + + chartColors: [ + '#D0BCFF', '#4DB6AC', '#64B5F6', '#FFB74D', + '#CE93D8', '#4DD0E1', '#81C784', '#FF8A65', + '#9FA8DA', '#FFD54F', + ], +}; + +// ─── MD3 Typography Scale ──────────────────────────────────────────── + +const fontFamily = 'System'; // Falls back to Roboto on Android, SF Pro on iOS + +export const MD3Typography = { + displayLarge: { + fontFamily, + fontSize: 57, + fontWeight: '400' as const, + lineHeight: 64, + letterSpacing: -0.25, + }, + displayMedium: { + fontFamily, + fontSize: 45, + fontWeight: '400' as const, + lineHeight: 52, + letterSpacing: 0, + }, + displaySmall: { + fontFamily, + fontSize: 36, + fontWeight: '400' as const, + lineHeight: 44, + letterSpacing: 0, + }, + headlineLarge: { + fontFamily, + fontSize: 32, + fontWeight: '400' as const, + lineHeight: 40, + letterSpacing: 0, + }, + headlineMedium: { + fontFamily, + fontSize: 28, + fontWeight: '400' as const, + lineHeight: 36, + letterSpacing: 0, + }, + headlineSmall: { + fontFamily, + fontSize: 24, + fontWeight: '400' as const, + lineHeight: 32, + letterSpacing: 0, + }, + titleLarge: { + fontFamily, + fontSize: 22, + fontWeight: '500' as const, + lineHeight: 28, + letterSpacing: 0, + }, + titleMedium: { + fontFamily, + fontSize: 16, + fontWeight: '500' as const, + lineHeight: 24, + letterSpacing: 0.15, + }, + titleSmall: { + fontFamily, + fontSize: 14, + fontWeight: '500' as const, + lineHeight: 20, + letterSpacing: 0.1, + }, + bodyLarge: { + fontFamily, + fontSize: 16, + fontWeight: '400' as const, + lineHeight: 24, + letterSpacing: 0.5, + }, + bodyMedium: { + fontFamily, + fontSize: 14, + fontWeight: '400' as const, + lineHeight: 20, + letterSpacing: 0.25, + }, + bodySmall: { + fontFamily, + fontSize: 12, + fontWeight: '400' as const, + lineHeight: 16, + letterSpacing: 0.4, + }, + labelLarge: { + fontFamily, + fontSize: 14, + fontWeight: '500' as const, + lineHeight: 20, + letterSpacing: 0.1, + }, + labelMedium: { + fontFamily, + fontSize: 12, + fontWeight: '500' as const, + lineHeight: 16, + letterSpacing: 0.5, + }, + labelSmall: { + fontFamily, + fontSize: 11, + fontWeight: '500' as const, + lineHeight: 16, + letterSpacing: 0.5, + }, +}; + +// ─── MD3 Elevation (Shadow Presets) ────────────────────────────────── + +export const MD3Elevation = { + level0: { + shadowColor: 'transparent', + shadowOffset: {width: 0, height: 0}, + shadowOpacity: 0, + shadowRadius: 0, + elevation: 0, + }, + level1: { + shadowColor: '#000', + shadowOffset: {width: 0, height: 1}, + shadowOpacity: 0.05, + shadowRadius: 3, + elevation: 1, + }, + level2: { + shadowColor: '#000', + shadowOffset: {width: 0, height: 2}, + shadowOpacity: 0.08, + shadowRadius: 6, + elevation: 3, + }, + level3: { + shadowColor: '#000', + shadowOffset: {width: 0, height: 4}, + shadowOpacity: 0.11, + shadowRadius: 8, + elevation: 6, + }, + level4: { + shadowColor: '#000', + shadowOffset: {width: 0, height: 6}, + shadowOpacity: 0.14, + shadowRadius: 10, + elevation: 8, + }, + level5: { + shadowColor: '#000', + shadowOffset: {width: 0, height: 8}, + shadowOpacity: 0.17, + shadowRadius: 12, + elevation: 12, + }, +}; + +// ─── MD3 Shape (Corner Radii) ──────────────────────────────────────── + +export const MD3Shape = { + none: 0, + extraSmall: 4, + small: 8, + medium: 12, + large: 16, + extraLarge: 28, + full: 9999, +}; + +// ─── Spacing Scale ─────────────────────────────────────────────────── + +export const Spacing = { + xs: 4, + sm: 8, + md: 12, + lg: 16, + xl: 20, + xxl: 24, + xxxl: 32, +}; + +// ─── Composite Theme Object ───────────────────────────────────────── + +export type MD3ColorScheme = typeof MD3LightColors; + +export interface MD3Theme { + colors: MD3ColorScheme; + typography: typeof MD3Typography; + elevation: typeof MD3Elevation; + shape: typeof MD3Shape; + spacing: typeof Spacing; + isDark: boolean; +} + +export const LightTheme: MD3Theme = { + colors: MD3LightColors, + typography: MD3Typography, + elevation: MD3Elevation, + shape: MD3Shape, + spacing: Spacing, + isDark: false, +}; + +export const DarkTheme: MD3Theme = { + colors: MD3DarkColors, + typography: MD3Typography, + elevation: MD3Elevation, + shape: MD3Shape, + spacing: Spacing, + isDark: true, +}; diff --git a/src/types/index.ts b/src/types/index.ts new file mode 100644 index 0000000..151962d --- /dev/null +++ b/src/types/index.ts @@ -0,0 +1,118 @@ +// ─── Core Domain Types ─────────────────────────────────────────────── + +export type Currency = 'INR' | 'USD' | 'EUR' | 'GBP'; + +export type PaymentMethod = 'UPI' | 'Cash' | 'Credit Card' | 'Debit Card' | 'Digital Wallet' | 'Net Banking' | 'Other'; + +export type AssetType = 'Bank' | 'Stocks' | 'Gold' | 'EPF' | 'Real Estate' | 'Mutual Funds' | 'Fixed Deposit' | 'PPF' | 'Other'; + +export type LiabilityType = 'Home Loan' | 'Car Loan' | 'Personal Loan' | 'Education Loan' | 'Credit Card' | 'Other'; + +export type TransactionType = 'income' | 'expense'; +export type NetWorthTargetType = 'asset' | 'liability'; +export type ImpactOperation = 'add' | 'subtract'; + +// ─── Database Models ───────────────────────────────────────────────── + +export interface Category { + id: string; + name: string; + icon: string; + color: string; + type: TransactionType; + isDefault: boolean; + createdAt: string; +} + +export interface Transaction { + id: string; + amount: number; + currency: Currency; + type: TransactionType; + categoryId: string; + categoryName?: string; + categoryIcon?: string; + categoryColor?: string; + paymentMethod: PaymentMethod; + note: string; + date: string; // ISO string + createdAt: string; + updatedAt: string; +} + +export interface TransactionImpact { + transactionId: string; + targetType: NetWorthTargetType; + targetId: string; + operation: ImpactOperation; +} + +export interface Asset { + id: string; + name: string; + type: AssetType; + currentValue: number; + currency: Currency; + note: string; + lastUpdated: string; + createdAt: string; +} + +export interface Liability { + id: string; + name: string; + type: LiabilityType; + outstandingAmount: number; + currency: Currency; + interestRate: number; + emiAmount: number; + note: string; + lastUpdated: string; + createdAt: string; +} + +// ─── Net Worth ─────────────────────────────────────────────────────── + +export interface NetWorthSnapshot { + id: string; + totalAssets: number; + totalLiabilities: number; + netWorth: number; + currency: Currency; + snapshotDate: string; + createdAt: string; +} + +// ─── Settings ──────────────────────────────────────────────────────── + +export interface AppSettings { + baseCurrency: Currency; + locale: string; + theme: 'light' | 'dark' | 'system'; + biometricEnabled: boolean; + onboardingComplete: boolean; +} + +// ─── Chart Data ────────────────────────────────────────────────────── + +export interface ChartDataPoint { + value: number; + label: string; + frontColor?: string; +} + +export interface PieDataPoint { + value: number; + text: string; + color: string; + focused?: boolean; +} + +// ─── Exchange Rates ────────────────────────────────────────────────── + +export interface ExchangeRates { + INR: number; + USD: number; + EUR: number; + GBP: number; +} diff --git a/src/utils/formatting.ts b/src/utils/formatting.ts new file mode 100644 index 0000000..19f5f9e --- /dev/null +++ b/src/utils/formatting.ts @@ -0,0 +1,122 @@ +import {Currency} from '../types'; +import {CURRENCY_SYMBOLS, STATIC_EXCHANGE_RATES} from '../constants'; + +/** + * Formats a number in Indian Lakh/Crore notation. + * e.g., 1500000 → "15,00,000" + */ +export function formatIndianNumber(num: number): string { + const isNegative = num < 0; + const absNum = Math.abs(num); + const [intPart, decPart] = absNum.toFixed(2).split('.'); + + if (intPart.length <= 3) { + const formatted = intPart + (decPart && decPart !== '00' ? '.' + decPart : ''); + return isNegative ? '-' + formatted : formatted; + } + + // Last 3 digits + const lastThree = intPart.slice(-3); + const remaining = intPart.slice(0, -3); + + // Group remaining digits in pairs (Indian system) + const pairs = remaining.replace(/\B(?=(\d{2})+(?!\d))/g, ','); + + const formatted = + pairs + ',' + lastThree + (decPart && decPart !== '00' ? '.' + decPart : ''); + return isNegative ? '-' + formatted : formatted; +} + +/** + * Formats a number in Western notation (comma every 3 digits). + */ +export function formatWesternNumber(num: number): string { + const isNegative = num < 0; + const absNum = Math.abs(num); + const [intPart, decPart] = absNum.toFixed(2).split('.'); + const formatted = + intPart.replace(/\B(?=(\d{3})+(?!\d))/g, ',') + + (decPart && decPart !== '00' ? '.' + decPart : ''); + return isNegative ? '-' + formatted : formatted; +} + +/** + * Formats amount with currency symbol and locale-aware grouping. + */ +export function formatCurrency(amount: number, currency: Currency = 'INR'): string { + const symbol = CURRENCY_SYMBOLS[currency] || '₹'; + const formatted = + currency === 'INR' + ? formatIndianNumber(amount) + : formatWesternNumber(amount); + return `${symbol}${formatted}`; +} + +/** + * Compact formatting for large values on charts/cards. + * e.g., 1500000 → "₹15L", 25000000 → "₹2.5Cr" + */ +export function formatCompact(amount: number, currency: Currency = 'INR'): string { + const symbol = CURRENCY_SYMBOLS[currency] || '₹'; + const abs = Math.abs(amount); + const sign = amount < 0 ? '-' : ''; + + if (currency === 'INR') { + if (abs >= 1_00_00_000) { + return `${sign}${symbol}${(abs / 1_00_00_000).toFixed(1).replace(/\.0$/, '')}Cr`; + } + if (abs >= 1_00_000) { + return `${sign}${symbol}${(abs / 1_00_000).toFixed(1).replace(/\.0$/, '')}L`; + } + if (abs >= 1_000) { + return `${sign}${symbol}${(abs / 1_000).toFixed(1).replace(/\.0$/, '')}K`; + } + return `${sign}${symbol}${abs}`; + } + + // Western compact + if (abs >= 1_000_000_000) { + return `${sign}${symbol}${(abs / 1_000_000_000).toFixed(1).replace(/\.0$/, '')}B`; + } + if (abs >= 1_000_000) { + return `${sign}${symbol}${(abs / 1_000_000).toFixed(1).replace(/\.0$/, '')}M`; + } + if (abs >= 1_000) { + return `${sign}${symbol}${(abs / 1_000).toFixed(1).replace(/\.0$/, '')}K`; + } + return `${sign}${symbol}${abs}`; +} + +/** + * Convert an amount from one currency to another using static rates + * (all rates are relative to INR as base). + */ +export function convertCurrency( + amount: number, + from: Currency, + to: Currency, +): number { + if (from === to) {return amount;} + // Convert to INR first, then to target + const amountInINR = amount * STATIC_EXCHANGE_RATES[from]; + return amountInINR / STATIC_EXCHANGE_RATES[to]; +} + +/** + * Calculate percentage change between two values. + */ +export function percentageChange(current: number, previous: number): number { + if (previous === 0) {return current > 0 ? 100 : 0;} + return ((current - previous) / Math.abs(previous)) * 100; +} + +/** + * Generate a simple UUID v4 string. + */ +export function generateId(): string { + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => { + const r = (Math.random() * 16) | 0; + const v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); +} diff --git a/src/utils/index.ts b/src/utils/index.ts new file mode 100644 index 0000000..44e900d --- /dev/null +++ b/src/utils/index.ts @@ -0,0 +1,9 @@ +export { + formatCurrency, + formatCompact, + formatIndianNumber, + formatWesternNumber, + convertCurrency, + percentageChange, + generateId, +} from './formatting'; diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..7a71f25 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "@react-native/typescript-config", + "compilerOptions": { + "types": ["jest"], + "baseUrl": ".", + "paths": { + "@/*": ["src/*"] + }, + "strict": true + }, + "include": ["**/*.ts", "**/*.tsx"], + "exclude": ["**/node_modules", "**/Pods"] +}