From fc753891f76811c4dac07231b2258c66f5c91867 Mon Sep 17 00:00:00 2001 From: Brion Date: Mon, 19 Oct 2026 22:44:56 +0530 Subject: [PATCH] Add the SDK quickstart samples Move the iOS, Android, Flutter, React, Vue, Next.js, Nuxt, Browser, Express and Node.js quickstarts here from the SDK repositories. Each sample now depends on the published SDK release, is built by the PR builder, and is released through the release workflow, which now runs as one matrix job. Refs thunder-id/thunderid#5904 Signed-off-by: Brion --- .github/actions/bump-version/action.yml | 34 +- .github/workflows/pr-builder.yml | 149 +- .github/workflows/release.yml | 184 +- README.md | 12 +- quickstarts/android/.gitignore | 42 + quickstarts/android/README.md | 64 + quickstarts/android/assetlinks.json.example | 12 + quickstarts/android/build.gradle.kts | 66 + quickstarts/android/config.properties.example | 4 + quickstarts/android/gradle.properties | 2 + .../android/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 53636 bytes .../gradle/wrapper/gradle-wrapper.properties | 7 + quickstarts/android/gradlew | 160 + quickstarts/android/settings.gradle.kts | 22 + .../android/src/main/AndroidManifest.xml | 34 + .../dev/thunderid/quickstart/AuthScreen.kt | 313 + .../dev/thunderid/quickstart/HomeScreen.kt | 730 ++ .../dev/thunderid/quickstart/MainActivity.kt | 70 + .../quickstart/PlayIntegrityTokenProvider.kt | 44 + .../dev/thunderid/quickstart/RootView.kt | 58 + .../drawable-night/ic_launcher_foreground.png | Bin 0 -> 17135 bytes .../res/drawable/ic_launcher_foreground.png | Bin 0 -> 17062 bytes .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 6289 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 6289 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 3534 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 3534 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 9992 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 9992 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 19914 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 19914 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 32276 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 32276 bytes .../res/values-night/ic_launcher_colors.xml | 4 + .../main/res/values/ic_launcher_colors.xml | 4 + .../main/res/xml/network_security_config.xml | 9 + .../thunderid-config/thunderid-config.yaml | 34 + quickstarts/browser/.env.example | 5 + quickstarts/browser/.gitignore | 3 + quickstarts/browser/.stackblitzrc | 4 + quickstarts/browser/README.md | 37 + quickstarts/browser/index.html | 12 + quickstarts/browser/package.json | 18 + quickstarts/browser/pnpm-lock.yaml | 790 ++ quickstarts/browser/pnpm-workspace.yaml | 3 + quickstarts/browser/scripts/prepare-dev.cjs | 19 + quickstarts/browser/src/auth.js | 18 + quickstarts/browser/src/components/nav.js | 171 + .../browser/src/components/profileFields.js | 305 + quickstarts/browser/src/main.js | 101 + quickstarts/browser/src/pages/account.js | 307 + quickstarts/browser/src/pages/home.js | 321 + quickstarts/browser/src/pages/token.js | 118 + quickstarts/browser/src/style.css | 1595 +++++ quickstarts/browser/vite.config.js | 7 + quickstarts/express/.env.example | 11 + quickstarts/express/.gitignore | 2 + quickstarts/express/.stackblitzrc | 4 + quickstarts/express/README.md | 99 + quickstarts/express/index.mjs | 406 ++ quickstarts/express/lib/auth.mjs | 47 + quickstarts/express/lib/expressLogo.mjs | 10 + quickstarts/express/lib/layout.mjs | 96 + quickstarts/express/lib/thunderMark.mjs | 8 + quickstarts/express/package.json | 16 + quickstarts/express/pnpm-lock.yaml | 760 ++ ...Express-Quickstart.postman_collection.json | 62 + quickstarts/express/public/styles.css | 991 +++ quickstarts/express/scripts/prepare-dev.cjs | 19 + quickstarts/flutter/.env.example | 4 + quickstarts/flutter/.gitignore | 130 + quickstarts/flutter/.metadata | 30 + quickstarts/flutter/README.md | 44 + quickstarts/flutter/analysis_options.yaml | 28 + quickstarts/flutter/android/.gitignore | 14 + .../flutter/android/app/build.gradle.kts | 44 + .../android/app/src/debug/AndroidManifest.xml | 7 + .../android/app/src/main/AndroidManifest.xml | 46 + .../flutter_quickstart/MainActivity.kt | 5 + .../res/drawable-v21/launch_background.xml | 12 + .../main/res/drawable/launch_background.xml | 12 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 544 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 442 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 721 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 1031 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 1443 bytes .../app/src/main/res/values-night/styles.xml | 18 + .../app/src/main/res/values/styles.xml | 18 + .../app/src/profile/AndroidManifest.xml | 7 + quickstarts/flutter/android/build.gradle.kts | 25 + .../android/flutter_quickstart_android.iml | 29 + quickstarts/flutter/android/gradle.properties | 2 + .../gradle/wrapper/gradle-wrapper.properties | 5 + .../flutter/android/settings.gradle.kts | 26 + quickstarts/flutter/assetlinks.json.example | 12 + quickstarts/flutter/flutter_b2c.iml | 17 + quickstarts/flutter/flutter_quickstart.iml | 17 + quickstarts/flutter/ios/.gitignore | 34 + .../ios/Flutter/AppFrameworkInfo.plist | 24 + .../flutter/ios/Flutter/Debug.xcconfig | 2 + .../flutter/ios/Flutter/Release.xcconfig | 2 + quickstarts/flutter/ios/Podfile | 44 + .../ios/Runner.xcodeproj/project.pbxproj | 737 ++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../xcshareddata/swiftpm/Package.resolved | 14 + .../xcshareddata/xcschemes/Runner.xcscheme | 101 + .../contents.xcworkspacedata | 10 + .../flutter/ios/Runner/AppDelegate.swift | 16 + .../AppIcon.appiconset/Contents.json | 122 + .../Icon-App-1024x1024@1x.png | Bin 0 -> 277280 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 0 -> 1513 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 0 -> 2389 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 0 -> 3788 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 0 -> 1695 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 0 -> 3626 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 0 -> 6046 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 0 -> 2389 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 0 -> 5416 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 0 -> 9541 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 0 -> 9541 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 0 -> 17504 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 0 -> 5114 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 0 -> 14123 bytes .../Icon-App-83.5x83.5@2x.png | Bin 0 -> 16635 bytes .../LaunchImage.imageset/Contents.json | 23 + .../LaunchImage.imageset/LaunchImage.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/README.md | 5 + .../Runner/Base.lproj/LaunchScreen.storyboard | 37 + .../ios/Runner/Base.lproj/Main.storyboard | 26 + quickstarts/flutter/ios/Runner/Info.plist | 75 + .../ios/Runner/Runner-Bridging-Header.h | 1 + .../flutter/ios/Runner/Runner.entitlements | 10 + .../flutter/ios/Runner/SceneDelegate.swift | 6 + .../flutter/ios/RunnerTests/RunnerTests.swift | 12 + quickstarts/flutter/lib/app.dart | 63 + quickstarts/flutter/lib/main.dart | 30 + .../flutter/lib/screens/auth_screen.dart | 328 + .../flutter/lib/screens/home_screen.dart | 1066 +++ .../flutter/lib/screens/profile_screen.dart | 29 + quickstarts/flutter/pubspec.yaml | 25 + quickstarts/flutter/test/widget_test.dart | 48 + .../thunderid-config/thunderid-config.yaml | 35 + quickstarts/ios/.gitignore | 68 + .../contents.xcworkspacedata | 7 + .../xcschemes/Quickstart.xcscheme | 79 + quickstarts/ios/Info.plist | 58 + quickstarts/ios/Package.resolved | 14 + quickstarts/ios/Package.swift | 22 + .../ios/Quickstart.xcodeproj/project.pbxproj | 352 + .../contents.xcworkspacedata | 7 + .../xcschemes/Quickstart.xcscheme | 78 + quickstarts/ios/README.md | 41 + quickstarts/ios/Sources/App.swift | 34 + .../ios/Sources/AppAttestTokenProvider.swift | 49 + .../AppIcon.appiconset/Contents.json | 116 + .../AppIcon.appiconset/icon-1024.png | Bin 0 -> 827730 bytes .../AppIcon.appiconset/icon-120.png | Bin 0 -> 14154 bytes .../AppIcon.appiconset/icon-152.png | Bin 0 -> 21874 bytes .../AppIcon.appiconset/icon-167.png | Bin 0 -> 25091 bytes .../AppIcon.appiconset/icon-180.png | Bin 0 -> 28864 bytes .../AppIcon.appiconset/icon-20.png | Bin 0 -> 995 bytes .../AppIcon.appiconset/icon-29.png | Bin 0 -> 1644 bytes .../AppIcon.appiconset/icon-40.png | Bin 0 -> 2696 bytes .../AppIcon.appiconset/icon-58.png | Bin 0 -> 4652 bytes .../AppIcon.appiconset/icon-60.png | Bin 0 -> 4865 bytes .../AppIcon.appiconset/icon-76.png | Bin 0 -> 7011 bytes .../AppIcon.appiconset/icon-80.png | Bin 0 -> 7490 bytes .../AppIcon.appiconset/icon-87.png | Bin 0 -> 8528 bytes .../ios/Sources/Assets.xcassets/Contents.json | 6 + quickstarts/ios/Sources/Config.plist.example | 12 + quickstarts/ios/Sources/HomeView.swift | 411 ++ .../ios/Sources/HomeViewComponents.swift | 167 + quickstarts/ios/Sources/ProfileView.swift | 51 + .../ios/Sources/Quickstart.entitlements | 10 + quickstarts/ios/Sources/RootView.swift | 31 + quickstarts/ios/Sources/SignInView.swift | 354 + quickstarts/ios/Sources/TokenDebugView.swift | 279 + .../thunderid-config/thunderid-config.yaml | 34 + quickstarts/nextjs/.env.example | 20 + quickstarts/nextjs/.gitignore | 3 + quickstarts/nextjs/.stackblitzrc | 4 + quickstarts/nextjs/README.md | 117 + quickstarts/nextjs/app/account/page.tsx | 212 + quickstarts/nextjs/app/actions.ts | 19 + .../app/api/auth/backchannel-logout/route.ts | 7 + .../nextjs/app/components/ConfigNotice.tsx | 121 + .../nextjs/app/components/HeroCtas.tsx | 16 + quickstarts/nextjs/app/components/Nav.tsx | 102 + .../nextjs/app/components/ThunderMark.tsx | 36 + .../nextjs/app/components/icons/NextLogo.tsx | 17 + quickstarts/nextjs/app/globals.css | 1521 ++++ quickstarts/nextjs/app/layout.tsx | 47 + quickstarts/nextjs/app/not-found.tsx | 13 + quickstarts/nextjs/app/page.tsx | 264 + quickstarts/nextjs/app/signin/page.tsx | 30 + quickstarts/nextjs/app/signup/page.tsx | 27 + quickstarts/nextjs/app/token/page.tsx | 143 + quickstarts/nextjs/next-env.d.ts | 6 + quickstarts/nextjs/next.config.ts | 5 + quickstarts/nextjs/package.json | 24 + quickstarts/nextjs/pnpm-lock.yaml | 1391 ++++ quickstarts/nextjs/pnpm-workspace.yaml | 10 + quickstarts/nextjs/proxy.ts | 13 + quickstarts/nextjs/scripts/prepare-dev.cjs | 78 + quickstarts/nextjs/tsconfig.json | 21 + quickstarts/node/.env.example | 14 + quickstarts/node/.gitignore | 2 + quickstarts/node/.stackblitzrc | 4 + quickstarts/node/README.md | 79 + quickstarts/node/index.mjs | 42 + quickstarts/node/lib/AuthService.mjs | 33 + quickstarts/node/lib/InventoryService.mjs | 29 + quickstarts/node/lib/ui.mjs | 89 + quickstarts/node/package.json | 16 + quickstarts/node/pnpm-lock.yaml | 315 + quickstarts/node/scripts/prepare-dev.cjs | 19 + quickstarts/nuxt/.env.example | 20 + quickstarts/nuxt/.gitignore | 5 + quickstarts/nuxt/.stackblitzrc | 4 + quickstarts/nuxt/README.md | 119 + quickstarts/nuxt/app/app.vue | 28 + quickstarts/nuxt/app/assets/styles.css | 1397 ++++ quickstarts/nuxt/app/components/AppNav.vue | 82 + .../nuxt/app/components/ConfigNotice.vue | 112 + quickstarts/nuxt/app/pages/account.vue | 162 + quickstarts/nuxt/app/pages/index.vue | 234 + quickstarts/nuxt/app/pages/signin.vue | 24 + quickstarts/nuxt/app/pages/signup.vue | 24 + quickstarts/nuxt/app/pages/token.vue | 125 + quickstarts/nuxt/nuxt.config.ts | 11 + quickstarts/nuxt/package.json | 18 + quickstarts/nuxt/pnpm-lock.yaml | 6358 +++++++++++++++++ quickstarts/nuxt/pnpm-workspace.yaml | 18 + quickstarts/nuxt/scripts/prepare-dev.cjs | 73 + quickstarts/react/.env.example | 5 + quickstarts/react/.gitignore | 3 + quickstarts/react/.stackblitzrc | 4 + quickstarts/react/README.md | 36 + quickstarts/react/index.html | 13 + quickstarts/react/package.json | 23 + quickstarts/react/pnpm-lock.yaml | 1647 +++++ quickstarts/react/pnpm-workspace.yaml | 3 + quickstarts/react/scripts/prepare-dev.cjs | 19 + quickstarts/react/src/App.css | 1069 +++ quickstarts/react/src/App.jsx | 22 + .../react/src/components/ConfigNotice.jsx | 164 + quickstarts/react/src/components/HeroCtas.jsx | 15 + quickstarts/react/src/components/Nav.jsx | 111 + .../react/src/components/ThunderMark.jsx | 10 + .../react/src/components/icons/ReactLogo.jsx | 16 + quickstarts/react/src/index.css | 9 + quickstarts/react/src/main.jsx | 24 + quickstarts/react/src/pages/AccountPage.jsx | 187 + quickstarts/react/src/pages/HomePage.jsx | 254 + .../react/src/pages/TokenDebugPage.jsx | 139 + quickstarts/react/vite.config.js | 6 + quickstarts/vue/.env.example | 5 + quickstarts/vue/.gitignore | 3 + quickstarts/vue/.stackblitzrc | 4 + quickstarts/vue/README.md | 36 + quickstarts/vue/index.html | 13 + quickstarts/vue/package.json | 20 + quickstarts/vue/pnpm-lock.yaml | 992 +++ quickstarts/vue/pnpm-workspace.yaml | 3 + quickstarts/vue/scripts/prepare-dev.cjs | 19 + quickstarts/vue/src/App.vue | 40 + .../vue/src/components/ConfigNotice.vue | 157 + quickstarts/vue/src/components/Nav.vue | 85 + quickstarts/vue/src/main.js | 8 + quickstarts/vue/src/pages/AccountPage.vue | 146 + quickstarts/vue/src/pages/HomePage.vue | 249 + quickstarts/vue/src/pages/TokenDebugPage.vue | 118 + quickstarts/vue/src/style.css | 1103 +++ quickstarts/vue/vite.config.js | 6 + 279 files changed, 34647 insertions(+), 75 deletions(-) create mode 100644 quickstarts/android/.gitignore create mode 100644 quickstarts/android/README.md create mode 100644 quickstarts/android/assetlinks.json.example create mode 100644 quickstarts/android/build.gradle.kts create mode 100644 quickstarts/android/config.properties.example create mode 100644 quickstarts/android/gradle.properties create mode 100644 quickstarts/android/gradle/wrapper/gradle-wrapper.jar create mode 100644 quickstarts/android/gradle/wrapper/gradle-wrapper.properties create mode 100755 quickstarts/android/gradlew create mode 100644 quickstarts/android/settings.gradle.kts create mode 100644 quickstarts/android/src/main/AndroidManifest.xml create mode 100644 quickstarts/android/src/main/kotlin/dev/thunderid/quickstart/AuthScreen.kt create mode 100644 quickstarts/android/src/main/kotlin/dev/thunderid/quickstart/HomeScreen.kt create mode 100644 quickstarts/android/src/main/kotlin/dev/thunderid/quickstart/MainActivity.kt create mode 100644 quickstarts/android/src/main/kotlin/dev/thunderid/quickstart/PlayIntegrityTokenProvider.kt create mode 100644 quickstarts/android/src/main/kotlin/dev/thunderid/quickstart/RootView.kt create mode 100644 quickstarts/android/src/main/res/drawable-night/ic_launcher_foreground.png create mode 100644 quickstarts/android/src/main/res/drawable/ic_launcher_foreground.png create mode 100644 quickstarts/android/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 quickstarts/android/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 quickstarts/android/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 quickstarts/android/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 quickstarts/android/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 quickstarts/android/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 quickstarts/android/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 quickstarts/android/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 quickstarts/android/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 quickstarts/android/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 quickstarts/android/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 quickstarts/android/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 quickstarts/android/src/main/res/values-night/ic_launcher_colors.xml create mode 100644 quickstarts/android/src/main/res/values/ic_launcher_colors.xml create mode 100644 quickstarts/android/src/main/res/xml/network_security_config.xml create mode 100644 quickstarts/android/thunderid-config/thunderid-config.yaml create mode 100644 quickstarts/browser/.env.example create mode 100644 quickstarts/browser/.gitignore create mode 100644 quickstarts/browser/.stackblitzrc create mode 100644 quickstarts/browser/README.md create mode 100644 quickstarts/browser/index.html create mode 100644 quickstarts/browser/package.json create mode 100644 quickstarts/browser/pnpm-lock.yaml create mode 100644 quickstarts/browser/pnpm-workspace.yaml create mode 100644 quickstarts/browser/scripts/prepare-dev.cjs create mode 100644 quickstarts/browser/src/auth.js create mode 100644 quickstarts/browser/src/components/nav.js create mode 100644 quickstarts/browser/src/components/profileFields.js create mode 100644 quickstarts/browser/src/main.js create mode 100644 quickstarts/browser/src/pages/account.js create mode 100644 quickstarts/browser/src/pages/home.js create mode 100644 quickstarts/browser/src/pages/token.js create mode 100644 quickstarts/browser/src/style.css create mode 100644 quickstarts/browser/vite.config.js create mode 100644 quickstarts/express/.env.example create mode 100644 quickstarts/express/.gitignore create mode 100644 quickstarts/express/.stackblitzrc create mode 100644 quickstarts/express/README.md create mode 100644 quickstarts/express/index.mjs create mode 100644 quickstarts/express/lib/auth.mjs create mode 100644 quickstarts/express/lib/expressLogo.mjs create mode 100644 quickstarts/express/lib/layout.mjs create mode 100644 quickstarts/express/lib/thunderMark.mjs create mode 100644 quickstarts/express/package.json create mode 100644 quickstarts/express/pnpm-lock.yaml create mode 100644 quickstarts/express/postman/ThunderID-Express-Quickstart.postman_collection.json create mode 100644 quickstarts/express/public/styles.css create mode 100644 quickstarts/express/scripts/prepare-dev.cjs create mode 100644 quickstarts/flutter/.env.example create mode 100644 quickstarts/flutter/.gitignore create mode 100644 quickstarts/flutter/.metadata create mode 100644 quickstarts/flutter/README.md create mode 100644 quickstarts/flutter/analysis_options.yaml create mode 100644 quickstarts/flutter/android/.gitignore create mode 100644 quickstarts/flutter/android/app/build.gradle.kts create mode 100644 quickstarts/flutter/android/app/src/debug/AndroidManifest.xml create mode 100644 quickstarts/flutter/android/app/src/main/AndroidManifest.xml create mode 100644 quickstarts/flutter/android/app/src/main/kotlin/dev/thunderid/flutter_quickstart/MainActivity.kt create mode 100644 quickstarts/flutter/android/app/src/main/res/drawable-v21/launch_background.xml create mode 100644 quickstarts/flutter/android/app/src/main/res/drawable/launch_background.xml create mode 100644 quickstarts/flutter/android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 quickstarts/flutter/android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 quickstarts/flutter/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 quickstarts/flutter/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 quickstarts/flutter/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 quickstarts/flutter/android/app/src/main/res/values-night/styles.xml create mode 100644 quickstarts/flutter/android/app/src/main/res/values/styles.xml create mode 100644 quickstarts/flutter/android/app/src/profile/AndroidManifest.xml create mode 100644 quickstarts/flutter/android/build.gradle.kts create mode 100644 quickstarts/flutter/android/flutter_quickstart_android.iml create mode 100644 quickstarts/flutter/android/gradle.properties create mode 100644 quickstarts/flutter/android/gradle/wrapper/gradle-wrapper.properties create mode 100644 quickstarts/flutter/android/settings.gradle.kts create mode 100644 quickstarts/flutter/assetlinks.json.example create mode 100644 quickstarts/flutter/flutter_b2c.iml create mode 100644 quickstarts/flutter/flutter_quickstart.iml create mode 100644 quickstarts/flutter/ios/.gitignore create mode 100644 quickstarts/flutter/ios/Flutter/AppFrameworkInfo.plist create mode 100644 quickstarts/flutter/ios/Flutter/Debug.xcconfig create mode 100644 quickstarts/flutter/ios/Flutter/Release.xcconfig create mode 100644 quickstarts/flutter/ios/Podfile create mode 100644 quickstarts/flutter/ios/Runner.xcodeproj/project.pbxproj create mode 100644 quickstarts/flutter/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 quickstarts/flutter/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 quickstarts/flutter/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 quickstarts/flutter/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved create mode 100644 quickstarts/flutter/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 quickstarts/flutter/ios/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 quickstarts/flutter/ios/Runner/AppDelegate.swift create mode 100644 quickstarts/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 quickstarts/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 quickstarts/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png create mode 100644 quickstarts/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png create mode 100644 quickstarts/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png create mode 100644 quickstarts/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png create mode 100644 quickstarts/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png create mode 100644 quickstarts/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png create mode 100644 quickstarts/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png create mode 100644 quickstarts/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png create mode 100644 quickstarts/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png create mode 100644 quickstarts/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png create mode 100644 quickstarts/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png create mode 100644 quickstarts/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png create mode 100644 quickstarts/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png create mode 100644 quickstarts/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png create mode 100644 quickstarts/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json create mode 100644 quickstarts/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png create mode 100644 quickstarts/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png create mode 100644 quickstarts/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png create mode 100644 quickstarts/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md create mode 100644 quickstarts/flutter/ios/Runner/Base.lproj/LaunchScreen.storyboard create mode 100644 quickstarts/flutter/ios/Runner/Base.lproj/Main.storyboard create mode 100644 quickstarts/flutter/ios/Runner/Info.plist create mode 100644 quickstarts/flutter/ios/Runner/Runner-Bridging-Header.h create mode 100644 quickstarts/flutter/ios/Runner/Runner.entitlements create mode 100644 quickstarts/flutter/ios/Runner/SceneDelegate.swift create mode 100644 quickstarts/flutter/ios/RunnerTests/RunnerTests.swift create mode 100644 quickstarts/flutter/lib/app.dart create mode 100644 quickstarts/flutter/lib/main.dart create mode 100644 quickstarts/flutter/lib/screens/auth_screen.dart create mode 100644 quickstarts/flutter/lib/screens/home_screen.dart create mode 100644 quickstarts/flutter/lib/screens/profile_screen.dart create mode 100644 quickstarts/flutter/pubspec.yaml create mode 100644 quickstarts/flutter/test/widget_test.dart create mode 100644 quickstarts/flutter/thunderid-config/thunderid-config.yaml create mode 100644 quickstarts/ios/.gitignore create mode 100644 quickstarts/ios/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata create mode 100644 quickstarts/ios/.swiftpm/xcode/xcshareddata/xcschemes/Quickstart.xcscheme create mode 100644 quickstarts/ios/Info.plist create mode 100644 quickstarts/ios/Package.resolved create mode 100644 quickstarts/ios/Package.swift create mode 100644 quickstarts/ios/Quickstart.xcodeproj/project.pbxproj create mode 100644 quickstarts/ios/Quickstart.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 quickstarts/ios/Quickstart.xcodeproj/xcshareddata/xcschemes/Quickstart.xcscheme create mode 100644 quickstarts/ios/README.md create mode 100644 quickstarts/ios/Sources/App.swift create mode 100644 quickstarts/ios/Sources/AppAttestTokenProvider.swift create mode 100644 quickstarts/ios/Sources/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 quickstarts/ios/Sources/Assets.xcassets/AppIcon.appiconset/icon-1024.png create mode 100644 quickstarts/ios/Sources/Assets.xcassets/AppIcon.appiconset/icon-120.png create mode 100644 quickstarts/ios/Sources/Assets.xcassets/AppIcon.appiconset/icon-152.png create mode 100644 quickstarts/ios/Sources/Assets.xcassets/AppIcon.appiconset/icon-167.png create mode 100644 quickstarts/ios/Sources/Assets.xcassets/AppIcon.appiconset/icon-180.png create mode 100644 quickstarts/ios/Sources/Assets.xcassets/AppIcon.appiconset/icon-20.png create mode 100644 quickstarts/ios/Sources/Assets.xcassets/AppIcon.appiconset/icon-29.png create mode 100644 quickstarts/ios/Sources/Assets.xcassets/AppIcon.appiconset/icon-40.png create mode 100644 quickstarts/ios/Sources/Assets.xcassets/AppIcon.appiconset/icon-58.png create mode 100644 quickstarts/ios/Sources/Assets.xcassets/AppIcon.appiconset/icon-60.png create mode 100644 quickstarts/ios/Sources/Assets.xcassets/AppIcon.appiconset/icon-76.png create mode 100644 quickstarts/ios/Sources/Assets.xcassets/AppIcon.appiconset/icon-80.png create mode 100644 quickstarts/ios/Sources/Assets.xcassets/AppIcon.appiconset/icon-87.png create mode 100644 quickstarts/ios/Sources/Assets.xcassets/Contents.json create mode 100644 quickstarts/ios/Sources/Config.plist.example create mode 100644 quickstarts/ios/Sources/HomeView.swift create mode 100644 quickstarts/ios/Sources/HomeViewComponents.swift create mode 100644 quickstarts/ios/Sources/ProfileView.swift create mode 100644 quickstarts/ios/Sources/Quickstart.entitlements create mode 100644 quickstarts/ios/Sources/RootView.swift create mode 100644 quickstarts/ios/Sources/SignInView.swift create mode 100644 quickstarts/ios/Sources/TokenDebugView.swift create mode 100644 quickstarts/ios/thunderid-config/thunderid-config.yaml create mode 100644 quickstarts/nextjs/.env.example create mode 100644 quickstarts/nextjs/.gitignore create mode 100644 quickstarts/nextjs/.stackblitzrc create mode 100644 quickstarts/nextjs/README.md create mode 100644 quickstarts/nextjs/app/account/page.tsx create mode 100644 quickstarts/nextjs/app/actions.ts create mode 100644 quickstarts/nextjs/app/api/auth/backchannel-logout/route.ts create mode 100644 quickstarts/nextjs/app/components/ConfigNotice.tsx create mode 100644 quickstarts/nextjs/app/components/HeroCtas.tsx create mode 100644 quickstarts/nextjs/app/components/Nav.tsx create mode 100644 quickstarts/nextjs/app/components/ThunderMark.tsx create mode 100644 quickstarts/nextjs/app/components/icons/NextLogo.tsx create mode 100644 quickstarts/nextjs/app/globals.css create mode 100644 quickstarts/nextjs/app/layout.tsx create mode 100644 quickstarts/nextjs/app/not-found.tsx create mode 100644 quickstarts/nextjs/app/page.tsx create mode 100644 quickstarts/nextjs/app/signin/page.tsx create mode 100644 quickstarts/nextjs/app/signup/page.tsx create mode 100644 quickstarts/nextjs/app/token/page.tsx create mode 100644 quickstarts/nextjs/next-env.d.ts create mode 100644 quickstarts/nextjs/next.config.ts create mode 100644 quickstarts/nextjs/package.json create mode 100644 quickstarts/nextjs/pnpm-lock.yaml create mode 100644 quickstarts/nextjs/pnpm-workspace.yaml create mode 100644 quickstarts/nextjs/proxy.ts create mode 100644 quickstarts/nextjs/scripts/prepare-dev.cjs create mode 100644 quickstarts/nextjs/tsconfig.json create mode 100644 quickstarts/node/.env.example create mode 100644 quickstarts/node/.gitignore create mode 100644 quickstarts/node/.stackblitzrc create mode 100644 quickstarts/node/README.md create mode 100644 quickstarts/node/index.mjs create mode 100644 quickstarts/node/lib/AuthService.mjs create mode 100644 quickstarts/node/lib/InventoryService.mjs create mode 100644 quickstarts/node/lib/ui.mjs create mode 100644 quickstarts/node/package.json create mode 100644 quickstarts/node/pnpm-lock.yaml create mode 100644 quickstarts/node/scripts/prepare-dev.cjs create mode 100644 quickstarts/nuxt/.env.example create mode 100644 quickstarts/nuxt/.gitignore create mode 100644 quickstarts/nuxt/.stackblitzrc create mode 100644 quickstarts/nuxt/README.md create mode 100644 quickstarts/nuxt/app/app.vue create mode 100644 quickstarts/nuxt/app/assets/styles.css create mode 100644 quickstarts/nuxt/app/components/AppNav.vue create mode 100644 quickstarts/nuxt/app/components/ConfigNotice.vue create mode 100644 quickstarts/nuxt/app/pages/account.vue create mode 100644 quickstarts/nuxt/app/pages/index.vue create mode 100644 quickstarts/nuxt/app/pages/signin.vue create mode 100644 quickstarts/nuxt/app/pages/signup.vue create mode 100644 quickstarts/nuxt/app/pages/token.vue create mode 100644 quickstarts/nuxt/nuxt.config.ts create mode 100644 quickstarts/nuxt/package.json create mode 100644 quickstarts/nuxt/pnpm-lock.yaml create mode 100644 quickstarts/nuxt/pnpm-workspace.yaml create mode 100644 quickstarts/nuxt/scripts/prepare-dev.cjs create mode 100644 quickstarts/react/.env.example create mode 100644 quickstarts/react/.gitignore create mode 100644 quickstarts/react/.stackblitzrc create mode 100644 quickstarts/react/README.md create mode 100644 quickstarts/react/index.html create mode 100644 quickstarts/react/package.json create mode 100644 quickstarts/react/pnpm-lock.yaml create mode 100644 quickstarts/react/pnpm-workspace.yaml create mode 100644 quickstarts/react/scripts/prepare-dev.cjs create mode 100644 quickstarts/react/src/App.css create mode 100644 quickstarts/react/src/App.jsx create mode 100644 quickstarts/react/src/components/ConfigNotice.jsx create mode 100644 quickstarts/react/src/components/HeroCtas.jsx create mode 100644 quickstarts/react/src/components/Nav.jsx create mode 100644 quickstarts/react/src/components/ThunderMark.jsx create mode 100644 quickstarts/react/src/components/icons/ReactLogo.jsx create mode 100644 quickstarts/react/src/index.css create mode 100644 quickstarts/react/src/main.jsx create mode 100644 quickstarts/react/src/pages/AccountPage.jsx create mode 100644 quickstarts/react/src/pages/HomePage.jsx create mode 100644 quickstarts/react/src/pages/TokenDebugPage.jsx create mode 100644 quickstarts/react/vite.config.js create mode 100644 quickstarts/vue/.env.example create mode 100644 quickstarts/vue/.gitignore create mode 100644 quickstarts/vue/.stackblitzrc create mode 100644 quickstarts/vue/README.md create mode 100644 quickstarts/vue/index.html create mode 100644 quickstarts/vue/package.json create mode 100644 quickstarts/vue/pnpm-lock.yaml create mode 100644 quickstarts/vue/pnpm-workspace.yaml create mode 100644 quickstarts/vue/scripts/prepare-dev.cjs create mode 100644 quickstarts/vue/src/App.vue create mode 100644 quickstarts/vue/src/components/ConfigNotice.vue create mode 100644 quickstarts/vue/src/components/Nav.vue create mode 100644 quickstarts/vue/src/main.js create mode 100644 quickstarts/vue/src/pages/AccountPage.vue create mode 100644 quickstarts/vue/src/pages/HomePage.vue create mode 100644 quickstarts/vue/src/pages/TokenDebugPage.vue create mode 100644 quickstarts/vue/src/style.css create mode 100644 quickstarts/vue/vite.config.js diff --git a/.github/actions/bump-version/action.yml b/.github/actions/bump-version/action.yml index 37d66c7..2884a17 100644 --- a/.github/actions/bump-version/action.yml +++ b/.github/actions/bump-version/action.yml @@ -2,7 +2,8 @@ name: Bump Sample Version description: > Bumps the version of a sample app in its native version manifest, so samples built on different stacks can share one release flow. Supported manifests - (checked in order): package.json (npm/pnpm/yarn) and pubspec.yaml (Flutter/Dart). + (checked in order): package.json (npm/pnpm/yarn), pubspec.yaml (Flutter/Dart), + build.gradle.kts (Android) and *.xcodeproj/project.pbxproj (iOS). inputs: path: @@ -72,8 +73,37 @@ runs: fi sed -i -E "s/^version:[[:space:]]*[^[:space:]#]+/version: ${VERSION}+${BUILD}/" "${MANIFEST}" + elif [ -f "${SAMPLE_PATH}/build.gradle.kts" ] && grep -q 'versionName = "' "${SAMPLE_PATH}/build.gradle.kts"; then + MANIFEST="${SAMPLE_PATH}/build.gradle.kts" + CURRENT=$(sed -n -E 's/^[[:space:]]*versionName = "([^"]+)".*/\1/p' "${MANIFEST}" | head -1) + CODE=$(sed -n -E 's/^[[:space:]]*versionCode = ([0-9]+).*/\1/p' "${MANIFEST}" | head -1) + if [ -z "${CURRENT}" ] || [ -z "${CODE}" ]; then + echo "Error: no 'versionName'/'versionCode' found in ${MANIFEST}" + exit 1 + fi + + VERSION=$(bump_semver "${CURRENT}") + # versionCode must increase monotonically for Android to accept the upgrade. + sed -i -E "s/^([[:space:]]*versionName = )\"[^\"]+\"/\1\"${VERSION}\"/" "${MANIFEST}" + sed -i -E "s/^([[:space:]]*versionCode = )[0-9]+/\1$((CODE + 1))/" "${MANIFEST}" + + elif PBXPROJ=$(ls "${SAMPLE_PATH}"/*.xcodeproj/project.pbxproj 2>/dev/null | head -1) && [ -n "${PBXPROJ}" ]; then + MANIFEST="${PBXPROJ}" + CURRENT=$(sed -n -E 's/^[[:space:]]*MARKETING_VERSION = ([^;]+);.*/\1/p' "${MANIFEST}" | head -1) + BUILD=$(sed -n -E 's/^[[:space:]]*CURRENT_PROJECT_VERSION = ([0-9]+);.*/\1/p' "${MANIFEST}" | head -1) + if [ -z "${CURRENT}" ] || [ -z "${BUILD}" ]; then + echo "Error: no 'MARKETING_VERSION'/'CURRENT_PROJECT_VERSION' found in ${MANIFEST}" + exit 1 + fi + + VERSION=$(bump_semver "${CURRENT}") + # Every build configuration carries its own copy, so rewrite all of them. The build + # number (CFBundleVersion) must increase monotonically, like the Flutter +N above. + sed -i -E "s/^([[:space:]]*MARKETING_VERSION = )[^;]+;/\1${VERSION};/" "${MANIFEST}" + sed -i -E "s/^([[:space:]]*CURRENT_PROJECT_VERSION = )[0-9]+;/\1$((BUILD + 1));/" "${MANIFEST}" + else - echo "Error: no supported version manifest (package.json, pubspec.yaml) found in ${SAMPLE_PATH}" + echo "Error: no supported version manifest (package.json, pubspec.yaml, build.gradle.kts, project.pbxproj) found in ${SAMPLE_PATH}" exit 1 fi diff --git a/.github/workflows/pr-builder.yml b/.github/workflows/pr-builder.yml index 3c45108..3a6fcbf 100644 --- a/.github/workflows/pr-builder.yml +++ b/.github/workflows/pr-builder.yml @@ -34,6 +34,15 @@ jobs: with: fail-on-severity: high deny-licenses: GPL-3.0-only,GPL-3.0-or-later,AGPL-3.0-only,AGPL-3.0-or-later + # No patched release exists for either advisory, and both are reached only through nuxt's + # build and dev tooling in quickstarts/nuxt, which ignores them for `pnpm audit` too (see its + # pnpm-workspace.yaml for the full justification). Drop each once upstream ships a fix. + # GHSA-vfj7-8cjw-p6xm: braces stack-exhaustion DoS on the project's own glob patterns. + # GHSA-86w9-cpqp-85rv: node-forge signature verification; only used for local dev certs. + allow-ghsas: GHSA-vfj7-8cjw-p6xm, GHSA-86w9-cpqp-85rv + # ThunderID's own Apache-2.0 package, which the dependency graph reports with the non-SPDX + # lowercase id `apache-2.0`, failing the license validity check. + allow-dependencies-licenses: pkg:pub/thunderid_flutter comment-summary-in-pr: always base-ref: ${{ github.event.pull_request.base.sha }} head-ref: ${{ github.event.pull_request.head.sha }} @@ -43,30 +52,40 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 5 outputs: - samples: ${{ steps.find.outputs.samples }} + node: ${{ steps.find.outputs.node }} + flutter: ${{ steps.find.outputs.flutter }} + android: ${{ steps.find.outputs.android }} + ios: ${{ steps.find.outputs.ios }} steps: - name: πŸ“₯ Checkout Code uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 - # Every // directory at the repo root with a package.json is a sample. + # Every // directory at the repo root is a sample. Its stack is picked from + # the manifest at its root: package.json (Node.js), pubspec.yaml (Flutter), + # settings.gradle.kts (Android) or Package.swift (iOS). - name: πŸ” Find Samples id: find run: | - samples=$(find . -mindepth 3 -maxdepth 3 -name package.json -not -path "./.*" -not -path "*/node_modules/*" \ - -exec dirname {} \; 2>/dev/null | sed 's#^\./##' | sort | jq -R . | jq -cs .) - echo "samples=$samples" >> "$GITHUB_OUTPUT" - echo "Samples: $samples" + find_samples() { + find . -mindepth 3 -maxdepth 3 -name "$1" -not -path "./.*" -not -path "*/node_modules/*" \ + -exec dirname {} \; 2>/dev/null | sed 's#^\./##' | sort | jq -R . | jq -cs . + } + for stack in node:package.json flutter:pubspec.yaml android:settings.gradle.kts ios:Package.swift; do + samples=$(find_samples "${stack#*:}") + echo "${stack%%:*}=$samples" >> "$GITHUB_OUTPUT" + echo "${stack%%:*} samples: $samples" + done build-lint: name: πŸ”¨ Build & Lint (${{ matrix.sample }}) needs: discover - if: ${{ needs.discover.outputs.samples != '[]' }} + if: ${{ needs.discover.outputs.node != '[]' }} runs-on: ubuntu-latest timeout-minutes: 15 strategy: fail-fast: false matrix: - sample: ${{ fromJson(needs.discover.outputs.samples) }} + sample: ${{ fromJson(needs.discover.outputs.node) }} defaults: run: working-directory: ${{ matrix.sample }} @@ -99,11 +118,119 @@ jobs: - name: πŸ” Security Audit run: pnpm audit --audit-level=high + # Not every sample has a formatter, a linter or a build step (e.g. the Node.js + # server quickstarts run their sources directly), so each runs only where defined. - name: 🎨 Check Formatting - run: pnpm format:check + run: pnpm run --if-present format:check - name: 🧹 Lint - run: pnpm lint + run: pnpm run --if-present lint - name: πŸ”¨ Build - run: pnpm build + run: pnpm run --if-present build + + build-flutter: + name: πŸ¦‹ Analyze & Build (${{ matrix.sample }}) + needs: discover + if: ${{ needs.discover.outputs.flutter != '[]' }} + runs-on: ubuntu-latest + timeout-minutes: 30 + strategy: + fail-fast: false + matrix: + sample: ${{ fromJson(needs.discover.outputs.flutter) }} + defaults: + run: + working-directory: ${{ matrix.sample }} + steps: + - name: πŸ“₯ Checkout Code + uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 + + - name: β˜• Set up JDK + uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4 + with: + distribution: 'temurin' + java-version: '17' + + - name: 🐦 Set up Flutter + uses: subosito/flutter-action@4cab68ce0f1c7c924f688bff4792e044f1aeb30c # v2 + with: + channel: stable + cache: true + + # Samples that bundle a .env as an asset need the file present to build. + - name: πŸ” Create .env + run: if [ -f .env.example ] && [ ! -f .env ]; then cp .env.example .env; fi + + - name: πŸ“¦ Get Dependencies + run: flutter pub get + + - name: πŸ” Analyze + run: flutter analyze + + - name: πŸ”¨ Build Android APK + run: flutter build apk --debug + + build-android: + name: πŸ€– Build (${{ matrix.sample }}) + needs: discover + if: ${{ needs.discover.outputs.android != '[]' }} + runs-on: ubuntu-latest + timeout-minutes: 30 + strategy: + fail-fast: false + matrix: + sample: ${{ fromJson(needs.discover.outputs.android) }} + defaults: + run: + working-directory: ${{ matrix.sample }} + steps: + - name: πŸ“₯ Checkout Code + uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 + + - name: β˜• Set up JDK + uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4 + with: + distribution: 'temurin' + java-version: '17' + + - name: πŸ—„οΈ Cache Gradle + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: ${{ runner.os }}-gradle-${{ matrix.sample }}-${{ hashFiles(format('{0}/**/*.gradle.kts', matrix.sample), format('{0}/**/gradle-wrapper.properties', matrix.sample)) }} + restore-keys: | + ${{ runner.os }}-gradle-${{ matrix.sample }}- + + - name: πŸ”¨ Build Debug APK + run: ./gradlew assembleDebug + + build-ios: + name: 🍎 Build (${{ matrix.sample }}) + needs: discover + if: ${{ needs.discover.outputs.ios != '[]' }} + runs-on: macos-latest + timeout-minutes: 30 + strategy: + fail-fast: false + matrix: + sample: ${{ fromJson(needs.discover.outputs.ios) }} + defaults: + run: + working-directory: ${{ matrix.sample }} + steps: + - name: πŸ“₯ Checkout Code + uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 + + - name: πŸ—„οΈ Cache Swift Packages + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 + with: + path: ${{ matrix.sample }}/.build + key: ${{ runner.os }}-swift-${{ matrix.sample }}-${{ hashFiles(format('{0}/Package.resolved', matrix.sample)) }} + restore-keys: | + ${{ runner.os }}-swift-${{ matrix.sample }}- + + - name: πŸ”¨ Build + run: swift build diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ef93b29..a1dde56 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,7 +1,7 @@ # Entrypoint workflow for releasing sample apps. # Each selected sample is released independently: its version is bumped in its -# native manifest (package.json, pubspec.yaml, ...), committed, tagged, packed -# into a source zip and attached to a GitHub Release. +# native manifest (package.json, pubspec.yaml, build.gradle.kts, project.pbxproj), +# committed, tagged, packed into a source zip and attached to a GitHub Release. # Sample jobs run concurrently; push conflicts are handled by a retry-with-rebase # loop in the commit step. @@ -26,6 +26,66 @@ on: type: boolean default: false + sample_quickstarts_android: + description: 'quickstarts/android' + required: false + type: boolean + default: false + + sample_quickstarts_browser: + description: 'quickstarts/browser' + required: false + type: boolean + default: false + + sample_quickstarts_express: + description: 'quickstarts/express' + required: false + type: boolean + default: false + + sample_quickstarts_flutter: + description: 'quickstarts/flutter' + required: false + type: boolean + default: false + + sample_quickstarts_ios: + description: 'quickstarts/ios' + required: false + type: boolean + default: false + + sample_quickstarts_nextjs: + description: 'quickstarts/nextjs' + required: false + type: boolean + default: false + + sample_quickstarts_node: + description: 'quickstarts/node' + required: false + type: boolean + default: false + + sample_quickstarts_nuxt: + description: 'quickstarts/nuxt' + required: false + type: boolean + default: false + + sample_quickstarts_react: + description: 'quickstarts/react' + required: false + type: boolean + default: false + + sample_quickstarts_vue: + description: 'quickstarts/vue' + required: false + type: boolean + default: false + sample_flutter_app_auth: description: 'integrations/flutter-app-auth' required: false @@ -49,6 +109,8 @@ jobs: validate: name: βœ… Validate Inputs runs-on: ubuntu-latest + outputs: + samples: ${{ steps.plan.outputs.samples }} steps: - name: Guard against accidental major bump if: github.event.inputs.bump_type == 'major' && github.event.inputs.confirm_major != 'true' @@ -56,62 +118,58 @@ jobs: echo "❌ bump_type is 'major' but confirm_major is not checked. Enable confirm_major to proceed." exit 1 - # ── Integrations ─────────────────────────────────────────────────────────── - release-flutter-app-auth: - name: πŸ¦‹ Release integrations/flutter-app-auth - needs: [validate] - if: needs.validate.result == 'success' && github.event.inputs.sample_flutter_app_auth == 'true' - runs-on: ubuntu-latest - steps: - - name: πŸ“₯ Checkout Code - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 - with: - token: ${{ secrets.THUNDERID_AUTOMATION_BOT }} - - - name: 🏷️ Bump Version - id: bump - uses: ./.github/actions/bump-version - with: - path: integrations/flutter-app-auth - bump_type: ${{ github.event.inputs.bump_type }} - - - name: πŸ“€ Commit, Tag & Push - run: | - git config user.name "${{ env.RELEASE_GIT_USER_NAME }}" - git config user.email "${{ env.RELEASE_GIT_USER_EMAIL }}" - git add "${{ steps.bump.outputs.manifest }}" - git diff --cached --quiet || git commit -m "[Release] integrations/flutter-app-auth@${{ steps.bump.outputs.version }}" - for i in $(seq 1 5); do - git pull --rebase origin ${{ github.ref_name }} - git push origin HEAD:${{ github.ref_name }} && break - [ "$i" -eq 5 ] && exit 1 - sleep $((i * 3)) - done - git tag "sample/integrations/flutter-app-auth/v${{ steps.bump.outputs.version }}" - git push origin "sample/integrations/flutter-app-auth/v${{ steps.bump.outputs.version }}" - - - name: πŸ“¦ Pack Sample - id: pack - uses: ./.github/actions/pack-sample - with: - path: integrations/flutter-app-auth - version: ${{ steps.bump.outputs.version }} - - - name: πŸš€ Create GitHub Release + # Turns the checked sample_* inputs into the release matrix. + - name: πŸ“‹ Plan Releases + id: plan env: - GH_TOKEN: ${{ secrets.THUNDERID_AUTOMATION_BOT }} + sample_quickstarts_android: ${{ github.event.inputs.sample_quickstarts_android }} + sample_quickstarts_browser: ${{ github.event.inputs.sample_quickstarts_browser }} + sample_quickstarts_express: ${{ github.event.inputs.sample_quickstarts_express }} + sample_quickstarts_flutter: ${{ github.event.inputs.sample_quickstarts_flutter }} + sample_quickstarts_ios: ${{ github.event.inputs.sample_quickstarts_ios }} + sample_quickstarts_nextjs: ${{ github.event.inputs.sample_quickstarts_nextjs }} + sample_quickstarts_node: ${{ github.event.inputs.sample_quickstarts_node }} + sample_quickstarts_nuxt: ${{ github.event.inputs.sample_quickstarts_nuxt }} + sample_quickstarts_react: ${{ github.event.inputs.sample_quickstarts_react }} + sample_quickstarts_vue: ${{ github.event.inputs.sample_quickstarts_vue }} + sample_flutter_app_auth: ${{ github.event.inputs.sample_flutter_app_auth }} + sample_self_care_account: ${{ github.event.inputs.sample_self_care_account }} run: | - gh release create "sample/integrations/flutter-app-auth/v${{ steps.bump.outputs.version }}" \ - --title "ThunderID Flutter AppAuth Sample v${{ steps.bump.outputs.version }}" \ - --generate-notes \ - "${{ steps.pack.outputs.archive }}" - - # ── Self-Care ────────────────────────────────────────────────────────────── - release-self-care-account: - name: πŸ‘€ Release self-care/account + samples='[]' + add() { + if [ "${!1}" = "true" ]; then + samples=$(jq -c --argjson s "$2" '. + [$s]' <<< "$samples") + fi + } + add sample_quickstarts_android '{"path":"quickstarts/android","emoji":"πŸ€–","title":"ThunderID Android Quickstart Sample"}' + add sample_quickstarts_browser '{"path":"quickstarts/browser","emoji":"🌐","title":"ThunderID Browser Quickstart Sample"}' + add sample_quickstarts_express '{"path":"quickstarts/express","emoji":"πŸš‚","title":"ThunderID Express Quickstart Sample"}' + add sample_quickstarts_flutter '{"path":"quickstarts/flutter","emoji":"πŸ¦‹","title":"ThunderID Flutter Quickstart Sample"}' + add sample_quickstarts_ios '{"path":"quickstarts/ios","emoji":"🍎","title":"ThunderID iOS Quickstart Sample"}' + add sample_quickstarts_nextjs '{"path":"quickstarts/nextjs","emoji":"β–²","title":"ThunderID Next.js Quickstart Sample"}' + add sample_quickstarts_node '{"path":"quickstarts/node","emoji":"🟒","title":"ThunderID Node.js Quickstart Sample"}' + add sample_quickstarts_nuxt '{"path":"quickstarts/nuxt","emoji":"πŸ’š","title":"ThunderID Nuxt Quickstart Sample"}' + add sample_quickstarts_react '{"path":"quickstarts/react","emoji":"βš›οΈ","title":"ThunderID React Quickstart Sample"}' + add sample_quickstarts_vue '{"path":"quickstarts/vue","emoji":"🟩","title":"ThunderID Vue Quickstart Sample"}' + add sample_flutter_app_auth '{"path":"integrations/flutter-app-auth","emoji":"πŸ¦‹","title":"ThunderID Flutter AppAuth Sample"}' + add sample_self_care_account '{"path":"self-care/account","emoji":"πŸ‘€","title":"ThunderID Self-Care Account Sample"}' + if [ "$samples" = "[]" ]; then + echo "❌ No sample selected. Check at least one sample_* input." + exit 1 + fi + echo "samples=$samples" >> "$GITHUB_OUTPUT" + echo "Releasing: $samples" + + release: + name: ${{ matrix.sample.emoji }} Release ${{ matrix.sample.path }} needs: [validate] - if: needs.validate.result == 'success' && github.event.inputs.sample_self_care_account == 'true' runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + sample: ${{ fromJson(needs.validate.outputs.samples) }} + env: + SAMPLE_PATH: ${{ matrix.sample.path }} steps: - name: πŸ“₯ Checkout Code uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 @@ -122,36 +180,40 @@ jobs: id: bump uses: ./.github/actions/bump-version with: - path: self-care/account + path: ${{ matrix.sample.path }} bump_type: ${{ github.event.inputs.bump_type }} - name: πŸ“€ Commit, Tag & Push + env: + VERSION: ${{ steps.bump.outputs.version }} run: | git config user.name "${{ env.RELEASE_GIT_USER_NAME }}" git config user.email "${{ env.RELEASE_GIT_USER_EMAIL }}" git add "${{ steps.bump.outputs.manifest }}" - git diff --cached --quiet || git commit -m "[Release] self-care/account@${{ steps.bump.outputs.version }}" + git diff --cached --quiet || git commit -m "[Release] ${SAMPLE_PATH}@${VERSION}" for i in $(seq 1 5); do git pull --rebase origin ${{ github.ref_name }} git push origin HEAD:${{ github.ref_name }} && break [ "$i" -eq 5 ] && exit 1 sleep $((i * 3)) done - git tag "sample/self-care/account/v${{ steps.bump.outputs.version }}" - git push origin "sample/self-care/account/v${{ steps.bump.outputs.version }}" + git tag "sample/${SAMPLE_PATH}/v${VERSION}" + git push origin "sample/${SAMPLE_PATH}/v${VERSION}" - name: πŸ“¦ Pack Sample id: pack uses: ./.github/actions/pack-sample with: - path: self-care/account + path: ${{ matrix.sample.path }} version: ${{ steps.bump.outputs.version }} - name: πŸš€ Create GitHub Release env: GH_TOKEN: ${{ secrets.THUNDERID_AUTOMATION_BOT }} + VERSION: ${{ steps.bump.outputs.version }} + TITLE: ${{ matrix.sample.title }} run: | - gh release create "sample/self-care/account/v${{ steps.bump.outputs.version }}" \ - --title "ThunderID Self-Care Account Sample v${{ steps.bump.outputs.version }}" \ + gh release create "sample/${SAMPLE_PATH}/v${VERSION}" \ + --title "${TITLE} v${VERSION}" \ --generate-notes \ "${{ steps.pack.outputs.archive }}" diff --git a/README.md b/README.md index 2b651de..9ab64bb 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,21 @@ ![ThunderID Samples](https://raw.githubusercontent.com/thunder-id/thunderid/refs/heads/main/docs/static/assets/images/readme/repo-banner-samples.png) -Sample apps for ThunderID. Ready-to-run apps that show ThunderID features in action, organized by feature area and released as downloadable source zips. +Sample apps for ThunderID. Ready-to-run apps that show ThunderID features in action, organized by platform or feature area and released as downloadable source zips. Each quickstart uses the published release of its SDK, so it runs on its own. ## Samples | Area | Sample | Release | Description | |---|---|---|---| +| [`quickstarts`](quickstarts) | [`android`](quickstarts/android) | [![release](https://img.shields.io/github/v/release/thunder-id/samples?filter=sample/quickstarts/android/*)](https://github.com/thunder-id/samples/releases?q=sample%2Fquickstarts%2Fandroid&expanded=true) | Android (Jetpack Compose) app using the [ThunderID Android SDK](https://github.com/thunder-id/android-sdks) | +| [`quickstarts`](quickstarts) | [`browser`](quickstarts/browser) | [![release](https://img.shields.io/github/v/release/thunder-id/samples?filter=sample/quickstarts/browser/*)](https://github.com/thunder-id/samples/releases?q=sample%2Fquickstarts%2Fbrowser&expanded=true) | Framework-free JavaScript app using `@thunderid/browser` | +| [`quickstarts`](quickstarts) | [`express`](quickstarts/express) | [![release](https://img.shields.io/github/v/release/thunder-id/samples?filter=sample/quickstarts/express/*)](https://github.com/thunder-id/samples/releases?q=sample%2Fquickstarts%2Fexpress&expanded=true) | Express server app using `@thunderid/express` | +| [`quickstarts`](quickstarts) | [`flutter`](quickstarts/flutter) | [![release](https://img.shields.io/github/v/release/thunder-id/samples?filter=sample/quickstarts/flutter/*)](https://github.com/thunder-id/samples/releases?q=sample%2Fquickstarts%2Fflutter&expanded=true) | Flutter app using the [`thunderid_flutter`](https://pub.dev/packages/thunderid_flutter) package | +| [`quickstarts`](quickstarts) | [`ios`](quickstarts/ios) | [![release](https://img.shields.io/github/v/release/thunder-id/samples?filter=sample/quickstarts/ios/*)](https://github.com/thunder-id/samples/releases?q=sample%2Fquickstarts%2Fios&expanded=true) | iOS (SwiftUI) app using the [ThunderID iOS SDK](https://github.com/thunder-id/ios-sdks) | +| [`quickstarts`](quickstarts) | [`nextjs`](quickstarts/nextjs) | [![release](https://img.shields.io/github/v/release/thunder-id/samples?filter=sample/quickstarts/nextjs/*)](https://github.com/thunder-id/samples/releases?q=sample%2Fquickstarts%2Fnextjs&expanded=true) | Next.js app using `@thunderid/nextjs` | +| [`quickstarts`](quickstarts) | [`node`](quickstarts/node) | [![release](https://img.shields.io/github/v/release/thunder-id/samples?filter=sample/quickstarts/node/*)](https://github.com/thunder-id/samples/releases?q=sample%2Fquickstarts%2Fnode&expanded=true) | Node.js service using `@thunderid/node` for machine-to-machine access | +| [`quickstarts`](quickstarts) | [`nuxt`](quickstarts/nuxt) | [![release](https://img.shields.io/github/v/release/thunder-id/samples?filter=sample/quickstarts/nuxt/*)](https://github.com/thunder-id/samples/releases?q=sample%2Fquickstarts%2Fnuxt&expanded=true) | Nuxt app using `@thunderid/nuxt` | +| [`quickstarts`](quickstarts) | [`react`](quickstarts/react) | [![release](https://img.shields.io/github/v/release/thunder-id/samples?filter=sample/quickstarts/react/*)](https://github.com/thunder-id/samples/releases?q=sample%2Fquickstarts%2Freact&expanded=true) | React app using `@thunderid/react` | +| [`quickstarts`](quickstarts) | [`vue`](quickstarts/vue) | [![release](https://img.shields.io/github/v/release/thunder-id/samples?filter=sample/quickstarts/vue/*)](https://github.com/thunder-id/samples/releases?q=sample%2Fquickstarts%2Fvue&expanded=true) | Vue app using `@thunderid/vue` | | [`self-care`](self-care) | [`account`](self-care/account) | [![release](https://img.shields.io/github/v/release/thunder-id/samples?filter=sample/self-care/account/*)](https://github.com/thunder-id/samples/releases?q=sample%2Fself-care%2Faccount&expanded=true) | React account app for viewing and editing a profile and changing a password | | [`integrations`](integrations) | [`flutter-app-auth`](integrations/flutter-app-auth) | [![release](https://img.shields.io/github/v/release/thunder-id/samples?filter=sample/integrations/flutter-app-auth/*)](https://github.com/thunder-id/samples/releases?q=sample%2Fintegrations%2Fflutter-app-auth&expanded=true) | Flutter sign-in with the `flutter_appauth` plugin | diff --git a/quickstarts/android/.gitignore b/quickstarts/android/.gitignore new file mode 100644 index 0000000..6cba03b --- /dev/null +++ b/quickstarts/android/.gitignore @@ -0,0 +1,42 @@ +# Gradle files +.gradle/ +build/ + +# Local configuration file (sdk path, etc) +local.properties + +# Local build config (copy config.properties.example and fill in your values) +config.properties + +# Local Digital Asset Links file (copy assetlinks.json.example, fill in your values, and +# host it at https:///.well-known/assetlinks.json β€” not served from this app) +assetlinks.json + +# Log/OS Files +*.log +.DS_Store + +# Android Studio generated files and folders +captures/ +.externalNativeBuild/ +.cxx/ +*.aab +*.apk +output-metadata.json + +# IntelliJ +*.iml +.idea/ +misc.xml +deploymentTargetDropDown.xml +render.experimental.xml + +# Keystore files +*.jks +*.keystore + +# Google Services (e.g. APIs or Firebase) +google-services.json + +# Android Profiling +*.hprof diff --git a/quickstarts/android/README.md b/quickstarts/android/README.md new file mode 100644 index 0000000..35ca0f8 --- /dev/null +++ b/quickstarts/android/README.md @@ -0,0 +1,64 @@ +# ThunderID Android Quickstart + +ThunderID Android Quickstart demonstrates the full authentication lifecycle using the [ThunderID Android SDK](https://github.com/thunder-id/android-sdks) on Android. + +**Flow demonstrated:** +1. App opens β†’ unauthenticated state (sign-in screen) +2. User initiates sign-in / sign-up β†’ SDK starts app-native Flow Execution +3. User completes the flow +4. Sign-in β†’ authenticated state with profile information, token debugging, and sign-out button. + Sign-up creates the account but does not start a session, so it returns to the landing screen + and the new credentials have to be used to sign in. +5. User taps Sign Out β†’ session terminated, returns to sign-in screen + +The sample depends on the published SDK from [JitPack](https://jitpack.io/#thunder-id/android-sdks) +(`com.github.thunder-id:android-sdks`), declared in `build.gradle.kts`. + +## Prerequisites + +- JDK 17 or later +- Android Studio, or the Android SDK with `ANDROID_HOME` set +- An Android emulator or device (API 26+) +- A running ThunderID instance + +## Get the Sample + +```bash +git clone https://github.com/thunder-id/samples.git +cd samples/quickstarts/android +cp config.properties.example config.properties +``` + +## Configure + +This sample uses app-native authentication (Flow Execution API), so only the base URL and application ID are required, no OAuth2 client ID or redirect URIs. + +| Variable | Description | +|----------|-------------| +| `THUNDERID_BASE_URL` | Base URL of your ThunderID server (HTTPS) | +| `THUNDERID_APPLICATION_ID` | Application UUID from the ThunderID Console | +| `THUNDERID_ATTESTATION_ENABLED` | `true` to send a Google Play Integrity token with each flow (optional) | +| `THUNDERID_CLOUD_PROJECT_NUMBER` | Google Cloud project number used for Play Integrity (optional) | + +`config.properties` is gitignored. Never commit real credentials. Each value can also be supplied as an environment variable of the same name. + +If your ThunderID server runs on `localhost`, don't use `localhost` in `THUNDERID_BASE_URL` directly: + +- **Emulator**: use `https://10.0.2.2:8090`, the emulator's alias for your host machine's loopback. +- **Physical device**: run `adb reverse tcp:8090 tcp:8090` and keep using `https://localhost:8090`, or point the URL at your host machine's LAN IP. + +## Run + +Open this directory in Android Studio, sync Gradle, and run it on an emulator or device. From the command line: + +```bash +./gradlew installDebug +``` + +## Attestation and Passkeys + +See [Try the Android Sample App](https://thunderid.dev/docs/v1.0.x/sdks/android/guides/try-the-sample-app) in the Android SDK docs for Google Play Integrity attestation and passkey (Digital Asset Links, `assetlinks.json.example`) setup. + +## End-to-End Tests + +`thunderid-config/thunderid-config.yaml` declares the application the Android SDK's [E2E suite](https://github.com/thunder-id/android-sdks/tree/main/tests/e2e) provisions on a test server. The suite fetches this sample and builds it against the SDK checkout under test. diff --git a/quickstarts/android/assetlinks.json.example b/quickstarts/android/assetlinks.json.example new file mode 100644 index 0000000..49e55f8 --- /dev/null +++ b/quickstarts/android/assetlinks.json.example @@ -0,0 +1,12 @@ +[ + { + "relation": ["delegate_permission/common.get_login_creds"], + "target": { + "namespace": "android_app", + "package_name": "dev.thunderid.Quickstart", + "sha256_cert_fingerprints": [ + "" + ] + } + } +] diff --git a/quickstarts/android/build.gradle.kts b/quickstarts/android/build.gradle.kts new file mode 100644 index 0000000..0560fcb --- /dev/null +++ b/quickstarts/android/build.gradle.kts @@ -0,0 +1,66 @@ +import java.util.Properties + +plugins { + id("com.android.application") + id("org.jetbrains.kotlin.android") +} + +android { + namespace = "dev.thunderid.quickstart" + compileSdk = 34 + + defaultConfig { + applicationId = "dev.thunderid.Quickstart" + minSdk = 26 + targetSdk = 34 + versionCode = 1 + versionName = "0.0.0" + + // Load ThunderID config from config.properties (gitignored). + // Copy config.properties.example to config.properties and fill in your values. + val configProps = Properties() + val configFile = rootProject.file("config.properties") + if (configFile.exists()) configFile.inputStream().use { configProps.load(it) } + fun config(key: String) = configProps.getProperty(key) ?: System.getenv(key) ?: "" + val baseUrl = config("THUNDERID_BASE_URL") + val appId = config("THUNDERID_APPLICATION_ID") + val attestationEnabled = config("THUNDERID_ATTESTATION_ENABLED") + val cloudProjectNumber = config("THUNDERID_CLOUD_PROJECT_NUMBER") + buildConfigField("String", "THUNDERID_BASE_URL", "\"$baseUrl\"") + buildConfigField("String", "THUNDERID_APPLICATION_ID", "\"$appId\"") + buildConfigField("boolean", "THUNDERID_ATTESTATION_ENABLED", attestationEnabled.toBoolean().toString()) + buildConfigField("long", "THUNDERID_CLOUD_PROJECT_NUMBER", "${cloudProjectNumber.toLongOrNull() ?: 0L}L") + } + + buildFeatures { + compose = true + buildConfig = true + } + + composeOptions { + kotlinCompilerExtensionVersion = "1.5.8" + } + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } + + kotlinOptions { + jvmTarget = "17" + } +} + +dependencies { + implementation("com.github.thunder-id:android-sdks:v1.4.0") + implementation("com.google.android.play:integrity:1.6.0") + + val composeBom = platform("androidx.compose:compose-bom:2024.02.00") + implementation(composeBom) + implementation("androidx.compose.ui:ui") + implementation("androidx.compose.foundation:foundation") + implementation("androidx.compose.material3:material3") + implementation("androidx.compose.material:material-icons-extended") + implementation("androidx.activity:activity-compose:1.8.2") + implementation("androidx.lifecycle:lifecycle-runtime-compose:2.7.0") +} diff --git a/quickstarts/android/config.properties.example b/quickstarts/android/config.properties.example new file mode 100644 index 0000000..e605b50 --- /dev/null +++ b/quickstarts/android/config.properties.example @@ -0,0 +1,4 @@ +THUNDERID_BASE_URL=https://10.0.2.2:8090 +THUNDERID_APPLICATION_ID=your-application-id +THUNDERID_ATTESTATION_ENABLED=false +THUNDERID_CLOUD_PROJECT_NUMBER= diff --git a/quickstarts/android/gradle.properties b/quickstarts/android/gradle.properties new file mode 100644 index 0000000..9881f6c --- /dev/null +++ b/quickstarts/android/gradle.properties @@ -0,0 +1,2 @@ +android.useAndroidX=true +org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError diff --git a/quickstarts/android/gradle/wrapper/gradle-wrapper.jar b/quickstarts/android/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..13372aef5e24af05341d49695ee84e5f9b594659 GIT binary patch literal 53636 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ⅅ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 H-+%o-(+5aQ literal 0 HcmV?d00001 diff --git a/quickstarts/android/gradle/wrapper/gradle-wrapper.properties b/quickstarts/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..a80b22c --- /dev/null +++ b/quickstarts/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.6-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/quickstarts/android/gradlew b/quickstarts/android/gradlew new file mode 100755 index 0000000..9d82f78 --- /dev/null +++ b/quickstarts/android/gradlew @@ -0,0 +1,160 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# 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" + which java >/dev/null 2>&1 || 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 + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/quickstarts/android/settings.gradle.kts b/quickstarts/android/settings.gradle.kts new file mode 100644 index 0000000..060856b --- /dev/null +++ b/quickstarts/android/settings.gradle.kts @@ -0,0 +1,22 @@ +pluginManagement { + repositories { + google() + mavenCentral() + gradlePluginPortal() + } + plugins { + id("com.android.application") version "8.2.2" + id("org.jetbrains.kotlin.android") version "1.9.22" + } +} + +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + google() + mavenCentral() + maven("https://jitpack.io") + } +} + +rootProject.name = "AndroidQuickstart" diff --git a/quickstarts/android/src/main/AndroidManifest.xml b/quickstarts/android/src/main/AndroidManifest.xml new file mode 100644 index 0000000..4d70a24 --- /dev/null +++ b/quickstarts/android/src/main/AndroidManifest.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/quickstarts/android/src/main/kotlin/dev/thunderid/quickstart/AuthScreen.kt b/quickstarts/android/src/main/kotlin/dev/thunderid/quickstart/AuthScreen.kt new file mode 100644 index 0000000..831dd3b --- /dev/null +++ b/quickstarts/android/src/main/kotlin/dev/thunderid/quickstart/AuthScreen.kt @@ -0,0 +1,313 @@ +// Copyright 2026 The ThunderID Authors +// SPDX-License-Identifier: Apache-2.0 + +package dev.thunderid.quickstart + +import androidx.compose.foundation.Canvas +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.horizontalScroll +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.windowInsetsPadding +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.foundation.verticalScroll +import androidx.compose.material3.Button +import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.ModalBottomSheet +import androidx.compose.material3.OutlinedButton +import androidx.compose.material3.Text +import androidx.compose.material3.rememberModalBottomSheetState +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.Path +import androidx.compose.ui.graphics.drawscope.DrawScope +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import dev.thunderid.compose.components.presentation.auth.SignIn +import dev.thunderid.compose.components.presentation.auth.SignUp + +private val PrimaryBlue = Color(0xFF3688FF) +private val BgLight = Color(0xFFF7F9FC) +private val BorderLight = Color(0xFFDDE3EC) +private val TextPrimary = Color(0xFF05213F) +private val TextMuted = Color(0xFF5A7085) + +private val featureTags = listOf("OAuth 2.0", "PKCE", "JWT", "MFA", "SSO") + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun AuthScreen(applicationId: String) { + var showSheet by remember { mutableStateOf(null) } + + Box( + modifier = Modifier + .fillMaxSize() + .background(BgLight), + ) { + Column( + modifier = Modifier.fillMaxSize(), + verticalArrangement = Arrangement.SpaceBetween, + ) { + // Upper area β€” scrollable + Column( + modifier = Modifier + .weight(1f) + .verticalScroll(rememberScrollState()) + .padding(horizontal = 32.dp), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + Spacer(Modifier.height(72.dp)) + + // Logo mark + ThunderLogoMark( + modifier = Modifier + .height(80.dp) + .width(65.dp), + darkColor = TextPrimary, + blueColor = PrimaryBlue, + ) + + Spacer(Modifier.height(32.dp)) + + // Headline + Text( + text = "Authentication\nfor developers.", + fontSize = 28.sp, + fontWeight = FontWeight.Bold, + letterSpacing = (-0.5).sp, + color = TextPrimary, + textAlign = TextAlign.Center, + lineHeight = 34.sp, + ) + + Spacer(Modifier.height(12.dp)) + + // Subtext + Text( + text = "OAuth 2.0, PKCE, MFA, and JWT -\nout of the box in minutes.", + fontSize = 15.sp, + color = TextMuted, + textAlign = TextAlign.Center, + lineHeight = 22.sp, + ) + + Spacer(Modifier.height(28.dp)) + + // Feature tags + Row( + modifier = Modifier.horizontalScroll(rememberScrollState()), + horizontalArrangement = Arrangement.spacedBy(8.dp), + ) { + featureTags.forEach { tag -> + Text( + text = tag, + fontSize = 12.sp, + fontWeight = FontWeight.Medium, + color = PrimaryBlue, + modifier = Modifier + .border(1.dp, BorderLight, RoundedCornerShape(20.dp)) + .padding(horizontal = 12.dp, vertical = 6.dp), + ) + } + } + + Spacer(Modifier.height(48.dp)) + } + + // Bottom CTAs + Column( + modifier = Modifier + .padding(horizontal = 24.dp) + .padding(bottom = 40.dp), + verticalArrangement = Arrangement.spacedBy(12.dp), + ) { + Button( + onClick = { showSheet = "signup" }, + modifier = Modifier + .fillMaxWidth() + .height(50.dp), + shape = RoundedCornerShape(10.dp), + colors = ButtonDefaults.buttonColors(containerColor = PrimaryBlue), + ) { + Text("Get started", fontSize = 16.sp, fontWeight = FontWeight.SemiBold) + } + + OutlinedButton( + onClick = { showSheet = "login" }, + modifier = Modifier + .fillMaxWidth() + .height(50.dp), + shape = RoundedCornerShape(10.dp), + border = androidx.compose.foundation.BorderStroke(1.5.dp, PrimaryBlue), + colors = ButtonDefaults.outlinedButtonColors(contentColor = PrimaryBlue), + ) { + Text("Sign in", fontSize = 16.sp, fontWeight = FontWeight.SemiBold) + } + } + } + } + + // Bottom sheets + if (showSheet != null) { + val sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true) + ModalBottomSheet( + onDismissRequest = { showSheet = null }, + sheetState = sheetState, + ) { + when (showSheet) { + "login" -> LoginSheetContent(applicationId = applicationId) + "signup" -> SignUpSheetContent(onComplete = { showSheet = null }) + } + } + } +} + +@Composable +private fun SheetTitle(text: String) { + Text( + text = text, + fontSize = 20.sp, + fontWeight = FontWeight.Bold, + color = TextPrimary, + modifier = Modifier.padding(start = 24.dp, end = 24.dp, bottom = 4.dp), + ) +} + +@Composable +private fun LoginSheetContent(applicationId: String) { + Column( + modifier = Modifier + .fillMaxWidth() + .verticalScroll(rememberScrollState()) + .padding(bottom = 32.dp), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + // The flow's own components (fetched by `SignIn`) already include a HEADING_1 + // title β€” adding a sheet title here would duplicate it, unlike SignUp below + // which has no server-rendered heading of its own. + SignIn(applicationId = applicationId, modifier = Modifier.fillMaxWidth().padding(horizontal = 24.dp)) + } +} + +@Composable +private fun SignUpSheetContent(onComplete: () -> Unit) { + Column( + modifier = Modifier + .fillMaxWidth() + .verticalScroll(rememberScrollState()) + .padding(bottom = 32.dp), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + SheetTitle("Create account") + Spacer(Modifier.height(8.dp)) + // Registration finishes without establishing a session, so the app stays on AuthScreen and + // this sheet is not torn down with it the way the sign-in sheet is (a successful sign-in + // swaps the whole screen for HomeScreen). Without closing it here the completed flow + // leaves an empty sheet covering the app. + SignUp( + modifier = Modifier.fillMaxWidth().padding(horizontal = 24.dp), + onComplete = onComplete, + ) + } +} + +@Composable +private fun ThunderLogoMark( + modifier: Modifier = Modifier, + darkColor: Color, + blueColor: Color, +) { + Canvas(modifier = modifier) { + val scaleY = size.height / 257f + val scaleX = size.width / 207f + + fun sx(x: Float) = x * scaleX + fun sy(y: Float) = y * scaleY + + // Path 1 β€” dark fill (top-left quad) + val path1 = Path().apply { + moveTo(sx(55.4763f), sy(26.4391f)) + lineTo(sx(58.8866f), sy(0f)) + lineTo(sx(0f), sy(0f)) + lineTo(sx(0f), sy(26.4391f)) + close() + } + drawPath(path1, darkColor) + + // Path 2 β€” blue left column + val path2 = Path().apply { + moveTo(sx(39.8438f), sy(147.407f)) + lineTo(sx(49.5455f), sy(72.2839f)) + lineTo(sx(0f), sy(72.2839f)) + lineTo(sx(0f), sy(256.743f)) + lineTo(sx(60.5602f), sy(256.743f)) + lineTo(sx(80.048f), sy(147.407f)) + close() + } + drawPath(path2, blueColor) + + // Path 3 β€” blue right arc / body + val path3 = Path().apply { + moveTo(sx(192.42f), sy(59.361f)) + cubicTo( + sx(182.782f), sy(40.2307f), + sx(168.929f), sy(25.5705f), + sx(150.903f), sy(15.3381f), + ) + cubicTo( + sx(145.501f), sy(12.2662f), + sx(139.761f), sy(9.6605f), + sx(133.703f), sy(7.5208f), + ) + lineTo(sx(115.401f), sy(103.702f)) + lineTo(sx(159.757f), sy(103.702f)) + lineTo(sx(76.2987f), sy(256.743f)) + lineTo(sx(83.3735f), sy(256.743f)) + cubicTo( + sx(109.449f), sy(256.743f), + sx(131.69f), sy(251.574f), + sx(150.14f), sy(241.236f), + ) + cubicTo( + sx(168.569f), sy(230.897f), + sx(182.634f), sy(216.131f), + sx(192.356f), sy(196.959f), + ) + cubicTo( + sx(202.058f), sy(177.765f), + sx(206.909f), sy(154.8f), + sx(206.909f), sy(128.043f), + ) + cubicTo( + sx(206.909f), sy(101.286f), + sx(202.079f), sy(78.5123f), + sx(192.441f), sy(59.3821f), + ) + lineTo(sx(192.42f), sy(59.361f)) + close() + } + drawPath(path3, blueColor) + } +} diff --git a/quickstarts/android/src/main/kotlin/dev/thunderid/quickstart/HomeScreen.kt b/quickstarts/android/src/main/kotlin/dev/thunderid/quickstart/HomeScreen.kt new file mode 100644 index 0000000..8190173 --- /dev/null +++ b/quickstarts/android/src/main/kotlin/dev/thunderid/quickstart/HomeScreen.kt @@ -0,0 +1,730 @@ +// Copyright 2026 The ThunderID Authors +// SPDX-License-Identifier: Apache-2.0 + +package dev.thunderid.quickstart + +import android.graphics.BitmapFactory +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.foundation.verticalScroll +import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.OutlinedButton +import androidx.compose.material3.Text +import androidx.compose.material3.VerticalDivider +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.ImageBitmap +import androidx.compose.ui.graphics.asImageBitmap +import androidx.compose.ui.platform.LocalClipboardManager +import androidx.compose.ui.platform.LocalUriHandler +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.text.SpanStyle +import androidx.compose.ui.text.buildAnnotatedString +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.text.withStyle +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import dev.thunderid.android.R +import dev.thunderid.compose.LocalThunderID +import dev.thunderid.compose.components.actions.SignOutButton +import dev.thunderid.compose.components.presentation.user.ChangeCredential +import dev.thunderid.compose.components.presentation.user.UserAvatar +import dev.thunderid.compose.components.presentation.user.UserProfile +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay +import kotlinx.coroutines.withContext +import java.text.SimpleDateFormat +import java.util.Date +import java.util.Locale + +// ───────────────────────────────────────────────────────────────────────────── +// Design tokens +// ───────────────────────────────────────────────────────────────────────────── + +private val PrimaryBlue = Color(0xFF3688FF) +private val SuccessGreen = Color(0xFF2FBD6B) +private val DarkBg = Color(0xFF080F1C) +private val LightBg = Color(0xFFF7F9FC) +private val BorderLight = Color(0xFFDDE3EC) +private val TextPrimary = Color(0xFF05213F) +private val TextMuted = Color(0xFF5A7085) +private val TokenDarkBg = Color(0xFF0B1120) + +// JWT color coding +private val JwtHeaderColor = Color(0xFFFF7B72) +private val JwtPayloadColor = Color(0xFF79C0FF) +private val JwtSignatureColor = Color(0xFF3FB950) + +// ───────────────────────────────────────────────────────────────────────────── +// Root composable +// ───────────────────────────────────────────────────────────────────────────── + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun HomeScreen() { + var screen by remember { mutableStateOf("home") } + val thunder = LocalThunderID.current + + when (screen) { + "home" -> HomeTab(onNavigate = { screen = it }) + "profile" -> ProfileScreen(onBack = { screen = "home" }) + "token" -> TokenDebugScreen(onBack = { screen = "home" }) + } +} + +// ───────────────────────────────────────────────────────────────────────────── +// Home tab +// ───────────────────────────────────────────────────────────────────────────── + +@Composable +private fun HomeTab(onNavigate: (String) -> Unit) { + val thunder = LocalThunderID.current + + val dateLabel = remember { + SimpleDateFormat("EEEE, MMMM d", Locale.ENGLISH).format(Date()).uppercase() + } + val greetingName = remember(thunder.user) { + val given = thunder.user?.get("given_name") as? String + given?.takeIf { it.isNotBlank() } + ?: thunder.user?.email?.substringBefore("@")?.takeIf { it.isNotBlank() } + ?: "there" + } + val greeting = remember(greetingName) { + val hour = java.util.Calendar.getInstance().get(java.util.Calendar.HOUR_OF_DAY) + val timeOfDay = when { + hour < 12 -> "morning" + hour < 17 -> "afternoon" + else -> "evening" + } + "Good $timeOfDay, $greetingName." + } + + val claims = thunder.user?.claims + val authTime = remember(claims) { claimAsEpochSeconds(claims, "auth_time") } + val exp = remember(claims) { claimAsEpochSeconds(claims, "exp") } + val organisationName = remember(thunder.user) { + runCatching { thunder.client.getConfiguration().organizationHandle } + .getOrNull() + ?.takeIf { it.isNotBlank() } + ?: "Default" + } + + var nowSeconds by remember { mutableStateOf(System.currentTimeMillis() / 1000) } + LaunchedEffect(exp) { + while (exp != null) { + nowSeconds = System.currentTimeMillis() / 1000 + delay(1000) + } + } + + val signedInAtLabel = remember(authTime) { formatSignedInAt(authTime) } + val expiresInLabel = remember(exp, nowSeconds) { formatExpiresIn(exp, nowSeconds) } + + Column( + modifier = Modifier + .fillMaxSize() + .background(LightBg) + .verticalScroll(rememberScrollState()), + ) { + Spacer(Modifier.height(30.dp)) + + // Hero: avatar + (date/session row, greeting row) + Row( + modifier = Modifier.padding(horizontal = 24.dp), + verticalAlignment = Alignment.CenterVertically, + ) { + UserAvatar(size = 52.dp) + Spacer(Modifier.width(14.dp)) + Column { + Row(verticalAlignment = Alignment.CenterVertically) { + Text( + text = dateLabel, + fontSize = 12.sp, + fontWeight = FontWeight.Bold, + color = TextMuted, + letterSpacing = 1.sp, + ) + Spacer(Modifier.width(6.dp)) + Box( + modifier = Modifier + .size(3.dp) + .background(BorderLight, CircleShape), + ) + Spacer(Modifier.width(6.dp)) + Box( + modifier = Modifier + .size(6.dp) + .background(SuccessGreen, CircleShape), + ) + Spacer(Modifier.width(5.dp)) + Text( + text = "Session active", + fontSize = 12.sp, + color = SuccessGreen, + fontWeight = FontWeight.Medium, + ) + } + Spacer(Modifier.height(4.dp)) + Text( + text = greeting, + fontSize = 22.sp, + fontWeight = FontWeight.Bold, + color = TextPrimary, + ) + } + } + + Spacer(Modifier.height(24.dp)) + + // Stats row + Row( + modifier = Modifier + .padding(horizontal = 24.dp) + .fillMaxWidth() + .border(1.dp, BorderLight, RoundedCornerShape(12.dp)) + .padding(vertical = 18.dp), + horizontalArrangement = Arrangement.SpaceEvenly, + verticalAlignment = Alignment.CenterVertically, + ) { + StatColumn(value = signedInAtLabel, label = "SIGNED IN AT") + VerticalDivider(modifier = Modifier.height(36.dp), color = BorderLight) + StatColumn(value = expiresInLabel, label = "EXPIRES IN") + VerticalDivider(modifier = Modifier.height(36.dp), color = BorderLight) + StatColumn(value = organisationName, label = "ORGANISATION") + } + + Spacer(Modifier.height(28.dp)) + + // "What's next" section + Text( + text = "WHAT'S NEXT", + fontSize = 10.sp, + fontWeight = FontWeight.Bold, + color = TextMuted, + letterSpacing = 1.5.sp, + modifier = Modifier.padding(horizontal = 24.dp), + ) + + Spacer(Modifier.height(8.dp)) + + val steps = listOf( + NextStep( + number = "01", + title = "Explore use cases", + subtitle = "See what you can build β€” auth flows for web, mobile, APIs, and agents.", + href = "https://thunderid.dev/docs/next/use-cases/overview/", + ), + NextStep( + number = "02", + title = "Learn about flows", + subtitle = "Understand how authorization code, PKCE, client credentials, and device flows work.", + href = "https://thunderid.dev/docs/next/guides/flows/what-are-flows/", + ), + NextStep( + number = "03", + title = "Style your experience", + subtitle = "Customize the login UI, branding, and email templates to match your product.", + href = "https://thunderid.dev/docs/next/guides/design/overview/", + ), + NextStep( + number = "04", + title = "Explore SDK APIs", + subtitle = "Full Android SDK reference β€” composables, state objects, and configuration options.", + href = "https://thunderid.dev/docs/next/sdks/android/overview/", + ), + ) + + steps.forEach { step -> + StepRow(number = step.number, title = step.title, subtitle = step.subtitle, href = step.href) + } + + Spacer(Modifier.height(20.dp)) + + // Action rows + ActionRow(label = "Manage Account", onClick = { onNavigate("profile") }) + ActionRow(label = "Token Debug", onClick = { onNavigate("token") }) + + // Sign out + Box( + modifier = Modifier + .fillMaxWidth() + .border(width = 1.dp, color = BorderLight, shape = RoundedCornerShape(0.dp)) + .padding(horizontal = 24.dp, vertical = 4.dp), + ) { + SignOutButton(modifier = Modifier.fillMaxWidth()) + } + + Spacer(Modifier.height(40.dp)) + } +} + +@Composable +private fun StatColumn(value: String, label: String) { + Column(horizontalAlignment = Alignment.CenterHorizontally) { + Text( + text = value, + fontSize = 20.sp, + fontWeight = FontWeight.Bold, + color = TextPrimary, + ) + Spacer(Modifier.height(2.dp)) + Text( + text = label, + fontSize = 10.sp, + fontWeight = FontWeight.Bold, + color = TextMuted, + letterSpacing = 0.8.sp, + ) + } +} + +private data class NextStep(val number: String, val title: String, val subtitle: String, val href: String) + +@Composable +private fun StepRow(number: String, title: String, subtitle: String, href: String) { + val uriHandler = LocalUriHandler.current + Row( + modifier = Modifier + .fillMaxWidth() + .border(width = 0.dp, color = Color.Transparent) + .clickable(onClick = { uriHandler.openUri(href) }) + .padding(horizontal = 24.dp, vertical = 14.dp), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.Top, + ) { + Row(verticalAlignment = Alignment.Top) { + Text( + text = number, + fontSize = 9.sp, + fontFamily = FontFamily.Monospace, + color = PrimaryBlue, + fontWeight = FontWeight.Bold, + modifier = Modifier.padding(top = 2.dp), + ) + Spacer(Modifier.width(14.dp)) + Column { + Text(text = title, fontSize = 14.sp, fontWeight = FontWeight.SemiBold, color = TextPrimary) + Spacer(Modifier.height(2.dp)) + Text(text = subtitle, fontSize = 13.sp, color = TextMuted) + } + } + Text(text = "β€Ί", fontSize = 18.sp, color = TextMuted, modifier = Modifier.padding(start = 8.dp)) + } + Box( + modifier = Modifier + .fillMaxWidth() + .height(1.dp) + .background(BorderLight), + ) +} + +@Composable +private fun ActionRow(label: String, onClick: () -> Unit) { + Box( + modifier = Modifier + .fillMaxWidth() + .border(width = 1.dp, color = BorderLight, shape = RoundedCornerShape(0.dp)) + .clickable(onClick = onClick) + .padding(horizontal = 24.dp, vertical = 16.dp), + ) { + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically, + ) { + Text( + text = label, + fontSize = 15.sp, + color = TextPrimary, + fontWeight = FontWeight.Medium, + ) + Text(text = "β€Ί", fontSize = 20.sp, color = TextMuted) + } + } +} + +// ───────────────────────────────────────────────────────────────────────────── +// Profile screen +// ───────────────────────────────────────────────────────────────────────────── + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +private fun ProfileScreen(onBack: () -> Unit) { + Column( + modifier = Modifier + .fillMaxSize() + .background(LightBg) + .verticalScroll(rememberScrollState()), + ) { + Spacer(Modifier.height(30.dp)) + + // Back button and page title on the same line, title aligned to the trailing edge. + Row( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 24.dp), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically, + ) { + Row( + modifier = Modifier.clickable(onClick = onBack), + verticalAlignment = Alignment.CenterVertically, + ) { + Text(text = "β€Ή", fontSize = 20.sp, color = PrimaryBlue) + Spacer(Modifier.width(4.dp)) + Text(text = "Home", fontSize = 15.sp, color = PrimaryBlue, fontWeight = FontWeight.Medium) + } + + Text( + text = "Manage Account", + fontSize = 24.sp, + fontWeight = FontWeight.Bold, + color = TextPrimary, + ) + } + + Spacer(Modifier.height(12.dp)) + + // The styled UserProfile component owns its own data loading, editing and card + // design end to end β€” the sample just drops it in, no BaseUserProfile customization. + UserProfile(modifier = Modifier.fillMaxWidth()) + + Spacer(Modifier.height(24.dp)) + + // "Security" groups ChangeCredential the same way UserProfile's own "Profile info" header + // groups its card β€” ChangeCredential itself stays header-less so it composes into either + // a labelled group like this or on its own. + Text( + text = "SECURITY", + fontSize = 13.sp, + fontWeight = FontWeight.SemiBold, + letterSpacing = 0.4.sp, + color = MaterialTheme.colorScheme.onSurfaceVariant, + modifier = Modifier.padding(horizontal = 20.dp), + ) + + ChangeCredential(modifier = Modifier.fillMaxWidth()) + + Spacer(Modifier.height(40.dp)) + } +} + +@Composable +private fun SectionHeader(title: String) { + Text( + text = title, + fontSize = 10.sp, + fontWeight = FontWeight.Bold, + color = TextMuted, + letterSpacing = 1.5.sp, + modifier = Modifier.padding(horizontal = 24.dp, vertical = 8.dp), + ) +} + +@Composable +private fun DetailCard(content: @Composable () -> Unit) { + Column( + modifier = Modifier + .padding(horizontal = 24.dp) + .fillMaxWidth() + .border(1.dp, BorderLight, RoundedCornerShape(12.dp)) + .background(Color.White, RoundedCornerShape(12.dp)) + .clip(RoundedCornerShape(12.dp)), + ) { + content() + } +} + +@Composable +private fun DetailRow(label: String, content: @Composable () -> Unit) { + Row( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 16.dp, vertical = 12.dp), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically, + ) { + Text( + text = label, + fontSize = 13.sp, + color = TextMuted, + modifier = Modifier.width(100.dp), + ) + Box(modifier = Modifier.weight(1f), contentAlignment = Alignment.CenterEnd) { + content() + } + } +} + +// ───────────────────────────────────────────────────────────────────────────── +// Token Debug screen +// ───────────────────────────────────────────────────────────────────────────── + +@Composable +private fun TokenDebugScreen(onBack: () -> Unit) { + val thunder = LocalThunderID.current + var token by remember { mutableStateOf("") } + val clipboardManager = LocalClipboardManager.current + + LaunchedEffect(Unit) { + try { + token = thunder.client.getAccessToken() + } catch (_: Exception) {} + } + + val decoded = remember(token) { if (token.isNotEmpty()) decodeJwtPayload(token) else emptyMap() } + val rawJson = decoded["raw"] as? String ?: "" + val parts = (decoded["parts"] as? List<*>)?.map { it.toString() } ?: emptyList() + + val issuer = remember(rawJson) { + Regex("\"iss\"\\s*:\\s*\"([^\"]+)\"").find(rawJson)?.groupValues?.get(1) ?: "β€”" + } + val scopes = remember(rawJson) { + Regex("\"scope\"\\s*:\\s*\"([^\"]+)\"").find(rawJson)?.groupValues?.get(1) ?: "β€”" + } + + Column( + modifier = Modifier + .fillMaxSize() + .background(LightBg) + .verticalScroll(rememberScrollState()), + ) { + Spacer(Modifier.height(56.dp)) + + // Back button + Row( + modifier = Modifier + .padding(horizontal = 24.dp) + .clickable(onClick = onBack), + verticalAlignment = Alignment.CenterVertically, + ) { + Text(text = "β€Ή", fontSize = 20.sp, color = PrimaryBlue) + Spacer(Modifier.width(4.dp)) + Text(text = "Home", fontSize = 15.sp, color = PrimaryBlue, fontWeight = FontWeight.Medium) + } + + Spacer(Modifier.height(20.dp)) + + Column(modifier = Modifier.padding(horizontal = 24.dp)) { + Text(text = "Token debug", fontSize = 20.sp, fontWeight = FontWeight.Bold, color = TextPrimary) + Spacer(Modifier.height(2.dp)) + Text(text = "Access token and claims", fontSize = 13.sp, color = TextMuted) + } + + Spacer(Modifier.height(16.dp)) + + // Access token display + Column(modifier = Modifier.padding(horizontal = 24.dp)) { + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically, + ) { + Text(text = "ACCESS TOKEN", fontSize = 10.sp, fontWeight = FontWeight.Bold, color = TextMuted, letterSpacing = 1.sp) + OutlinedButton( + onClick = { if (token.isNotEmpty()) clipboardManager.setText(AnnotatedString(token)) }, + modifier = Modifier.height(28.dp), + shape = RoundedCornerShape(6.dp), + border = androidx.compose.foundation.BorderStroke(1.dp, BorderLight), + colors = ButtonDefaults.outlinedButtonColors(contentColor = TextMuted), + contentPadding = androidx.compose.foundation.layout.PaddingValues(horizontal = 10.dp, vertical = 0.dp), + ) { + Text(text = "Copy", fontSize = 11.sp) + } + } + Spacer(Modifier.height(8.dp)) + Box( + modifier = Modifier + .fillMaxWidth() + .background(TokenDarkBg, RoundedCornerShape(10.dp)) + .padding(14.dp), + ) { + if (token.isNotEmpty() && parts.size == 3) { + val annotated = buildAnnotatedString { + withStyle(SpanStyle(color = JwtHeaderColor)) { append(parts[0]) } + withStyle(SpanStyle(color = Color(0xFF8B8B8B))) { append(".") } + withStyle(SpanStyle(color = JwtPayloadColor)) { append(parts[1]) } + withStyle(SpanStyle(color = Color(0xFF8B8B8B))) { append(".") } + withStyle(SpanStyle(color = JwtSignatureColor)) { append(parts[2]) } + } + Text( + text = annotated, + fontSize = 11.sp, + fontFamily = FontFamily.Monospace, + lineHeight = 16.sp, + ) + } else { + Text( + text = if (token.isEmpty()) "Loading…" else token, + fontSize = 11.sp, + fontFamily = FontFamily.Monospace, + color = Color(0xFF79C0FF), + lineHeight = 16.sp, + ) + } + } + } + + Spacer(Modifier.height(20.dp)) + + // JWT Payload + Column(modifier = Modifier.padding(horizontal = 24.dp)) { + Text(text = "JWT PAYLOAD", fontSize = 10.sp, fontWeight = FontWeight.Bold, color = TextMuted, letterSpacing = 1.sp) + Spacer(Modifier.height(8.dp)) + Box( + modifier = Modifier + .fillMaxWidth() + .background(TokenDarkBg, RoundedCornerShape(10.dp)) + .padding(14.dp), + ) { + Text( + text = if (rawJson.isNotEmpty()) prettyPrintJson(rawJson) else "β€”", + fontSize = 11.sp, + fontFamily = FontFamily.Monospace, + color = JwtPayloadColor, + lineHeight = 18.sp, + ) + } + } + + Spacer(Modifier.height(20.dp)) + + // Issuer and Scopes + SectionHeader(title = "TOKEN DETAILS") + DetailCard { + DetailRow(label = "Issuer") { + Text( + text = issuer, + fontSize = 11.sp, + fontFamily = FontFamily.Monospace, + color = TextMuted, + textAlign = TextAlign.End, + ) + } + Box(modifier = Modifier.fillMaxWidth().height(1.dp).background(BorderLight)) + DetailRow(label = "Scopes") { + Text( + text = scopes, + fontSize = 12.sp, + color = TextMuted, + textAlign = TextAlign.End, + ) + } + } + + Spacer(Modifier.height(40.dp)) + } +} + +// ───────────────────────────────────────────────────────────────────────────── +// Helpers +// ───────────────────────────────────────────────────────────────────────────── + +private fun decodeJwtPayload(token: String): Map { + return try { + val parts = token.split(".") + if (parts.size != 3) return emptyMap() + val padded = parts[1].let { it + "=".repeat((4 - it.length % 4) % 4) } + val json = String(android.util.Base64.decode(padded, android.util.Base64.URL_SAFE)) + mapOf("raw" to json, "parts" to parts) + } catch (e: Exception) { + emptyMap() + } +} + +private fun prettyPrintJson(json: String): String { + return try { + val sb = StringBuilder() + var indent = 0 + var inString = false + for (ch in json) { + when { + ch == '"' && !inString -> { inString = true; sb.append(ch) } + ch == '"' && inString -> { inString = false; sb.append(ch) } + inString -> sb.append(ch) + ch == '{' || ch == '[' -> { + sb.append(ch) + sb.append('\n') + indent++ + repeat(indent) { sb.append(" ") } + } + ch == '}' || ch == ']' -> { + sb.append('\n') + indent-- + repeat(indent) { sb.append(" ") } + sb.append(ch) + } + ch == ',' -> { + sb.append(ch) + sb.append('\n') + repeat(indent) { sb.append(" ") } + } + ch == ':' -> sb.append(": ") + ch != ' ' && ch != '\n' && ch != '\r' && ch != '\t' -> sb.append(ch) + } + } + sb.toString() + } catch (_: Exception) { + json + } +} + +private fun claimAsEpochSeconds(claims: Map?, key: String): Long? { + return when (val value = claims?.get(key)) { + is Number -> value.toLong() + is String -> value.toLongOrNull() + else -> null + } +} + +private fun formatSignedInAt(authTimeSeconds: Long?): String { + if (authTimeSeconds == null) return "β€”" + val formatter = SimpleDateFormat("h:mm a", Locale.getDefault()) + return formatter.format(Date(authTimeSeconds * 1000)) +} + +private fun formatExpiresIn(expSeconds: Long?, nowSeconds: Long): String { + if (expSeconds == null) return "β€”" + val remaining = expSeconds - nowSeconds + if (remaining <= 0) return "Expired" + val minutes = remaining / 60 + val seconds = remaining % 60 + return if (remaining < 3600) { + "${minutes}m ${seconds}s" + } else { + val hours = remaining / 3600 + val remMinutes = (remaining % 3600) / 60 + "${hours}h ${remMinutes}m" + } +} + diff --git a/quickstarts/android/src/main/kotlin/dev/thunderid/quickstart/MainActivity.kt b/quickstarts/android/src/main/kotlin/dev/thunderid/quickstart/MainActivity.kt new file mode 100644 index 0000000..a70378b --- /dev/null +++ b/quickstarts/android/src/main/kotlin/dev/thunderid/quickstart/MainActivity.kt @@ -0,0 +1,70 @@ +// Copyright 2026 The ThunderID Authors +// SPDX-License-Identifier: Apache-2.0 + +package dev.thunderid.quickstart + +import android.content.Intent +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.lightColorScheme +import androidx.compose.ui.graphics.Color +import dev.thunderid.android.EncryptedStorageAdapter +import dev.thunderid.android.ThunderIDConfig +import dev.thunderid.android.auth.FederatedAuthSession +import dev.thunderid.compose.ThunderIDProvider + +// Matches the ThunderID blue used throughout AuthScreen/HomeScreen β€” the SDK's form +// fields and bottom sheet read `MaterialTheme.colorScheme.primary`, so leaving this at +// Material3's baseline (or an unrelated placeholder brand color) makes them look +// mismatched/pink against the rest of the sample. +private val ThunderIDPrimary = Color(0xFF3688FF) + +class MainActivity : ComponentActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + val attestationEnabled = BuildConfig.THUNDERID_ATTESTATION_ENABLED + val integrityTokenProvider = + PlayIntegrityTokenProvider(applicationContext, BuildConfig.THUNDERID_CLOUD_PROJECT_NUMBER) + + val config = ThunderIDConfig( + baseUrl = BuildConfig.THUNDERID_BASE_URL, + scopes = listOf("openid", "profile", "email"), + applicationId = BuildConfig.THUNDERID_APPLICATION_ID.takeIf { it.isNotBlank() }, + attestationEnabled = attestationEnabled, + attestationTokenProvider = if (attestationEnabled) integrityTokenProvider::requestToken else null, + storage = EncryptedStorageAdapter(this), + allowInsecureConnections = BuildConfig.DEBUG, + ) + + val colorScheme = lightColorScheme( + primary = ThunderIDPrimary, + secondary = Color(0xFF345F91), + surfaceVariant = Color(0xFFF2F2F2), + onSurfaceVariant = Color(0xFF49454F), + outlineVariant = Color(0x1F1D1B20), + ) + + setContent { + MaterialTheme(colorScheme = colorScheme) { + ThunderIDProvider(config = config) { + QuickstartApp(applicationId = BuildConfig.THUNDERID_APPLICATION_ID) + } + } + } + } + + override fun onNewIntent(intent: Intent) { + super.onNewIntent(intent) + intent.data?.let(FederatedAuthSession::onRedirect) + } + + override fun onResume() { + super.onResume() + // A callback arrives in onNewIntent before this runs, so a sign-in still pending here means + // the user dismissed the browser. + FederatedAuthSession.cancelIfPending() + } +} diff --git a/quickstarts/android/src/main/kotlin/dev/thunderid/quickstart/PlayIntegrityTokenProvider.kt b/quickstarts/android/src/main/kotlin/dev/thunderid/quickstart/PlayIntegrityTokenProvider.kt new file mode 100644 index 0000000..c060f83 --- /dev/null +++ b/quickstarts/android/src/main/kotlin/dev/thunderid/quickstart/PlayIntegrityTokenProvider.kt @@ -0,0 +1,44 @@ +// Copyright 2026 The ThunderID Authors +// SPDX-License-Identifier: Apache-2.0 + +package dev.thunderid.quickstart + +import android.content.Context +import com.google.android.gms.tasks.Task +import com.google.android.play.core.integrity.IntegrityManagerFactory +import com.google.android.play.core.integrity.StandardIntegrityManager.PrepareIntegrityTokenRequest +import com.google.android.play.core.integrity.StandardIntegrityManager.StandardIntegrityTokenProvider +import com.google.android.play.core.integrity.StandardIntegrityManager.StandardIntegrityTokenRequest +import kotlinx.coroutines.suspendCancellableCoroutine +import kotlin.coroutines.resume +import kotlin.coroutines.resumeWithException + +/** + * Mints Google Play Integrity Standard API tokens for [dev.thunderid.android.ThunderIDConfig.attestationTokenProvider]. + * The warm-up ([StandardIntegrityTokenProvider]) is cached and reused across sign-in attempts. + */ +class PlayIntegrityTokenProvider( + private val context: Context, + private val cloudProjectNumber: Long, +) { + private var tokenProvider: StandardIntegrityTokenProvider? = null + + suspend fun requestToken(): String { + val provider = tokenProvider ?: prepareTokenProvider().also { tokenProvider = it } + return provider.request(StandardIntegrityTokenRequest.builder().build()).await().token() + } + + private suspend fun prepareTokenProvider(): StandardIntegrityTokenProvider = + IntegrityManagerFactory.createStandard(context) + .prepareIntegrityToken( + PrepareIntegrityTokenRequest.builder() + .setCloudProjectNumber(cloudProjectNumber) + .build(), + ).await() +} + +private suspend fun Task.await(): T = + suspendCancellableCoroutine { cont -> + addOnSuccessListener { cont.resume(it) } + addOnFailureListener { cont.resumeWithException(it) } + } diff --git a/quickstarts/android/src/main/kotlin/dev/thunderid/quickstart/RootView.kt b/quickstarts/android/src/main/kotlin/dev/thunderid/quickstart/RootView.kt new file mode 100644 index 0000000..2bd9683 --- /dev/null +++ b/quickstarts/android/src/main/kotlin/dev/thunderid/quickstart/RootView.kt @@ -0,0 +1,58 @@ +// Copyright 2026 The ThunderID Authors +// SPDX-License-Identifier: Apache-2.0 + +package dev.thunderid.quickstart + +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import dev.thunderid.compose.LocalThunderID + +@Composable +fun QuickstartApp(applicationId: String) { + val thunder = LocalThunderID.current + when { + thunder.error != null && !thunder.isInitialized -> ErrorScreen(thunder.error!!) + !thunder.isInitialized || thunder.isLoading -> LoadingScreen() + thunder.error != null -> ErrorScreen(thunder.error!!) + thunder.isSignedIn -> HomeScreen() + else -> AuthScreen(applicationId = applicationId) + } +} + +@Composable +private fun LoadingScreen() { + Box(Modifier.fillMaxSize(), contentAlignment = Alignment.Center) { + Column(horizontalAlignment = Alignment.CenterHorizontally) { + CircularProgressIndicator() + Spacer(Modifier.height(12.dp)) + Text("Starting ThunderID…", color = MaterialTheme.colorScheme.onSurfaceVariant) + } + } +} + +@Composable +private fun ErrorScreen(message: String) { + Box( + Modifier + .fillMaxSize() + .padding(24.dp), + contentAlignment = Alignment.Center, + ) { + Text( + text = "Configuration error: $message\n\nCheck your .env values.", + textAlign = TextAlign.Center, + ) + } +} diff --git a/quickstarts/android/src/main/res/drawable-night/ic_launcher_foreground.png b/quickstarts/android/src/main/res/drawable-night/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..7aa61925ab2d64273f9fbabf01c43edaf82fcf3b GIT binary patch literal 17135 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.%9*J{0=rVScYA4<7|4>{_vX27KL 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 + + + + diff --git a/quickstarts/android/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/quickstarts/android/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..5ed0a2d --- /dev/null +++ b/quickstarts/android/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/quickstarts/android/src/main/res/mipmap-hdpi/ic_launcher.png b/quickstarts/android/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..b8494cad73f32b99343d42ce6e37f54cd5b18257 GIT binary patch literal 6289 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

+ + + diff --git a/quickstarts/browser/package.json b/quickstarts/browser/package.json new file mode 100644 index 0000000..a2b4c2e --- /dev/null +++ b/quickstarts/browser/package.json @@ -0,0 +1,18 @@ +{ + "name": "@thunderid/browser-quickstart", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "prepare-dev": "node scripts/prepare-dev.cjs", + "dev": "vite", + "build": "vite build", + "preview": "vite preview" + }, + "dependencies": { + "@thunderid/browser": "1.3.0" + }, + "devDependencies": { + "vite": "^6.3.5" + } +} diff --git a/quickstarts/browser/pnpm-lock.yaml b/quickstarts/browser/pnpm-lock.yaml new file mode 100644 index 0000000..9ac98d2 --- /dev/null +++ b/quickstarts/browser/pnpm-lock.yaml @@ -0,0 +1,790 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@thunderid/browser': + specifier: 1.3.0 + version: 1.3.0 + devDependencies: + vite: + specifier: ^6.3.5 + version: 6.4.4 + +packages: + + '@esbuild/aix-ppc64@0.25.12': + resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.25.12': + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.25.12': + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.25.12': + resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.25.12': + resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.12': + resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.25.12': + resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.12': + resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.25.12': + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.25.12': + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.25.12': + resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.25.12': + resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.25.12': + resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.25.12': + resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.12': + resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.25.12': + resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.25.12': + resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.12': + resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.12': + resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.12': + resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.12': + resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.25.12': + resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.25.12': + resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.25.12': + resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.25.12': + resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.25.12': + resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@napi-rs/lzma-linux-x64-gnu@1.5.1': + resolution: {integrity: sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ==} + engines: {node: ^22.20 || ^24.12 || >=25} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-android-arm-eabi@4.64.9': + resolution: {integrity: sha512-qJmhckvOleXp8R+BaXiVW/S34/3M7pvN17/QcG90A74BDaSvKv8ffY+GYG+a/xU0vEoITzdMSiM7o9HZSQWbfA==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.64.9': + resolution: {integrity: sha512-dqQgds39BNWGB2ughJ6n2LTQFXk8RAOwnXj6m387OHpygfD93QRS1ODIfpiWyAa9gsFB9l34pSqeLmA0Xk/VBw==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.64.9': + resolution: {integrity: sha512-scrMx4SGikOSbWknLmPD0v6OeJ1Wih3kyRLdNZnlVbBeKVWp1nRTVcpM0IxDJdc3u8UjesPHTmnX649u8cQpBw==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.64.9': + resolution: {integrity: sha512-fkwi2OQR+QWoViRFt08Bsca6G0e9pk/4z+JgmqHq6jSRTT0LtI27KRVK8bu++6L/CBtQ3OZePbqC3bcrwGzTqQ==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.64.9': + resolution: {integrity: sha512-8Apr0Khn0r2MUsDtcOMbp85fDdXsX/E+iLhO17WUjG24m3O8ChArqI0isI7CAdj9Ouq177PHtVtEUpMNE1C4Gw==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.64.9': + resolution: {integrity: sha512-H+upy4DhBcBZlUsCAMyr8wR0Dg9kj8sGloVZdZ7va2heJM/5jnROxI47dtXseJjlD/VoQe6MrXhY3b5ikOq/Vw==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.64.9': + resolution: {integrity: sha512-b50NS9TbAEK/b16vBoKrkeNwy+HvGBXmtBbzX4wcodWOh9dQZvRTN9rUyElIXa36QnwXhU9PAVVkZpqRzSi2Tg==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm-musleabihf@4.64.9': + resolution: {integrity: sha512-SdqcudB/FzjLESsRMgXhV+FXGtf6usxXwlMoRW7D/XS3f9CZ4T4wycRBu2h9bVl2AOaPpunoA8ftAM/MF4altQ==} + cpu: [arm] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-arm64-gnu@4.64.9': + resolution: {integrity: sha512-dg19FFRoovN+KZ+gMHBAq4Do8PgQmBcxpuhux57OuiR0QLavfn8uPBY8CP+UO50bO+xf0tK0GlqI/jld++5E6g==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm64-musl@4.64.9': + resolution: {integrity: sha512-+jyv5ofGmpAvtrzLjSr/e4syskeikEp5L82bUzB76auwOgK1VNVwZV/F2g1Pes9bhTznbejOefAqPglHSKYmTA==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-loong64-gnu@4.64.9': + resolution: {integrity: sha512-MKFXxqmkzCbtNvx/vjiJdss44eRtVabhCtDWcCFD9NHGwP+YkqnM/slnEsv/3fsoq9ukTtudraAjGhptrUPCVg==} + cpu: [loong64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-loong64-musl@4.64.9': + resolution: {integrity: sha512-lhARcOT6n7Ni9hpQRq8LZjbuoW+G/GXaW4Jfhx2MbmjnCj9XxLMRTceJIMpiMLQVWm+qxe7oq1sYvlIGOAW34Q==} + cpu: [loong64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-ppc64-gnu@4.64.9': + resolution: {integrity: sha512-oORQzGxZ1oHghJwLdwc8Ni0SY9otILAeXsWdiImTF4F5HkWJUwh5s/269PF5tYILNC1z/3RwFsrgcHPguBcb0g==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-ppc64-musl@4.64.9': + resolution: {integrity: sha512-J2JQHQt7oR1uutd2OSwbV2Qpb2LI5gggPolbkUwDe7vn/0dnduZ0w6EIbGnZUAw7uIKaMgfVylcH6V+Aov8kRA==} + cpu: [ppc64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-riscv64-gnu@4.64.9': + resolution: {integrity: sha512-bWaKLrfzeQ9mOzJJxXbPgw2RH6VAaTJrb/60Tqf7YSMxubG8780Hzm7Us+D6qVW8QRGJYl4VUvVXxnRB0o9zvQ==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-riscv64-musl@4.64.9': + resolution: {integrity: sha512-TFJyaCB9NsvSyvVGQgTSRD9XgxsAq99ivDDkt9KAySlrNW5Obsd1kQpvoCvBCOLq+JlJTjmtroLH0wp8M8mEsA==} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-s390x-gnu@4.64.9': + resolution: {integrity: sha512-DvmOM5xz/wDnUJFVjqP32ahalxn7BDuvO25bpuFOrb50AIFCCcFPN4lWWUDD1c8Ddv9sMO9SXyqtOet8G8u9cQ==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-gnu@4.64.9': + resolution: {integrity: sha512-aFzokHK3yE00mzAvKm/PY76OsOOTjvoTGE82Vp89iBDyD2wUBlV4ZsR2tWkRECTEFk6TC4Yc3zaEWjPqq1vstQ==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-musl@4.64.9': + resolution: {integrity: sha512-t/yMdeaaQUuNNpmT7taBmH2VvHzgT4YA/IaKVE3qVr4PYQemn/kmJkL4uG4UvTLcWXQd0MSoOa/3URYSWGmUEg==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rollup/rollup-openbsd-x64@4.64.9': + resolution: {integrity: sha512-4dnxKQ8GHARyjqAU87q5UWhywZTpIbR2VWhtACdC37GD1SGszmvb3TaBFVA4n+fnDHSKMut4ZJ63hVFwgnxVtg==} + cpu: [x64] + os: [openbsd] + + '@rollup/rollup-openharmony-arm64@4.64.9': + resolution: {integrity: sha512-1qdQj6IrNoR0xFvrCQHmhBXe9HMbBGNTFi+3n4jKMt2rTx4k0aeAdraZU4WDOMfL9tAwS8/TRSuquvNuPQ+Gpw==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.64.9': + resolution: {integrity: sha512-yc1GSEHIYhKGN5WSaJc+eMy8bZvzcvAmflEgFh8L3xcy8dYxGmfrudyBnBFde9f6JzOa1kFqocF8BHaWybjQoA==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.64.9': + resolution: {integrity: sha512-VzHGvosAkLIzrwqvSgJBPDmGFTF/yE8OtMT4H5z8pM1NA0NiPpvTYnUh+9xPd+d5oy/wqF317FmJ1I8Kk8pp0Q==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.64.9': + resolution: {integrity: sha512-FB77txy1PiAcJgG72nOLA6R0S3PRZahs8Spx0z2yseDUkoMmJcrQghiebJ2JHZ74cCOVlX/MYd4dUbJtJJ8fow==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.64.9': + resolution: {integrity: sha512-IoIgQLpK1DbOcQf1vX+i5oe5LXypsCVb1j/mU6BLAbOGmXH4E+j4kMfgZRwPYUohVBurNyVMgIKVM5dR6xA0kA==} + cpu: [x64] + os: [win32] + + '@thunderid/browser@1.3.0': + resolution: {integrity: sha512-O6DHlUyVFfBaNcJDEXACLU4NJMrNjDlqAuzesvJ+8a0Gl5g8WFK53rpx027e/rWICG0vcGe2UVZuhvZq5Z511A==} + + '@thunderid/javascript@1.4.0': + resolution: {integrity: sha512-qHfIFzXOQTN1nhuBT91Tr8bLPvfyEDa7gUQSL7GNcJkcyyKfJ77meIwr91lCme0ySFUnTeKl0Bk+R8iIJiKXBw==} + + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + base64url@3.0.1: + resolution: {integrity: sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==} + engines: {node: '>=6.0.0'} + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + core-js@3.42.0: + resolution: {integrity: sha512-Sz4PP4ZA+Rq4II21qkNqOEDTDrCvcANId3xpIgB34NDkWc3UduWj2dqEtN9yZIq8Dk3HyPI33x9sqqU5C8sr0g==} + + esbuild@0.25.12: + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} + engines: {node: '>=18'} + hasBin: true + + fast-sha256@1.3.0: + resolution: {integrity: sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ==} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + jose@6.2.3: + resolution: {integrity: sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==} + + nanoid@3.3.20: + resolution: {integrity: sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@4.0.7: + resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==} + engines: {node: '>=12'} + + postcss@8.5.30: + resolution: {integrity: sha512-zkd+e9S1AQHhmaBKye9zlFHWjOwVgqXl1q3ECYy8561K7qxR2cREf/STLskulBFd78k6AOFeA+ff1TtEzk9bAA==} + engines: {node: ^10 || ^12 || >=14} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + rollup@4.64.9: + resolution: {integrity: sha512-mnPSQINChN7PpT+a5CI0/+87hm/+6zxSKBK1XonrzQ0zFnglaTjhkTP2Br4yNCTcLHUEvrAfZffH57jGf+8xBQ==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + source-map-js@1.2.2: + resolution: {integrity: sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==} + engines: {node: '>=0.10.0'} + + stream-browserify@3.0.0: + resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + tinyglobby@0.2.17: + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} + engines: {node: '>=12.0.0'} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + vite@6.4.4: + resolution: {integrity: sha512-xGjU/SyjeNyb0E4KxXBvYz/1C+3JXuujvf2hXNOtnlcE+58o5ajd9N2/n2VhkiJvpCP2qQasnUpx5PXNeI+p1Q==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + +snapshots: + + '@esbuild/aix-ppc64@0.25.12': + optional: true + + '@esbuild/android-arm64@0.25.12': + optional: true + + '@esbuild/android-arm@0.25.12': + optional: true + + '@esbuild/android-x64@0.25.12': + optional: true + + '@esbuild/darwin-arm64@0.25.12': + optional: true + + '@esbuild/darwin-x64@0.25.12': + optional: true + + '@esbuild/freebsd-arm64@0.25.12': + optional: true + + '@esbuild/freebsd-x64@0.25.12': + optional: true + + '@esbuild/linux-arm64@0.25.12': + optional: true + + '@esbuild/linux-arm@0.25.12': + optional: true + + '@esbuild/linux-ia32@0.25.12': + optional: true + + '@esbuild/linux-loong64@0.25.12': + optional: true + + '@esbuild/linux-mips64el@0.25.12': + optional: true + + '@esbuild/linux-ppc64@0.25.12': + optional: true + + '@esbuild/linux-riscv64@0.25.12': + optional: true + + '@esbuild/linux-s390x@0.25.12': + optional: true + + '@esbuild/linux-x64@0.25.12': + optional: true + + '@esbuild/netbsd-arm64@0.25.12': + optional: true + + '@esbuild/netbsd-x64@0.25.12': + optional: true + + '@esbuild/openbsd-arm64@0.25.12': + optional: true + + '@esbuild/openbsd-x64@0.25.12': + optional: true + + '@esbuild/openharmony-arm64@0.25.12': + optional: true + + '@esbuild/sunos-x64@0.25.12': + optional: true + + '@esbuild/win32-arm64@0.25.12': + optional: true + + '@esbuild/win32-ia32@0.25.12': + optional: true + + '@esbuild/win32-x64@0.25.12': + optional: true + + '@napi-rs/lzma-linux-x64-gnu@1.5.1': + optional: true + + '@rollup/rollup-android-arm-eabi@4.64.9': + optional: true + + '@rollup/rollup-android-arm64@4.64.9': + optional: true + + '@rollup/rollup-darwin-arm64@4.64.9': + optional: true + + '@rollup/rollup-darwin-x64@4.64.9': + optional: true + + '@rollup/rollup-freebsd-arm64@4.64.9': + optional: true + + '@rollup/rollup-freebsd-x64@4.64.9': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.64.9': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.64.9': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.64.9': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.64.9': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.64.9': + optional: true + + '@rollup/rollup-linux-loong64-musl@4.64.9': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.64.9': + optional: true + + '@rollup/rollup-linux-ppc64-musl@4.64.9': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.64.9': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.64.9': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.64.9': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.64.9': + optional: true + + '@rollup/rollup-linux-x64-musl@4.64.9': + optional: true + + '@rollup/rollup-openbsd-x64@4.64.9': + optional: true + + '@rollup/rollup-openharmony-arm64@4.64.9': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.64.9': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.64.9': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.64.9': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.64.9': + optional: true + + '@thunderid/browser@1.3.0': + dependencies: + '@thunderid/javascript': 1.4.0 + base64url: 3.0.1 + buffer: 6.0.3 + core-js: 3.42.0 + fast-sha256: 1.3.0 + jose: 6.2.3 + process: 0.11.10 + randombytes: 2.1.0 + stream-browserify: 3.0.0 + tslib: 2.8.1 + + '@thunderid/javascript@1.4.0': + dependencies: + jose: 6.2.3 + tslib: 2.8.1 + + '@types/estree@1.0.9': {} + + base64-js@1.5.1: {} + + base64url@3.0.1: {} + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + core-js@3.42.0: {} + + esbuild@0.25.12: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.12 + '@esbuild/android-arm': 0.25.12 + '@esbuild/android-arm64': 0.25.12 + '@esbuild/android-x64': 0.25.12 + '@esbuild/darwin-arm64': 0.25.12 + '@esbuild/darwin-x64': 0.25.12 + '@esbuild/freebsd-arm64': 0.25.12 + '@esbuild/freebsd-x64': 0.25.12 + '@esbuild/linux-arm': 0.25.12 + '@esbuild/linux-arm64': 0.25.12 + '@esbuild/linux-ia32': 0.25.12 + '@esbuild/linux-loong64': 0.25.12 + '@esbuild/linux-mips64el': 0.25.12 + '@esbuild/linux-ppc64': 0.25.12 + '@esbuild/linux-riscv64': 0.25.12 + '@esbuild/linux-s390x': 0.25.12 + '@esbuild/linux-x64': 0.25.12 + '@esbuild/netbsd-arm64': 0.25.12 + '@esbuild/netbsd-x64': 0.25.12 + '@esbuild/openbsd-arm64': 0.25.12 + '@esbuild/openbsd-x64': 0.25.12 + '@esbuild/openharmony-arm64': 0.25.12 + '@esbuild/sunos-x64': 0.25.12 + '@esbuild/win32-arm64': 0.25.12 + '@esbuild/win32-ia32': 0.25.12 + '@esbuild/win32-x64': 0.25.12 + + fast-sha256@1.3.0: {} + + fdir@6.5.0(picomatch@4.0.7): + optionalDependencies: + picomatch: 4.0.7 + + fsevents@2.3.3: + optional: true + + ieee754@1.2.1: {} + + inherits@2.0.4: {} + + jose@6.2.3: {} + + nanoid@3.3.20: {} + + picocolors@1.1.1: {} + + picomatch@4.0.7: {} + + postcss@8.5.30: + dependencies: + nanoid: 3.3.20 + picocolors: 1.1.1 + source-map-js: 1.2.2 + + process@0.11.10: {} + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + rollup@4.64.9: + dependencies: + '@types/estree': 1.0.9 + optionalDependencies: + '@napi-rs/lzma-linux-x64-gnu': 1.5.1 + '@rollup/rollup-android-arm-eabi': 4.64.9 + '@rollup/rollup-android-arm64': 4.64.9 + '@rollup/rollup-darwin-arm64': 4.64.9 + '@rollup/rollup-darwin-x64': 4.64.9 + '@rollup/rollup-freebsd-arm64': 4.64.9 + '@rollup/rollup-freebsd-x64': 4.64.9 + '@rollup/rollup-linux-arm-gnueabihf': 4.64.9 + '@rollup/rollup-linux-arm-musleabihf': 4.64.9 + '@rollup/rollup-linux-arm64-gnu': 4.64.9 + '@rollup/rollup-linux-arm64-musl': 4.64.9 + '@rollup/rollup-linux-loong64-gnu': 4.64.9 + '@rollup/rollup-linux-loong64-musl': 4.64.9 + '@rollup/rollup-linux-ppc64-gnu': 4.64.9 + '@rollup/rollup-linux-ppc64-musl': 4.64.9 + '@rollup/rollup-linux-riscv64-gnu': 4.64.9 + '@rollup/rollup-linux-riscv64-musl': 4.64.9 + '@rollup/rollup-linux-s390x-gnu': 4.64.9 + '@rollup/rollup-linux-x64-gnu': 4.64.9 + '@rollup/rollup-linux-x64-musl': 4.64.9 + '@rollup/rollup-openbsd-x64': 4.64.9 + '@rollup/rollup-openharmony-arm64': 4.64.9 + '@rollup/rollup-win32-arm64-msvc': 4.64.9 + '@rollup/rollup-win32-ia32-msvc': 4.64.9 + '@rollup/rollup-win32-x64-gnu': 4.64.9 + '@rollup/rollup-win32-x64-msvc': 4.64.9 + fsevents: 2.3.3 + + safe-buffer@5.2.1: {} + + source-map-js@1.2.2: {} + + stream-browserify@3.0.0: + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + tinyglobby@0.2.17: + dependencies: + fdir: 6.5.0(picomatch@4.0.7) + picomatch: 4.0.7 + + tslib@2.8.1: {} + + util-deprecate@1.0.2: {} + + vite@6.4.4: + dependencies: + esbuild: 0.25.12 + fdir: 6.5.0(picomatch@4.0.7) + picomatch: 4.0.7 + postcss: 8.5.30 + rollup: 4.64.9 + tinyglobby: 0.2.17 + optionalDependencies: + fsevents: 2.3.3 diff --git a/quickstarts/browser/pnpm-workspace.yaml b/quickstarts/browser/pnpm-workspace.yaml new file mode 100644 index 0000000..151e558 --- /dev/null +++ b/quickstarts/browser/pnpm-workspace.yaml @@ -0,0 +1,3 @@ +allowBuilds: + core-js: false + esbuild: true diff --git a/quickstarts/browser/scripts/prepare-dev.cjs b/quickstarts/browser/scripts/prepare-dev.cjs new file mode 100644 index 0000000..734e095 --- /dev/null +++ b/quickstarts/browser/scripts/prepare-dev.cjs @@ -0,0 +1,19 @@ +// Copyright 2026 The ThunderID Authors +// SPDX-License-Identifier: Apache-2.0 + +const fs = require('node:fs'); +const path = require('node:path'); + +const root = path.join(__dirname, '..'); + +const envExample = path.join(root, '.env.example'); +const envTarget = path.join(root, '.env'); +if (fs.existsSync(envExample) && !fs.existsSync(envTarget)) { + // Blank placeholder values (e.g. `your-client-id-here`, the sample base URL) + // so the copied .env still trips the app's missing-env-var check until real + // values are filled in. + const envContent = fs + .readFileSync(envExample, 'utf8') + .replace(/^([A-Z0-9_]+)=(your-\S*|generate-with-\S*|https:\/\/localhost:8090)$/gm, '$1='); + fs.writeFileSync(envTarget, envContent); +} diff --git a/quickstarts/browser/src/auth.js b/quickstarts/browser/src/auth.js new file mode 100644 index 0000000..bad532b --- /dev/null +++ b/quickstarts/browser/src/auth.js @@ -0,0 +1,18 @@ +import { ThunderIDBrowserClient } from '@thunderid/browser' + +const REQUIRED_ENV_VARS = ['VITE_THUNDERID_CLIENT_ID', 'VITE_THUNDERID_BASE_URL'] + +export const missingEnvVars = REQUIRED_ENV_VARS.filter((key) => !import.meta.env[key]) + +const auth = new ThunderIDBrowserClient() + +if (missingEnvVars.length === 0) { + await auth.initialize({ + clientId: import.meta.env.VITE_THUNDERID_CLIENT_ID, + baseUrl: import.meta.env.VITE_THUNDERID_BASE_URL, + afterSignInUrl: window.location.origin, + afterSignOutUrl: window.location.origin, + }) +} + +export default auth diff --git a/quickstarts/browser/src/components/nav.js b/quickstarts/browser/src/components/nav.js new file mode 100644 index 0000000..25b1ca7 --- /dev/null +++ b/quickstarts/browser/src/components/nav.js @@ -0,0 +1,171 @@ +const ICON_MOON = `` +const ICON_SUN = `` +const ICON_KEY = `` +const ICON_USER = `` +const ICON_CHEVRON_LEFT = `` +const ICON_CHEVRON_DOWN = `` +const ICON_TECH = `JS` + +function escapeHtml(str) { + if (str == null) return '' + return String(str) + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"') + .replace(/'/g, ''') +} + +function getInitials(user) { + const given = user?.given_name || '' + const family = user?.family_name || '' + if (given && family) return (given[0] + family[0]).toUpperCase() + const name = user?.name || user?.username || user?.email || '?' + const parts = name.trim().split(/\s+/) + if (parts.length >= 2) return (parts[0][0] + parts[parts.length - 1][0]).toUpperCase() + return name.slice(0, 2).toUpperCase() +} + +function getAvatarUrl(user) { + return user?.profile || user?.profileUrl || user?.picture || user?.URL || null +} + +function renderAvatar(user, className) { + const avatarUrl = getAvatarUrl(user) + if (avatarUrl) { + return `` + } + return `${escapeHtml(getInitials(user))}` +} + +function getFullName(user) { + const given = user?.given_name || '' + const family = user?.family_name || '' + if (given && family) return `${given} ${family}` + return user?.name || user?.username || 'User' +} + +export function renderSignedOutNav({ isDark, hideSignIn = false }) { + return ` + ` +} + +export function renderSignedInNav({ user, isDark, currentPage }) { + const name = escapeHtml(getFullName(user)) + const email = escapeHtml(user?.email || '') + + return ` + ` +} + +export function attachNavHandlers({ isDark, setIsDark, navigateTo, auth }) { + document.getElementById('dark-toggle')?.addEventListener('click', () => { + const next = !isDark() + setIsDark(next) + document.documentElement.classList.toggle('dark', next) + const dt = document.getElementById('dark-toggle') + if (dt) dt.innerHTML = next ? ICON_SUN : ICON_MOON + document.querySelectorAll('#hero-mark-top').forEach(el => + el.setAttribute('fill', next ? '#E8F4FF' : '#05213F') + ) + }) + + document.getElementById('nav-logo-btn')?.addEventListener('click', (e) => { + e.preventDefault() + navigateTo('home') + }) + + document.getElementById('nav-back-btn')?.addEventListener('click', () => { + navigateTo('home') + }) + + const trigger = document.getElementById('ud-trigger') + const menu = document.getElementById('ud-menu') + const wrapper = document.getElementById('ud-wrapper') + if (trigger && menu) { + trigger.addEventListener('click', (e) => { + e.stopPropagation() + menu.classList.toggle('ud-menu--open') + }) + document.addEventListener('click', (e) => { + if (!wrapper?.contains(e.target)) menu.classList.remove('ud-menu--open') + }, { once: true }) + } + + document.getElementById('ud-token-debug')?.addEventListener('click', () => { + menu?.classList.remove('ud-menu--open') + navigateTo('token') + }) + + document.getElementById('ud-manage-profile')?.addEventListener('click', () => { + menu?.classList.remove('ud-menu--open') + navigateTo('account') + }) + + document.getElementById('ud-sign-out')?.addEventListener('click', () => { + auth.signOut() + }) +} + +export function attachSignedOutNavHandlers({ auth }) { + document.getElementById('sign-in-btn')?.addEventListener('click', () => auth.signIn()) + document.getElementById('dark-toggle')?.addEventListener('click', () => { + const next = !document.documentElement.classList.contains('dark') + document.documentElement.classList.toggle('dark', next) + const dt = document.getElementById('dark-toggle') + if (dt) dt.innerHTML = next ? ICON_SUN : ICON_MOON + document.querySelectorAll('#hero-mark-top').forEach(el => + el.setAttribute('fill', next ? '#E8F4FF' : '#05213F') + ) + }) +} diff --git a/quickstarts/browser/src/components/profileFields.js b/quickstarts/browser/src/components/profileFields.js new file mode 100644 index 0000000..f0fd045 --- /dev/null +++ b/quickstarts/browser/src/components/profileFields.js @@ -0,0 +1,305 @@ +import { deepMerge, getUsersMe, getUsersMeMeta, updateMeProfile } from '@thunderid/browser' + +const ICON_PENCIL = `` + +// Attributes that are always read-only regardless of schema mutability +const ALWAYS_READONLY_KEYS = [ + 'attributes', + 'id', + 'isReadOnly', + 'isReadonly', + 'ouId', + 'sub', + 'username', + 'userName', + 'user_name', +] + +export function escapeHtml(str) { + if (str == null) return '' + return String(str) + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"') + .replace(/'/g, ''') +} + +function formatLabel(key) { + return key + .split(/(?=[A-Z])|[_.]/) + .filter(Boolean) + .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()) + .join(' ') +} + +function fieldLabel(key, schemaEntry) { + return schemaEntry?.displayName || formatLabel(key) +} + +function isFieldEditable(key, schemaEntry) { + if (ALWAYS_READONLY_KEYS.includes(key)) return false + if (!schemaEntry) return false + if (schemaEntry.credential) return false + if (schemaEntry.readOnly || schemaEntry.mutability === 'READ_ONLY') return false + return true +} + +function getAvatarUrl(user) { + return user?.profile || user?.profileUrl || user?.picture || user?.URL || null +} + +// Deterministic gradient background derived from a name, matching `@thunderid/react`'s +// `Avatar` `background="random"` (default) behavior β€” same hash and HSL formula, so a +// given user gets the same avatar color here as they would in the React/Vue quickstarts. +function generateAvatarBackground(name) { + const hash = name.split('').reduce((acc, char) => ((acc << 5) - acc + char.charCodeAt(0)) & 0xffffffff, 0) + const seed = Math.abs(hash) + const hue1 = seed % 360 + const hue2 = (hue1 + 60 + (seed % 120)) % 360 + const saturation = 70 + (seed % 20) + const lightness1 = 55 + (seed % 15) + const lightness2 = 60 + (seed % 15) + const angle = 45 + (seed % 91) + return `linear-gradient(${angle}deg, hsl(${hue1}, ${saturation}%, ${lightness1}%), hsl(${hue2}, ${saturation}%, ${lightness2}%))` +} + +function getInitials(user) { + const given = user?.given_name || '' + const family = user?.family_name || '' + if (given && family) return (given[0] + family[0]).toUpperCase() + const name = user?.name || user?.username || user?.email || '?' + const parts = name.trim().split(/\s+/) + if (parts.length >= 2) return (parts[0][0] + parts[parts.length - 1][0]).toUpperCase() + return name.slice(0, 2).toUpperCase() +} + +// `getDisplayName`: first + last name, falling back to +// username, email, then the `name` attribute. +function getDisplayName(user, attributes) { + const given = attributes?.given_name || user?.given_name + const family = attributes?.family_name || user?.family_name + if (given && family) return `${given} ${family}` + return user?.username || user?.email || attributes?.name || 'User' +} + +function renderAvatarInner(user, displayName) { + const avatarUrl = getAvatarUrl(user) + if (avatarUrl) { + return { className: '', html: `` } + } + return { + className: 'has-gradient', + html: escapeHtml(getInitials(user)), + style: `background:${generateAvatarBackground(displayName || 'User')}`, + } +} + +export function createFetcher(auth) { + return async (url, config) => { + const token = await auth.getAccessToken() + return fetch(url, { + ...config, + headers: { ...config.headers, Authorization: `Bearer ${token}` }, + }) + } +} + +// Fetches the schema and the current attribute values needed to render and validate the profile view. +export async function fetchProfileFormContext({ baseUrl, auth }) { + const fetcher = createFetcher(auth) + + // A failed fetch stays `null`, not `{}` β€” `supportsCredential` treats those differently: an + // unresolved schema is "not known yet" (every credential stays available), while `{}` is a + // known schema declaring nothing (every credential becomes unavailable). Collapsing a fetch + // failure into `{}` would make a transient network error look identical to "no credentials + // configured". + const [metaRes, profile] = await Promise.all([ + getUsersMeMeta({ baseUrl, fetcher }).catch(() => null), + getUsersMe({ baseUrl, fetcher }).catch(() => null), + ]) + + return { schema: metaRes?.schema ?? null, profile } +} + +function renderFieldRow(key, schemaEntry, value) { + if (schemaEntry?.credential) return '' + + const label = fieldLabel(key, schemaEntry) + const editable = isFieldEditable(key, schemaEntry) + const hasValue = value !== undefined && value !== null && value !== '' + + // BaseUserProfile `shouldShow`: an empty read-only field is hidden entirely rather than rendered as a dash. + if (!hasValue && !editable) return '' + + const displayValue = hasValue ? escapeHtml(String(value)) : `Enter your ${label.toLowerCase()}` + + return ` +
+
${escapeHtml(label)}
+
+ ${displayValue} + ${editable ? `` : ''} +
+
` +} + +// Renders the "Personal info" section: avatar/name summary plus the schema-driven, +// per-field editable rows. Used by the account page's Personal info tab. +export function renderProfileFields(user, { schema = {}, profile } = {}) { + const attributes = profile?.attributes || {} + const displayName = getDisplayName(user, attributes) + const avatar = renderAvatarInner(user, displayName) + const email = escapeHtml(user?.email || user?.username || '') + + // `schema` may be `null` (the meta fetch failed) β€” a default parameter only covers + // `undefined`, not an explicit `null`, so this still needs its own fallback. + const rows = Object.entries(schema || {}) + .map(([key, schemaEntry]) => renderFieldRow(key, schemaEntry, attributes[key])) + .join('') + + return ` +
+
${avatar.html}
+
+
${escapeHtml(displayName)}
+ ${email ? `
${email}
` : ''} +
+
+ +
${rows}
` +} + +// Validates a field value against its schema entry (required + regex), matching +// BaseUserProfile `handleFieldSave`. Returns an error message, or +// `null` when valid. +function validateField(schemaEntry, label, value) { + if (!schemaEntry) return null + + if (schemaEntry.required && !value) { + return `${label} is required.` + } + + if (schemaEntry.regex && value) { + try { + if (!new RegExp(schemaEntry.regex).test(value)) { + return `${label} is not in a valid format.` + } + } catch { + // Invalid regex on the schema itself β€” nothing to enforce client-side. + } + } + + return null +} + +// Wires up inline per-field editing for the rows rendered by `renderProfileFields`. Safe to +// call once after that markup is in the DOM. +export function attachProfileFieldHandlers({ user, auth, schema, profile, onSaved }) { + // `schema` may be `null` (the meta fetch failed) β€” a default parameter only covers + // `undefined`, not an explicit `null`, so this still needs its own fallback. + const resolvedSchema = schema || {} + const errorEl = document.getElementById('profile-error') + const fieldList = document.getElementById('profile-field-list') + const baseUrl = import.meta.env.VITE_THUNDERID_BASE_URL + const fetcher = createFetcher(auth) + + // Tracks the latest known attributes so successive per-field edits merge against + // up-to-date values without refetching the whole profile on every save. + let currentAttributes = { ...(profile?.attributes || {}) } + + const refreshHeader = () => { + const mergedUser = { ...user, ...currentAttributes } + const displayName = getDisplayName(mergedUser, currentAttributes) + + const avatarEl = document.querySelector('.profile-summary-avatar') + if (avatarEl) { + const avatar = renderAvatarInner(mergedUser, displayName) + avatarEl.className = `profile-summary-avatar ${avatar.className}` + avatarEl.setAttribute('style', avatar.style || '') + avatarEl.innerHTML = avatar.html + } + + const nameEl = document.querySelector('.profile-summary-name') + if (nameEl) nameEl.textContent = displayName + } + + const showError = (message) => { + if (!errorEl) return + errorEl.hidden = false + errorEl.textContent = message + } + const clearError = () => { + if (!errorEl) return + errorEl.hidden = true + errorEl.textContent = '' + } + + const startEdit = (row, key, schemaEntry) => { + const display = row.querySelector('.profile-field-row-display') + if (!display) return + const currentValue = currentAttributes[key] ?? '' + + display.innerHTML = ` + +
+ + +
` + + const input = display.querySelector('input') + input?.focus() + + const cancel = () => { + row.outerHTML = renderFieldRow(key, schemaEntry, currentAttributes[key]) + } + + const save = async () => { + const value = input?.value.trim() || '' + const label = fieldLabel(key, schemaEntry) + const fieldError = validateField(schemaEntry, label, value) + if (fieldError) { + showError(fieldError) + return + } + clearError() + + const saveBtn = display.querySelector('[data-action="save"]') + if (saveBtn) saveBtn.disabled = true + + try { + const mergedAttributes = deepMerge(currentAttributes, { [key]: value }) + const updatedUser = await updateMeProfile({ baseUrl, payload: mergedAttributes, fetcher }) + + currentAttributes = { ...currentAttributes, [key]: updatedUser?.[key] ?? value } + row.outerHTML = renderFieldRow(key, schemaEntry, currentAttributes[key]) + refreshHeader() + + onSaved?.({ ...user, ...currentAttributes }) + } catch (err) { + showError(err?.message || 'Failed to update profile. Please try again.') + if (saveBtn) saveBtn.disabled = false + } + } + + display.addEventListener('click', (e) => { + const action = e.target.closest('[data-action]')?.dataset.action + if (action === 'save') save() + if (action === 'cancel') cancel() + }) + + input?.addEventListener('keydown', (e) => { + if (e.key === 'Enter') save() + if (e.key === 'Escape') cancel() + }) + } + + fieldList?.addEventListener('click', (e) => { + const editBtn = e.target.closest('[data-action="edit"]') + if (!editBtn) return + const row = editBtn.closest('.profile-field-row') + const key = row?.dataset.field + if (!row || !key) return + startEdit(row, key, resolvedSchema[key]) + }) +} diff --git a/quickstarts/browser/src/main.js b/quickstarts/browser/src/main.js new file mode 100644 index 0000000..06eb46a --- /dev/null +++ b/quickstarts/browser/src/main.js @@ -0,0 +1,101 @@ +import './style.css' +import auth, { missingEnvVars } from './auth.js' +import { renderSignedOutNav, renderSignedInNav, attachNavHandlers, attachSignedOutNavHandlers } from './components/nav.js' +import { mountAccountPage } from './pages/account.js' +import { renderSignedOut, renderHome, renderConfigNeeded, startCountdown, attachSignedOutHandlers, attachConfigNeededHandlers } from './pages/home.js' +import { renderTokenDebug, attachTokenHandlers } from './pages/token.js' + +let isDark = false +let currentPage = 'home' +let user = null +let idToken = null +let rawToken = null +let timer = null + +function navigateTo(page) { + if (timer) { clearInterval(timer); timer = null } + currentPage = page + renderSignedInPage() +} + +function renderSignedInPage() { + const app = document.getElementById('app') + if (!app) return + + if (currentPage === 'account') { + app.innerHTML = renderSignedInNav({ user, isDark, currentPage }) + '
' + attachNavHandlers({ + isDark: () => isDark, + setIsDark: (v) => { isDark = v }, + navigateTo, + auth, + }) + mountAccountPage(document.getElementById('account-root'), { + user, + auth, + onUserUpdated: (updatedUser) => { + user = updatedUser + }, + }) + return + } + + let content + if (currentPage === 'token') { + content = renderTokenDebug({ rawToken }) + } else { + content = renderHome({ user, idToken }) + } + + app.innerHTML = renderSignedInNav({ user, isDark, currentPage }) + content + + attachNavHandlers({ + isDark: () => isDark, + setIsDark: (v) => { isDark = v }, + navigateTo, + auth, + }) + + if (currentPage === 'token') { + attachTokenHandlers({ rawToken }) + } else if (currentPage === 'home') { + timer = startCountdown({ idToken }) + } +} + +async function renderApp() { + const app = document.getElementById('app') + if (!app) return + + if (missingEnvVars.length > 0) { + app.innerHTML = renderSignedOutNav({ isDark, hideSignIn: true }) + renderConfigNeeded(missingEnvVars) + attachSignedOutNavHandlers({ auth }) + attachConfigNeededHandlers() + return + } + + if (timer) { clearInterval(timer); timer = null } + + await auth.signIn({ callOnlyOnRedirect: true }) + + const signedIn = await auth.isSignedIn() + + if (signedIn) { + user = await auth.getUser() + try { idToken = await auth.getDecodedIdToken() } catch { idToken = null } + try { rawToken = await auth.getAccessToken() } catch { rawToken = null } + currentPage = 'home' + renderSignedInPage() + } else { + user = null + idToken = null + rawToken = null + currentPage = 'home' + + app.innerHTML = renderSignedOutNav({ isDark }) + renderSignedOut() + attachSignedOutNavHandlers({ auth }) + attachSignedOutHandlers({ auth }) + } +} + +renderApp() diff --git a/quickstarts/browser/src/pages/account.js b/quickstarts/browser/src/pages/account.js new file mode 100644 index 0000000..3e2fcb3 --- /dev/null +++ b/quickstarts/browser/src/pages/account.js @@ -0,0 +1,307 @@ +import { + CredentialConstants, + evaluateChangePasswordForm, + mapCredentialUpdateError, + resolveChangeCredentialPolicy, + supportsCredential, + updateMeCredentials, +} from '@thunderid/browser' +import { createFetcher, escapeHtml, fetchProfileFormContext, renderProfileFields, attachProfileFieldHandlers } from '../components/profileFields.js' + +const ICON_HOME = `` +const ICON_PERSON = `` +const ICON_SHIELD = `` +const ICON_EYE = `` +const ICON_CHECK = `` +const ICON_X = `` +const ICON_CHEVRON = `` + +const TABS = [ + { id: 'home', label: 'Home', icon: ICON_HOME }, + { id: 'personal', label: 'Personal info', icon: ICON_PERSON }, + { id: 'security', label: 'Security', icon: ICON_SHIELD }, +] + +const TILES = [ + { id: 'personal', icon: ICON_PERSON, tone: 'blue', title: 'Personal info', description: 'Name, email, phone, and profile photo' }, + { id: 'security', icon: ICON_SHIELD, tone: 'green', title: 'Security', description: 'Password and other credentials' }, +] + +// Mirrors the React/Vue quickstarts' Security tab: one credential per row. +const CREDENTIALS = [ + { + attribute: CredentialConstants.PASSWORD, + title: 'Password', + description: 'Used to sign in to your account.', + cta: 'Change password', + submitLabel: 'Update Password', + }, +] + +function renderHomeTab(user) { + const givenName = user?.given_name || user?.givenName || user?.name || user?.username || 'there' + + const tiles = TILES.map( + (tile) => ` + `, + ).join('') + + return ` + + + ` +} + +function renderCredentialCard(credential, { schema, openAttribute }) { + const isOpen = openAttribute === credential.attribute + + return ` + ` +} + +// The form fields, always rendered so the "unavailable" state has something to sit behind +// (blurred, disabled) rather than showing nothing at all β€” matches +// `BaseChangeCredential`'s unavailable rendering in the React/Vue SDKs. +function renderCredentialFields(credential) { + const nameLower = credential.title.toLowerCase() + const newFieldId = `cred-${credential.attribute}-new` + const confirmFieldId = `cred-${credential.attribute}-confirm` + + return ` +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ + +
+ +
` +} + +function renderCredentialForm(credential, schema) { + const unavailable = !supportsCredential(schema, credential.attribute) + const fields = renderCredentialFields(credential) + + const body = unavailable + ? ` +
+
${fields}
+
+ ${escapeHtml(credential.title)} changes unavailable +
Please contact your administrator.
+
+
` + : `
${fields}
` + + return `` +} + +function renderSecurityTab({ schema, openAttribute }) { + const cards = CREDENTIALS.map((credential) => renderCredentialCard(credential, { schema, openAttribute })).join('') + + return ` + + + ` +} + +function renderPersonalTab(user, { schema, profile }) { + return ` + + + ` +} + +function renderAccountPage({ tab, user, schema, profile, openAttribute }) { + const nav = TABS.map( + (t) => ` + `, + ).join('') + + let content + if (tab === 'personal') { + content = renderPersonalTab(user, { schema, profile }) + } else if (tab === 'security') { + content = renderSecurityTab({ schema, openAttribute }) + } else { + content = renderHomeTab(user) + } + + return ` + ` +} + +function attachCredentialForm(formEl, { attribute, schema, baseUrl, auth, onDone }) { + const policy = resolveChangeCredentialPolicy(schema, attribute) + const newInput = formEl.querySelector('[data-cred-field="newValue"]') + const confirmInput = formEl.querySelector('[data-cred-field="confirmValue"]') + const reqBox = formEl.querySelector('[data-cred-requirements]') + const reqList = formEl.querySelector('[data-cred-requirements-list]') + const submitBtn = formEl.querySelector('[data-cred-submit]') + const errorBox = formEl.querySelector('[data-cred-error]') + const successBox = formEl.querySelector('[data-cred-success]') + + const evaluate = () => { + const { ruleResults, isValid } = evaluateChangePasswordForm( + { newPassword: newInput.value, confirmPassword: confirmInput.value }, + policy, + ) + + if (ruleResults.length > 0) { + reqBox.hidden = false + reqList.innerHTML = ruleResults + .map( + (result) => + `
  • ${result.passed ? ICON_CHECK : ICON_X} Matches the required format
  • `, + ) + .join('') + } else { + reqBox.hidden = true + } + + submitBtn.disabled = !isValid + } + + newInput.addEventListener('input', evaluate) + confirmInput.addEventListener('input', evaluate) + + formEl.querySelectorAll('[data-cred-toggle-visibility]').forEach((btn) => { + btn.addEventListener('click', () => { + const input = btn.previousElementSibling + input.type = input.type === 'password' ? 'text' : 'password' + }) + }) + + submitBtn.addEventListener('click', async () => { + errorBox.hidden = true + successBox.hidden = true + submitBtn.disabled = true + + try { + const fetcher = createFetcher(auth) + await updateMeCredentials({ baseUrl, payload: { [attribute]: newInput.value }, fetcher }) + + successBox.hidden = false + newInput.value = '' + confirmInput.value = '' + evaluate() + onDone?.() + } catch (err) { + const { message } = mapCredentialUpdateError(err) + errorBox.hidden = false + errorBox.textContent = message || 'An error occurred while updating your credential. Please try again.' + submitBtn.disabled = false + } + }) +} + +// Self-mounting Account page: fetches the schema/profile once, then owns its own tab and +// per-credential open/closed state, re-rendering just its own container on every change +// rather than the whole app shell. +export async function mountAccountPage(container, { user, auth, initialTab = 'home', onUserUpdated }) { + const baseUrl = import.meta.env.VITE_THUNDERID_BASE_URL + + let tab = initialTab + let openAttribute = null + let currentUser = user + + const { schema, profile } = await fetchProfileFormContext({ baseUrl, auth }) + + const render = () => { + container.innerHTML = renderAccountPage({ tab, user: currentUser, schema, profile, openAttribute }) + attachHandlers() + } + + const attachHandlers = () => { + container.querySelectorAll('[data-tab]').forEach((btn) => { + btn.addEventListener('click', () => { + tab = btn.dataset.tab + openAttribute = null + render() + }) + }) + + if (tab === 'personal') { + attachProfileFieldHandlers({ + user: currentUser, + auth, + schema, + profile, + onSaved: (updatedUser) => { + currentUser = updatedUser + onUserUpdated?.(updatedUser) + }, + }) + } + + if (tab === 'security') { + // The same button opens and closes the form: clicking it while its own credential is + // already open collapses it, same as clicking the chevron. + container.querySelectorAll('[data-cred-toggle]').forEach((btn) => { + btn.addEventListener('click', () => { + const attribute = btn.dataset.credToggle + openAttribute = openAttribute === attribute ? null : attribute + render() + }) + }) + + const formEl = container.querySelector('[data-cred-form]') + if (formEl) { + attachCredentialForm(formEl, { + attribute: formEl.dataset.credForm, + schema, + baseUrl, + auth, + onDone: () => { + openAttribute = null + render() + }, + }) + } + } + } + + render() +} diff --git a/quickstarts/browser/src/pages/home.js b/quickstarts/browser/src/pages/home.js new file mode 100644 index 0000000..24be3a5 --- /dev/null +++ b/quickstarts/browser/src/pages/home.js @@ -0,0 +1,321 @@ +const HERO_MARK = ` + + + +` + +const ICON_CLOCK = `` +const ICON_TIMER = `` +const ICON_BUILDING = `` +const ICON_ARROW = `` + +const NEXT_STEPS = [ + { + n: '01', + title: 'Explore use cases', + body: 'See what you can build β€” auth flows for web, mobile, APIs, and agents.', + cta: 'Browse use cases', + href: 'https://thunderid.dev/docs/next/use-cases/overview/', + }, + { + n: '02', + title: 'Learn about flows', + body: 'Understand how authorization code, PKCE, client credentials, and device flows work.', + cta: 'Read guide', + href: 'https://thunderid.dev/docs/next/guides/flows/what-are-flows/', + }, + { + n: '03', + title: 'Style your experience', + body: 'Customize the login UI, branding, and email templates to match your product.', + cta: 'Design guide', + href: 'https://thunderid.dev/docs/next/guides/design/overview/', + }, + { + n: '04', + title: 'Explore SDK APIs', + body: 'Full Browser SDK reference β€” client methods, PKCE configuration, and token management.', + cta: 'SDK reference', + href: 'https://thunderid.dev/docs/next/sdks/browser/overview/', + }, +] + +function escapeHtml(str) { + if (str == null) return '' + return String(str) + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"') + .replace(/'/g, ''') +} + +function getInitials(user) { + const given = user?.given_name || '' + const family = user?.family_name || '' + if (given && family) return (given[0] + family[0]).toUpperCase() + const name = user?.name || user?.username || user?.email || '?' + const parts = name.trim().split(/\s+/) + if (parts.length >= 2) return (parts[0][0] + parts[parts.length - 1][0]).toUpperCase() + return name.slice(0, 2).toUpperCase() +} + +function getAvatarUrl(user) { + return user?.profile || user?.profileUrl || user?.picture || user?.URL || null +} + +function renderAvatar(user, className) { + const avatarUrl = getAvatarUrl(user) + if (avatarUrl) { + return `
    ` + } + return `
    ${escapeHtml(getInitials(user))}
    ` +} + +function greeting(name) { + const h = new Date().getHours() + const tod = h < 12 ? 'morning' : h < 17 ? 'afternoon' : 'evening' + return `Good ${tod}, ${name}.` +} + +function formatTime(unixSeconds) { + if (!unixSeconds) return 'β€”' + return new Date(unixSeconds * 1000).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }) +} + +export function formatCountdown(secsLeft) { + if (secsLeft <= 0) return { text: 'Expired', color: '#d95757' } + if (secsLeft < 300) { + const m = Math.floor(secsLeft / 60), s = secsLeft % 60 + return { text: `${m}m ${s}s`, color: '#e88b3a' } + } + if (secsLeft < 3600) { + const m = Math.floor(secsLeft / 60), s = secsLeft % 60 + return { text: `${m}m ${s}s`, color: '#2fbd6b' } + } + const hr = Math.floor(secsLeft / 3600), m = Math.floor((secsLeft % 3600) / 60) + return { text: `${hr}h ${m}m`, color: '#2fbd6b' } +} + +export function renderSignedOut() { + return ` +
    +
    +
    ${HERO_MARK}
    +
    + + Open source + +
    +

    Auth for Modern Apps and Agents

    +

    + ThunderID gives you OAuth 2.0, PKCE, MFA, and JWT out of the box. + Clone the Quickstart and ship auth before lunch. +

    +
    + +
    +
    +
    +
    + OAuth 2.0 + Authorization standard +
    +
    + < 5 min + Integration time +
    +
    + Apache 2.0 + License +
    +
    +
    +
    ` +} + +export function attachSignedOutHandlers({ auth }) { + document.getElementById('hero-sign-in-btn')?.addEventListener('click', () => auth.signIn()) +} + +export function renderConfigNeeded(missing) { + const origin = typeof window !== 'undefined' ? window.location.origin : '' + + return ` +
    +
    +
    ${HERO_MARK}
    +
    + + Setup required + +
    +

    Configuration needed

    +

    + This quickstart can't reach ThunderID yet. Follow the steps below, + then restart the dev server. +

    + +
    +
    Step 1 · Set environment variables
    +
      + ${missing.map(key => `
    • ${escapeHtml(key)}
    • `).join('')} +
    +

    + Copy .env.example to .env, fill in the + values from your ThunderID application, then run npm run dev again. +

    +
    + +
    +
    Step 2 · Allow this origin for CORS
    +
    +

    + Sign-in requests from this origin will be blocked by the browser + until it's added to your ThunderID deployment's allowed CORS + origins. In the ThunderID Console, go to + Settings → CORS → Allowed origins and + add it. +

    +
    + ${escapeHtml(origin)} + +
    +
    +
    + +
    +
    Step 3 · Register redirect URIs
    +
    +

    + This origin also doubles as this app's Authorized redirect URI + and Post-Logout Redirect URI. In the ThunderID + Console, open this application and go to + Advanced Settings → OAuth2 Configuration, + then add it to both fields below. +

    +
    +
    +
    Authorized redirect URI
    +
    + ${escapeHtml(origin)} + +
    +
    +
    +
    Post-Logout Redirect URI
    +
    + ${escapeHtml(origin)} + +
    +
    +
    +
    +
    + +

    + Need more info? Take a look at the + Browser quickstart guide. +

    +
    +
    ` +} + +export function attachConfigNeededHandlers() { + if (!navigator.clipboard) return + document.querySelectorAll('.config-copy-btn').forEach((btn) => { + btn.addEventListener('click', () => { + navigator.clipboard.writeText(btn.getAttribute('data-copy') || '').then(() => { + const original = btn.textContent + btn.textContent = 'Copied!' + setTimeout(() => { btn.textContent = original }, 1500) + }) + }) + }) +} + +export function renderHome({ user, idToken }) { + const now = Math.floor(Date.now() / 1000) + const givenName = user?.given_name || user?.name || user?.username || 'there' + const email = user?.email || '' + + const authTime = idToken?.auth_time + const exp = idToken?.exp + const secsLeft = exp ? Math.max(0, exp - now) : null + const countdown = secsLeft !== null ? formatCountdown(secsLeft) : null + const orgName = escapeHtml(idToken?.org_name || idToken?.org_handle || 'Default') + + return ` +
    +
    + ${renderAvatar(user, 'home-avatar-initials')} +
    +

    ${escapeHtml(greeting(givenName))}

    +
    + ${email ? `${escapeHtml(email)}` : ''} + + + Session active + +
    +
    +
    + +
    +
    +
    ${ICON_CLOCK}
    +
    +
    ${formatTime(authTime)}
    +
    Signed in at
    +
    +
    +
    +
    ${ICON_TIMER}
    +
    +
    ${countdown ? countdown.text : 'β€”'}
    +
    Session expires in
    +
    +
    +
    +
    ${ICON_BUILDING}
    +
    +
    ${orgName}
    +
    Organisation
    +
    +
    +
    + +
    What's next
    + +
    ` +} + +export function startCountdown({ idToken }) { + const timer = setInterval(() => { + const el = document.getElementById('countdown-value') + if (!el) { clearInterval(timer); return } + const now = Math.floor(Date.now() / 1000) + const exp = idToken?.exp + const secsLeft = exp ? Math.max(0, exp - now) : null + if (secsLeft !== null) { + const cd = formatCountdown(secsLeft) + el.textContent = cd.text + el.style.color = cd.color + } + }, 1000) + return timer +} diff --git a/quickstarts/browser/src/pages/token.js b/quickstarts/browser/src/pages/token.js new file mode 100644 index 0000000..9c65551 --- /dev/null +++ b/quickstarts/browser/src/pages/token.js @@ -0,0 +1,118 @@ +const ICON_COPY = `` + +function escapeHtml(str) { + if (str == null) return '' + return String(str) + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"') + .replace(/'/g, ''') +} + +function decodeJwtPart(part) { + try { + const base64 = part.replace(/-/g, '+').replace(/_/g, '/') + const padded = base64.padEnd(base64.length + (4 - (base64.length % 4)) % 4, '=') + return JSON.parse(atob(padded)) + } catch { + return null + } +} + +export function renderTokenDebug({ rawToken }) { + const now = Math.floor(Date.now() / 1000) + const parts = rawToken ? rawToken.split('.') : [] + const jwtHeader = parts[0] ? decodeJwtPart(parts[0]) : null + const jwtPayload = parts[1] ? decodeJwtPart(parts[1]) : null + + const exp = jwtPayload?.exp + const expiresIn = exp ? exp - now : null + const expired = expiresIn !== null && expiresIn <= 0 + const minsLeft = expiresIn !== null ? Math.abs(Math.floor(expiresIn / 60)) : null + + const issuer = jwtPayload?.iss + const audience = Array.isArray(jwtPayload?.aud) ? jwtPayload.aud.join(', ') : jwtPayload?.aud + const scopes = jwtPayload?.scope + + return ` +
    +
    +
    +

    Token debug

    +

    Inspect your access token and decoded claims.

    +
    + ${expiresIn !== null ? ` +
    + + ${expired ? 'Expired' : `Valid Β· expires in ${minsLeft} min`} +
    ` : ''} +
    + + ${rawToken ? ` +
    +
    + + +
    + + ${escapeHtml(parts[0] || '')} + . + ${escapeHtml(parts[1] || '')} + . + ${escapeHtml(parts[2] || '')} + +
    ` : ` +
    +
    + +
    + Loading… +
    `} + +
    +
    +
    JWT Header
    +
    ${jwtHeader ? escapeHtml(JSON.stringify(jwtHeader, null, 2)) : '…'}
    +
    +
    +
    JWT Payload
    +
    ${jwtPayload ? escapeHtml(JSON.stringify(jwtPayload, null, 2)) : '…'}
    +
    +
    + + ${issuer || audience || scopes ? ` +
    + ${issuer ? ` +
    +
    Issuer
    +
    ${escapeHtml(issuer)}
    +
    ` : ''} + ${audience ? ` +
    +
    Audience
    +
    ${escapeHtml(audience)}
    +
    ` : ''} + ${scopes ? ` +
    +
    Scopes
    +
    ${escapeHtml(scopes)}
    +
    ` : ''} +
    ` : ''} +
    ` +} + +export function attachTokenHandlers({ rawToken }) { + document.getElementById('copy-btn')?.addEventListener('click', async () => { + if (!rawToken || !navigator.clipboard) return + await navigator.clipboard.writeText(rawToken) + const btn = document.getElementById('copy-btn') + if (btn) { + btn.innerHTML = `${ICON_COPY} Copied!` + setTimeout(() => { + const b = document.getElementById('copy-btn') + if (b) b.innerHTML = `${ICON_COPY} Copy` + }, 1500) + } + }) +} diff --git a/quickstarts/browser/src/style.css b/quickstarts/browser/src/style.css new file mode 100644 index 0000000..7b5ba13 --- /dev/null +++ b/quickstarts/browser/src/style.css @@ -0,0 +1,1595 @@ +*, *::before, *::after { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +:root { + --bg: #F7F9FC; + --card: #ffffff; + --border: #DDE3EC; + --text: #05213F; + --muted: #5A7085; + --blue: #3688FF; + --blue-hover: #2270e8; + --blue-subtle: rgba(54, 136, 255, 0.08); + --secondary: #424242; + --shadow-sm: 0 1px 3px rgba(5, 33, 63, 0.08); + --shadow-md: 0 4px 16px rgba(5, 33, 63, 0.10); + --radius: 10px; + --radius-sm: 6px; +} + +.dark { + --bg: #080f1c; + --card: #0f1a2d; + --border: rgba(255, 255, 255, 0.09); + --text: #E0EAFF; + --muted: rgba(224, 234, 255, 0.48); + --blue-subtle: rgba(54, 136, 255, 0.14); + --secondary: #8b8b8b; + --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.3); + --shadow-md: 0 4px 16px rgba(0, 0, 0, 0.4); +} + +html { + color-scheme: light; +} + +html.dark { + color-scheme: dark; +} + +body { + font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; + background: var(--bg); + color: var(--text); + min-height: 100vh; + line-height: 1.5; + transition: background 0.2s ease, color 0.2s ease; +} + +/* Nav */ +.nav { + display: flex; + align-items: center; + gap: 12px; + padding: 0 28px; + height: 52px; + border-bottom: 1px solid var(--border); + background: rgba(247, 249, 252, 0.92); + backdrop-filter: blur(12px); + -webkit-backdrop-filter: blur(12px); + position: sticky; + top: 0; + z-index: 100; +} + +.dark .nav { + background: rgba(8, 15, 28, 0.92); +} + +.nav-logo { + display: flex; + align-items: center; + gap: 10px; + text-decoration: none; + color: inherit; + cursor: pointer; + flex: 1; +} + +.wordmark { + display: flex; + flex-direction: column; + gap: 1px; +} + +.wordmark-name { + font-size: 14px; + font-weight: 700; + letter-spacing: -0.03em; + color: var(--text); + line-height: 1; +} + +.wordmark-sub { + font-size: 8.5px; + font-weight: 700; + letter-spacing: 0.1em; + text-transform: uppercase; + color: var(--blue); + line-height: 1; +} + +.nav-actions { + display: flex; + align-items: center; + gap: 8px; +} + +/* Hero */ +.hero { + display: flex; + flex-direction: column; + align-items: center; + text-align: center; + padding: 96px 32px 80px; + max-width: 560px; + margin: 0 auto; +} + +.hero-mark { + margin-bottom: 32px; + opacity: 0.9; +} + +.hero-badge { + display: inline-flex; + align-items: center; + gap: 8px; + font-size: 11px; + font-weight: 700; + letter-spacing: 0.1em; + text-transform: uppercase; + color: var(--muted); + margin-bottom: 28px; +} + +.hero-badge-line { + display: block; + width: 24px; + height: 1px; + background: var(--border); + flex-shrink: 0; +} + +.hero-title { + font-size: 42px; + font-weight: 700; + letter-spacing: -0.05em; + line-height: 1.1; + color: var(--text); + margin-bottom: 18px; +} + +.hero-subtitle { + font-size: 16px; + color: var(--muted); + line-height: 1.8; + letter-spacing: -0.01em; + max-width: 420px; + margin-bottom: 36px; +} + +.hero-ctas { + display: flex; + gap: 10px; + flex-wrap: wrap; + justify-content: center; + margin-bottom: 52px; +} + +.hero-divider { + width: 100%; + border: none; + border-top: 1px solid var(--border); + margin: 4px 0; +} + +.hero-stats { + width: 100%; + max-width: 480px; + display: grid; + grid-template-columns: repeat(3, 1fr); +} + +.stat { + display: flex; + flex-direction: column; + align-items: center; + gap: 4px; + padding: 16px 8px; +} + +.stat:not(:last-child) { + border-right: 1px solid var(--border); +} + +.stat-value { + font-size: 15px; + font-weight: 700; + color: var(--text); +} + +.stat-label { + font-size: 12px; + color: var(--muted); +} + +/* Config notice */ +.config-badge { + color: #e88b3a; +} + +.config-list { + width: 100%; + max-width: 420px; + text-align: left; + list-style: none; + background: var(--card); + border: 1px solid var(--border); + border-radius: var(--radius-sm); + padding: 0 16px; + margin: 4px 0 28px; +} + +.config-list-item { + padding: 10px 0; + font-family: ui-monospace, SFMono-Regular, Menlo, monospace; + font-size: 13px; + color: var(--text); +} + +.config-list-item:not(:last-child) { + border-bottom: 1px solid var(--border); +} + +.config-hint { + font-size: 14px; + color: var(--muted); + line-height: 1.7; + max-width: 420px; +} + +.config-hint code { + background: var(--blue-subtle); + border-radius: 4px; + padding: 2px 6px; + font-family: ui-monospace, SFMono-Regular, Menlo, monospace; + font-size: 13px; +} + +.config-step { + width: 100%; + max-width: 420px; + margin: 0 auto 28px; +} + +.config-step-label { + font-size: 11px; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.09em; + color: var(--muted); + margin-bottom: 10px; + text-align: left; +} + +.config-step .config-list, +.config-step .config-hint { + margin-left: 0; + margin-right: 0; +} + +.config-box { + text-align: left; + background: var(--card); + border: 1px solid var(--border); + border-radius: var(--radius); + padding: 16px; +} + +.config-box-body { + font-size: 13px; + color: var(--muted); + line-height: 1.6; + margin-bottom: 14px; +} + +.config-value-row { + display: flex; + align-items: center; + gap: 8px; +} + +.config-value { + flex: 1; + min-width: 0; + overflow-x: auto; + white-space: nowrap; + font-family: ui-monospace, SFMono-Regular, Menlo, monospace; + font-size: 12px; + color: var(--text); + background: var(--blue-subtle); + border-radius: 4px; + padding: 8px 10px; +} + +.config-value-label { + font-size: 11px; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.06em; + color: var(--muted); + margin-bottom: 4px; +} + +.config-value-group { + display: flex; + flex-direction: column; + gap: 12px; +} + +.config-docs-note { + font-size: 13px; + color: var(--muted); + max-width: 420px; + margin: 0 auto; +} + +.config-docs-note a { + color: var(--blue); + font-weight: 600; +} + +/* Buttons */ +.btn-primary, +.btn-outline, +.btn-ghost { + display: inline-flex; + align-items: center; + justify-content: center; + height: 46px; + padding: 0 24px; + border-radius: 8px; + font-size: 15px; + font-weight: 600; + cursor: pointer; + transition: opacity 0.15s ease, background 0.15s ease, border-color 0.15s ease; + white-space: nowrap; + text-decoration: none; + font-family: inherit; +} + +.btn-primary { + background: var(--blue); + color: #ffffff; + border: 1.5px solid var(--blue); +} + +.btn-primary:disabled { + opacity: 0.6; + cursor: not-allowed; +} + +.btn-primary:hover:not(:disabled) { + opacity: 0.88; +} + +.btn-outline { + background: transparent; + color: var(--blue); + border: 1.5px solid rgba(54, 136, 255, 0.4); +} + +.btn-outline:hover { + background: var(--blue-subtle); +} + +.btn-ghost { + background: transparent; + color: var(--muted); + border: none; +} + +.btn-ghost:hover { + background: var(--blue-subtle); + color: var(--text); +} + +.nav .btn-primary, +.nav .btn-outline, +.nav .btn-ghost { + height: 36px; + padding: 0 16px; + font-size: 14px; +} + +.dark-toggle { + display: inline-flex; + align-items: center; + justify-content: center; + width: 34px; + height: 34px; + padding: 0; + background: transparent; + border: 1px solid var(--border); + border-radius: 8px; + color: var(--muted); + cursor: pointer; + transition: color 0.15s ease, background 0.15s ease, border-color 0.15s ease; + flex-shrink: 0; +} + +.dark-toggle:hover { + color: var(--text); + background: var(--border); +} + +/* User card */ +.user-card { + position: relative; + background: var(--card); + border: 1px solid var(--border); + border-radius: 16px; + padding: 40px 48px; + box-shadow: var(--shadow-md); + text-align: left; + min-width: 320px; + max-width: 460px; + width: 100%; + margin-top: 24px; +} + +.user-avatar { + width: 64px; + height: 64px; + border-radius: 50%; + background: var(--blue); + color: #ffffff; + display: flex; + align-items: center; + justify-content: center; + font-size: 22px; + font-weight: 700; + letter-spacing: -0.5px; + margin-bottom: 20px; + box-shadow: 0 4px 12px rgba(54, 136, 255, 0.3); +} + +.user-details { + display: flex; + flex-direction: column; + gap: 12px; +} + +.user-name { + font-size: 22px; + font-weight: 700; + letter-spacing: -0.4px; + color: var(--text); + margin-bottom: 4px; +} + +.user-field { + display: flex; + flex-direction: column; + gap: 2px; +} + +.user-field-label { + font-size: 11px; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.07em; + color: var(--muted); +} + +.user-field-value { + font-size: 14px; + color: var(--text); + font-weight: 500; +} + +.user-badge { + display: inline-flex; + align-items: center; + gap: 5px; + margin-top: 24px; + font-size: 12px; + font-weight: 600; + color: #16a34a; + background: #f0fdf4; + border: 1px solid #bbf7d0; + padding: 4px 10px; + border-radius: 100px; +} + +.dark .user-badge { + color: #4ade80; + background: rgba(74, 222, 128, 0.1); + border-color: rgba(74, 222, 128, 0.25); +} + +/* Nav back button */ +.nav-back-btn { + display: inline-flex; + align-items: center; + gap: 4px; + height: 32px; + padding: 0 10px; + border-radius: 6px; + border: none; + background: transparent; + color: var(--muted); + font-size: 13px; + font-family: inherit; + letter-spacing: -0.01em; + cursor: pointer; + transition: background 0.15s ease, color 0.15s ease; +} + +.nav-back-btn:hover { + background: var(--border); + color: var(--text); +} + +/* User dropdown */ +.ud-wrapper { + position: relative; +} + +.ud-trigger { + display: inline-flex; + align-items: center; + gap: 6px; + padding: 4px 8px 4px 4px; + border-radius: 24px; + border: 1px solid var(--border); + background: transparent; + color: var(--text); + font-size: 13px; + font-weight: 600; + cursor: pointer; + font-family: inherit; + transition: background 0.15s ease, border-color 0.15s ease; +} + +.ud-trigger:hover { + background: var(--blue-subtle); + border-color: rgba(54, 136, 255, 0.3); +} + +.ud-avatar { + width: 28px; + height: 28px; + border-radius: 50%; + background: var(--blue); + color: #fff; + display: flex; + align-items: center; + justify-content: center; + font-size: 11px; + font-weight: 700; + flex-shrink: 0; + overflow: hidden; +} + +.ud-avatar img { + width: 100%; + height: 100%; + border-radius: 50%; + object-fit: cover; +} + +.ud-avatar--header { + width: 36px; + height: 36px; + font-size: 13px; +} + +.ud-name { + max-width: 120px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.ud-menu { + display: none; + position: absolute; + right: 0; + top: calc(100% + 6px); + min-width: 200px; + background: var(--card); + border: 1px solid var(--border); + border-radius: 10px; + box-shadow: var(--shadow-md); + overflow: hidden; + z-index: 200; +} + +.ud-menu.ud-menu--open { + display: block; +} + +.ud-header { + display: flex; + align-items: center; + gap: 10px; + padding: 12px 14px; +} + +.ud-header-name { + font-size: 13px; + font-weight: 600; + color: var(--text); +} + +.ud-header-email { + font-size: 12px; + color: var(--muted); + margin-top: 2px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.ud-divider { + height: 1px; + background: var(--border); +} + +.ud-item { + display: flex; + align-items: center; + gap: 8px; + width: 100%; + padding: 10px 14px; + border: none; + background: transparent; + color: var(--text); + font-size: 13px; + font-weight: 500; + cursor: pointer; + text-align: left; + font-family: inherit; + transition: background 0.15s ease; +} + +.ud-item:hover { + background: var(--blue-subtle); +} + +/* Signed-in home page */ +.home-main { + width: 100%; + max-width: 900px; + margin: 0 auto; + padding: 52px 28px 80px; +} + +.home-avatar-initials { + width: 52px; + height: 52px; + border-radius: 50%; + background: var(--blue); + color: #fff; + display: flex; + align-items: center; + justify-content: center; + font-size: 18px; + font-weight: 700; + letter-spacing: -0.3px; + flex-shrink: 0; + box-shadow: 0 4px 12px rgba(54, 136, 255, 0.3); + overflow: hidden; +} + +.home-avatar-initials img { + width: 100%; + height: 100%; + border-radius: 50%; + object-fit: cover; +} + +.home-greeting { + display: flex; + align-items: flex-start; + gap: 16px; + margin-bottom: 36px; +} + +.home-greeting-text { + min-width: 0; +} + +.home-greeting-name { + margin: 0 0 6px; + font-size: 26px; + font-weight: 700; + color: var(--text); + letter-spacing: -0.04em; +} + +.home-greeting-meta { + display: flex; + align-items: center; + gap: 8px; + font-size: 13px; + color: var(--muted); + letter-spacing: -0.01em; + flex-wrap: wrap; +} + +.home-dot { + display: inline-block; + width: 3px; + height: 3px; + border-radius: 50%; + background: var(--border); + flex-shrink: 0; +} + +.home-session-active { + display: inline-flex; + align-items: center; + gap: 5px; + color: #2fbd6b; +} + +.home-session-dot { + display: inline-block; + width: 6px; + height: 6px; + border-radius: 50%; + background: #2fbd6b; + flex-shrink: 0; +} + +.home-stats { + display: flex; + gap: 0; + padding: 20px 0; + border-top: 1px solid var(--border); + border-bottom: 1px solid var(--border); + margin-bottom: 52px; +} + +.home-stat { + flex: 1; + display: flex; + align-items: center; + gap: 10px; + min-width: 0; +} + +.home-stat--bordered { + padding-left: 32px; + border-left: 1px solid var(--border); +} + +.home-stat-icon { + width: 32px; + height: 32px; + border-radius: 8px; + background: rgba(54, 136, 255, 0.1); + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; + color: #3688FF; +} + +.home-stat-value { + font-size: 14px; + font-weight: 700; + color: var(--text); + letter-spacing: -0.02em; +} + +.home-stat-value--mono { + font-family: monospace; + letter-spacing: 0.01em; +} + +.home-stat-label { + font-size: 11px; + font-weight: 600; + color: var(--muted); + text-transform: uppercase; + letter-spacing: 0.07em; + margin-top: 2px; +} + +.home-next-label { + font-size: 11px; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.09em; + color: var(--muted); + margin-bottom: 20px; +} + +.home-next-list { + display: flex; + flex-direction: column; +} + +.home-next-item { + display: grid; + grid-template-columns: 28px 1fr auto; + gap: 16px; + align-items: start; + padding: 20px 0; + border-top: 1px solid var(--border); + text-decoration: none; + color: inherit; + cursor: pointer; + transition: background 0.2s ease; + border-radius: 4px; +} + +.home-next-item:hover .home-next-cta { + opacity: 1; +} + +.home-next-n { + font-size: 11px; + font-weight: 700; + color: #3688FF; + letter-spacing: 0.05em; + padding-top: 2px; + font-variant-numeric: tabular-nums; +} + +.home-next-body { + min-width: 0; +} + +.home-next-title { + font-size: 14px; + font-weight: 600; + color: var(--text); + letter-spacing: -0.02em; + margin-bottom: 4px; +} + +.home-next-desc { + font-size: 13px; + color: var(--muted); + line-height: 1.6; + letter-spacing: -0.01em; +} + +.home-next-cta { + display: inline-flex; + align-items: center; + gap: 4px; + font-size: 13px; + font-weight: 600; + color: #3688FF; + white-space: nowrap; + opacity: 0.7; + transition: opacity 0.2s ease; + padding-top: 2px; +} + +/* Token debug page */ +.token-main { + width: 100%; + max-width: 780px; + margin: 0 auto; + padding: 52px 28px 80px; +} + +.token-header { + display: flex; + align-items: flex-start; + justify-content: space-between; + gap: 16px; + margin-bottom: 36px; + flex-wrap: wrap; +} + +.token-title { + margin: 0 0 5px; + font-size: 22px; + font-weight: 700; + letter-spacing: -0.04em; + color: var(--text); +} + +.token-subtitle { + margin: 0; + font-size: 13px; + color: var(--muted); + letter-spacing: -0.01em; +} + +.token-badge { + display: inline-flex; + align-items: center; + gap: 7px; + padding: 6px 12px; + border-radius: 6px; + font-size: 12px; + font-weight: 700; + letter-spacing: -0.01em; + flex-shrink: 0; +} + +.token-badge--expired { + background: rgba(220, 38, 38, 0.08); + border: 1px solid rgba(220, 38, 38, 0.22); + color: #dc2626; +} + +.token-badge--valid { + background: rgba(47, 189, 107, 0.08); + border: 1px solid rgba(47, 189, 107, 0.22); + color: #2fbd6b; +} + +.token-badge-dot { + display: inline-block; + width: 6px; + height: 6px; + border-radius: 50%; + background: currentColor; + flex-shrink: 0; +} + +.token-raw-section { + margin-bottom: 20px; +} + +.token-raw-label-row { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 8px; +} + +.token-section-label { + font-size: 11px; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.09em; + color: var(--muted); +} + +.token-copy-btn { + display: inline-flex; + align-items: center; + gap: 5px; + padding: 4px 10px; + border-radius: 5px; + background: transparent; + border: 1px solid var(--border); + font-size: 11px; + font-weight: 600; + color: var(--muted); + cursor: pointer; + font-family: inherit; + letter-spacing: -0.01em; + transition: border-color 0.15s ease, color 0.15s ease; +} + +.token-copy-btn:hover { + border-color: #3688FF; + color: #3688FF; +} + +.token-raw { + display: block; + font-size: 11px; + font-family: monospace; + word-break: break-all; + line-height: 1.8; + background: #0b1120; + padding: 14px 16px; + border-radius: 8px; + overflow-x: auto; +} + +.token-raw--loading { + color: rgba(255, 255, 255, 0.3); +} + +.token-part--header { color: #ff7b72; } +.token-part--payload { color: #79c0ff; } +.token-part--signature { color: #3fb950; } +.token-dot { color: rgba(255, 255, 255, 0.2); } + +.token-decoded-grid { + display: grid; + grid-template-columns: 1fr 1.7fr; + gap: 12px; + margin-bottom: 20px; +} + +.token-code-box { + background: #0b1120; + border-radius: 10px; + overflow: hidden; +} + +.token-code-box-header { + padding: 9px 14px; + font-size: 10px; + font-weight: 700; + letter-spacing: 0.09em; + text-transform: uppercase; +} + +.token-code-box-header--header { + color: #ff7b72; + border-bottom: 1px solid rgba(255, 123, 114, 0.15); +} + +.token-code-box-header--payload { + color: #79c0ff; + border-bottom: 1px solid rgba(121, 192, 255, 0.15); +} + +.token-code-pre { + margin: 0; + padding: 14px; + font-size: 11.5px; + line-height: 1.8; + font-family: monospace; + color: #c9d1d9; + overflow-x: auto; + max-height: 220px; +} + +.token-meta-row { + display: flex; + gap: 32px; + padding-top: 20px; + border-top: 1px solid var(--border); + flex-wrap: wrap; +} + +.token-meta-label { + font-size: 10px; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.09em; + color: var(--muted); + margin-bottom: 5px; +} + +.token-meta-value { + font-size: 12px; + font-family: monospace; + color: var(--text); + letter-spacing: -0.01em; +} + +/* Personal info (account page) */ +.profile-summary { + display: flex; + flex-direction: column; + align-items: flex-start; + gap: 12px; + margin-bottom: 12px; +} + +.profile-summary-avatar { + width: 70px; + height: 70px; + border-radius: 50%; + border: 1px solid var(--border); + background: var(--card); + color: var(--text); + display: flex; + align-items: center; + justify-content: center; + font-size: 28px; + font-weight: 600; + overflow: hidden; +} + +.profile-summary-avatar.has-gradient { + color: #fff; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); + border: none; +} + +.profile-summary-avatar img { + width: 100%; + height: 100%; + border-radius: 50%; + object-fit: cover; +} + +.profile-error { + font-size: 12px; + color: #dc2626; + background: rgba(220, 38, 38, 0.08); + border-radius: var(--radius-sm); + padding: 8px 10px; + margin-bottom: 14px; +} + +.profile-summary-name { + font-size: 24px; + font-weight: 600; + color: var(--text); +} + +.profile-summary-subtitle { + font-size: 14px; + color: var(--muted); +} + +.profile-field-list { + display: flex; + flex-direction: column; +} + +.profile-field-row { + display: flex; + align-items: center; + padding: 12px 0; + border-bottom: 1px solid var(--border); +} + +.profile-field-row-label { + font-size: 14px; + font-weight: 500; + color: var(--muted); + width: 120px; + flex-shrink: 0; + line-height: 28px; +} + +.profile-field-row-display { + flex: 1; + display: flex; + align-items: center; + gap: 8px; + min-width: 0; +} + +.profile-field-row-value { + flex: 1; + font-size: 14px; + color: var(--text); + line-height: 28px; + word-break: break-word; + text-align: left; +} + +.profile-field-row-value.placeholder { + font-style: italic; + opacity: 0.7; +} + +.profile-field-edit-btn { + display: flex; + align-items: center; + justify-content: center; + width: 28px; + height: 28px; + flex-shrink: 0; + border: none; + background: transparent; + color: var(--muted); + border-radius: var(--radius-sm); + cursor: pointer; + opacity: 0.7; +} + +.profile-field-edit-btn:hover { + opacity: 1; + color: var(--blue); +} + +.profile-field-row-input { + flex: 1; + padding: 4px 8px; + font-size: 14px; + font-family: inherit; + color: var(--text); + background: var(--bg); + border: 1px solid var(--border); + border-radius: var(--radius-sm); + min-width: 0; +} + +.profile-field-row-input:focus { + outline: none; + border-color: var(--blue); +} + +.profile-field-row-actions { + display: flex; + gap: 6px; +} + +.profile-field-btn { + display: inline-flex; + align-items: center; + justify-content: center; + height: 28px; + padding: 0 12px; + border: none; + border-radius: var(--radius-sm); + font-size: 12px; + font-weight: 600; + font-family: inherit; + cursor: pointer; + white-space: nowrap; + transition: opacity 0.15s ease; +} + +.profile-field-btn--save { + background: var(--blue); + color: #ffffff; +} + +.profile-field-btn--save:hover:not(:disabled) { + opacity: 0.9; +} + +.profile-field-btn--save:disabled { + opacity: 0.6; + cursor: not-allowed; +} + +.profile-field-btn--cancel { + background: var(--secondary); + color: #ffffff; +} + +.profile-field-btn--cancel:hover { + opacity: 0.9; +} + +/* Account page (Home / Personal info / Security, left-nav layout) */ +.account-page { + display: flex; + align-items: flex-start; + min-height: calc(100vh - 52px); +} + +.account-sidebar { + width: 280px; + flex-shrink: 0; + padding: 40px 24px; + position: sticky; + top: 52px; +} + +.account-sidebar-title { + font-size: 22px; + font-weight: 700; + letter-spacing: -0.03em; + color: var(--text); + margin: 0 0 24px 16px; +} + +.account-nav { + display: flex; + flex-direction: column; + gap: 2px; +} + +.account-nav-item { + display: flex; + align-items: center; + gap: 14px; + width: 100%; + padding: 11px 16px; + border: none; + border-radius: 20px; + background: transparent; + color: var(--muted); + font-size: 14px; + font-weight: 500; + font-family: inherit; + text-align: left; + cursor: pointer; + white-space: nowrap; +} + +.account-nav-item:hover { + background: var(--border); + color: var(--text); +} + +.account-nav-item--active, +.account-nav-item--active:hover { + background: var(--blue-subtle); + color: var(--blue); +} + +.account-content { + flex: 1; + min-width: 0; + display: flex; + justify-content: center; + padding: 40px 32px 80px; + border-left: 1px solid var(--border); +} + +.account-content-inner { + width: 100%; + max-width: 720px; +} + +.account-content-title { + font-size: 26px; + font-weight: 700; + letter-spacing: -0.03em; + color: var(--text); + margin: 0 0 6px; +} + +.account-content-subtitle { + font-size: 14px; + color: var(--muted); + margin: 0 0 32px; +} + +.account-tiles { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); + gap: 16px; + margin-top: 8px; +} + +.account-tile { + text-align: left; + background: var(--card); + border: 1px solid var(--border); + border-radius: var(--radius); + padding: 22px; + cursor: pointer; + font-family: inherit; + display: flex; + flex-direction: column; +} + +.account-tile:hover { + border-color: var(--blue); +} + +.account-tile-icon { + width: 36px; + height: 36px; + border-radius: 10px; + display: flex; + align-items: center; + justify-content: center; + margin-bottom: 14px; +} + +.account-tile-icon--blue { + background: var(--blue-subtle); + color: var(--blue); +} + +.account-tile-icon--green { + background: rgba(16, 185, 129, 0.12); + color: #10b981; +} + +.account-tile-title { + font-size: 15px; + font-weight: 600; + color: var(--text); + margin-bottom: 4px; +} + +.account-tile-desc { + font-size: 12.5px; + color: var(--muted); + line-height: 1.5; +} + +/* Generic bordered content box, matching the Home tiles and Security cards. */ +.account-box { + background: var(--card); + border: 1px solid var(--border); + border-radius: var(--radius); + padding: 24px; +} + +/* Security tab: one credential per row, collapsed into an expandable form */ +.account-security-list { + display: flex; + flex-direction: column; + gap: 16px; +} + +.account-security-card { + background: var(--card); + border: 1px solid var(--border); + border-radius: var(--radius); + padding: 20px 22px; +} + +.account-security-card-row { + display: flex; + align-items: center; + justify-content: space-between; + gap: 16px; +} + +.account-security-card-title { + font-size: 14px; + font-weight: 600; + color: var(--text); + margin-bottom: 2px; +} + +.account-security-card-desc { + font-size: 12.5px; + color: var(--muted); +} + +.account-security-card-cta { + flex-shrink: 0; + display: flex; + align-items: center; + gap: 6px; + padding: 0; + background: none; + border: none; + color: var(--blue); + font-size: 13px; + font-weight: 500; + font-family: inherit; + cursor: pointer; +} + +.account-security-card-cta:hover { + opacity: 0.8; +} + +.account-security-card-chevron { + display: inline-flex; + transition: transform 0.2s; +} + +.account-security-card-chevron--open { + transform: rotate(180deg); +} + +.account-security-card-form { + margin-top: 18px; + padding-top: 18px; + border-top: 1px solid var(--border); +} + +.account-security-card-error { + font-size: 12px; + color: #dc2626; + background: rgba(220, 38, 38, 0.08); + border-radius: var(--radius-sm); + padding: 8px 10px; + margin-bottom: 14px; +} + +.account-security-card-success { + font-size: 12px; + color: #059669; + background: rgba(5, 150, 105, 0.08); + border-radius: var(--radius-sm); + padding: 8px 10px; + margin-bottom: 14px; +} + +/* Change-credential form fields */ +.cred-field { + margin-bottom: 14px; +} + +.cred-label { + display: block; + font-size: 13px; + font-weight: 500; + color: var(--text); + margin-bottom: 6px; +} + +.cred-input-wrap { + position: relative; +} + +.cred-input { + width: 100%; + padding: 9px 38px 9px 12px; + font-size: 14px; + font-family: inherit; + color: var(--text); + background: var(--bg); + border: 1px solid var(--border); + border-radius: var(--radius-sm); +} + +.cred-input:focus { + outline: none; + border-color: var(--blue); +} + +.cred-eye-btn { + position: absolute; + top: 50%; + right: 8px; + transform: translateY(-50%); + display: flex; + align-items: center; + justify-content: center; + width: 24px; + height: 24px; + border: none; + background: transparent; + color: var(--muted); + cursor: pointer; +} + +.cred-requirements { + margin: -6px 0 14px; +} + +.cred-requirements-heading { + font-size: 12px; + color: var(--muted); + margin-bottom: 6px; +} + +.cred-requirements-list { + list-style: none; + display: flex; + flex-direction: column; + gap: 4px; +} + +.cred-requirements-list li { + display: flex; + align-items: center; + gap: 8px; + font-size: 12.5px; + color: var(--muted); +} + +.cred-requirements-list li.passed { + color: #059669; +} + +.cred-requirements-list li svg { + flex-shrink: 0; +} + +.cred-form-actions { + display: flex; + justify-content: flex-end; +} + +.cred-unavailable { + position: relative; +} + +.cred-unavailable-content { + filter: blur(3px); + opacity: 0.55; + pointer-events: none; + user-select: none; +} + +.cred-unavailable-overlay { + position: absolute; + inset: 0; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + text-align: center; + gap: 4px; + padding: 16px; + background: rgba(217, 119, 6, 0.08); + border: 1px solid rgba(217, 119, 6, 0.3); + border-radius: var(--radius-sm); + color: #d97706; + font-size: 13px; +} + +.cred-unavailable-overlay strong { + font-size: 13.5px; +} diff --git a/quickstarts/browser/vite.config.js b/quickstarts/browser/vite.config.js new file mode 100644 index 0000000..0515e7a --- /dev/null +++ b/quickstarts/browser/vite.config.js @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' + +export default defineConfig({ + build: { + target: 'esnext', + }, +}) diff --git a/quickstarts/express/.env.example b/quickstarts/express/.env.example new file mode 100644 index 0000000..968abea --- /dev/null +++ b/quickstarts/express/.env.example @@ -0,0 +1,11 @@ +# Base URL of your ThunderID deployment. ex: https://localhost:8090 +THUNDERID_BASE_URL=https://localhost:8090 + +# OAuth2 Client ID for this app. ThunderID Console -> your application -> Overview. +THUNDERID_CLIENT_ID=your-client-id-here +# OAuth2 Client Secret for this app. Shown once when the application is created; +# if lost, regenerate it from the app's Credentials tab (under Edit). Server-only, never expose to the browser. +THUNDERID_CLIENT_SECRET=your-client-secret-here + +# DANGER: Disables ALL TLS verification. Only for local development with self-signed certs. NEVER use in production. +NODE_TLS_REJECT_UNAUTHORIZED=0 diff --git a/quickstarts/express/.gitignore b/quickstarts/express/.gitignore new file mode 100644 index 0000000..37d7e73 --- /dev/null +++ b/quickstarts/express/.gitignore @@ -0,0 +1,2 @@ +node_modules +.env diff --git a/quickstarts/express/.stackblitzrc b/quickstarts/express/.stackblitzrc new file mode 100644 index 0000000..5f0a200 --- /dev/null +++ b/quickstarts/express/.stackblitzrc @@ -0,0 +1,4 @@ +{ + "installDependencies": false, + "startCommand": "npm run prepare-dev && npm install && npm run dev" +} diff --git a/quickstarts/express/README.md b/quickstarts/express/README.md new file mode 100644 index 0000000..44da87a --- /dev/null +++ b/quickstarts/express/README.md @@ -0,0 +1,99 @@ +# ThunderID Express Quickstart + +Open in StackBlitz + +A minimal Express.js **API** protected by ThunderID access tokens, using the ThunderID JavaScript +SDK (`@thunderid/express`). Unlike the browser-focused quickstarts, this sample doesn't have a +sign-in button β€” it's a resource server. Open [http://localhost:3000](http://localhost:3000) and +you'll get API documentation (endpoints, curl examples, a downloadable Postman collection) instead +of a login screen. + +Protected routes validate the `Authorization: Bearer ` header against ThunderID's OIDC +`/oauth2/userinfo` endpoint β€” the same check any OAuth 2.0 resource server performs. A `/login` β†’ +`/token` helper is included purely so you have a fast way to mint a demo access token to test with. + +## Prerequisites + +- Node.js 18+ +- A running ThunderID instance (default: `https://localhost:8090`) +- A configured application with `http://localhost:3000/login` added as an authorized redirect URI + +## Getting started + +1. Copy the environment file and fill in your values: + ```sh + cp .env.example .env + ``` + +2. Edit `.env` with your application's credentials: + ``` + THUNDERID_CLIENT_ID= + THUNDERID_CLIENT_SECRET= + THUNDERID_BASE_URL=https://localhost:8090 + ``` + +3. Install dependencies and start the server: + ```sh + pnpm install + pnpm start + ``` + +Open [http://localhost:3000](http://localhost:3000) for the API documentation page. + +## Trying the API + +- `GET /api/public` β€” no auth required. +- `GET /api/protected`, `GET /api/me`, and `PATCH /api/me/credentials` β€” require `Authorization: Bearer `. + +To get a token to test with, open [http://localhost:3000/login](http://localhost:3000/login), +sign in once, and your access token (decoded claims included) will be shown at +[http://localhost:3000/token](http://localhost:3000/token). Then: + +```sh +curl http://localhost:3000/api/me \ + -H "Authorization: Bearer $ACCESS_TOKEN" +``` + +Prefer a GUI? Download the Postman collection from the API docs page (or directly at +`/postman-collection.json`), paste your token into the `accessToken` collection variable, and run +the requests from there. + +## Back-channel logout + +The demo session behind `/login` and `/token` can be ended by ThunderID itself. When the user's +ThunderID session ends somewhere else, for example by signing out of another application, +ThunderID posts a logout token to this app, and the SDK ends the local session. The route is one +line in `index.mjs`: + +```js +app.post('/backchannel-logout', handleBackchannelLogout()); +``` + +To try it: + +1. In the ThunderID Console, open this application, go to **Advanced Settings β†’ OAuth2 + Configuration**, and set **Back-Channel Logout URI** to + `http://localhost:3000/backchannel-logout`. +2. ThunderID refuses localhost and private network addresses by default. For local testing only, + turn that off in the server's `deployment.yaml` and restart it: + ```yaml + oauth: + logout: + backchannel: + reject_private_addresses: false + ``` +3. Sign in at [http://localhost:3000/login](http://localhost:3000/login), then sign in to a second + application in the same browser, so both share one ThunderID session. +4. Sign out of the second application. Open [http://localhost:3000/token](http://localhost:3000/token): + you are sent back to sign-in, because this app's session was ended too. + +The Bearer-token API routes (`/api/*`) are not affected: they check each access token with +ThunderID on every request and hold no session. + +The SDK keeps sessions in memory by default. If you run more than one instance of an app, give the +SDK a shared store, since ThunderID's request reaches only one of them. + +## Learn more + +- [ThunderID Docs](https://thunderid.dev/docs) +- [`@thunderid/express` SDK reference](https://thunderid.dev/docs/sdks/javascript/express) diff --git a/quickstarts/express/index.mjs b/quickstarts/express/index.mjs new file mode 100644 index 0000000..2b2c1b3 --- /dev/null +++ b/quickstarts/express/index.mjs @@ -0,0 +1,406 @@ +import path from 'node:path'; +import {fileURLToPath} from 'node:url'; +import express from 'express'; +import cookieParser from 'cookie-parser'; +import { + thunderID, + handleBackchannelLogout, + handleSignIn, + handleSignOut, + protect, + updateMeCredentials, +} from '@thunderid/express'; +import {verifyBearerToken} from './lib/auth.mjs'; +import {layout, esc, escAttr, COPY_ICON} from './lib/layout.mjs'; +import {thunderMark} from './lib/thunderMark.mjs'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); + +const app = express(); +const port = 3000; +const baseUrl = process.env.THUNDERID_BASE_URL || 'https://localhost:8090'; + +const REQUIRED_ENV_VARS = ['THUNDERID_CLIENT_ID', 'THUNDERID_CLIENT_SECRET']; +const missingEnvVars = REQUIRED_ENV_VARS.filter((key) => !process.env[key]); + +app.use(cookieParser()); +app.use(express.json()); +app.use(express.static(path.join(__dirname, 'public'))); + +// The thunderID() middleware is only used here to power the `/login` and +// `/token` convenience routes, which exist so you have a fast way to obtain +// a real access token to try against the API below. The API routes +// themselves (`/api/*`) don't rely on cookies or sessions at all β€” see +// lib/auth.mjs. +if (missingEnvVars.length === 0) { + app.use( + thunderID({ + baseUrl, + clientId: process.env.THUNDERID_CLIENT_ID, + clientSecret: process.env.THUNDERID_CLIENT_SECRET, + // afterSignInUrl doubles as the OAuth2 redirect_uri sent to ThunderID, so + // it must match the redirect URI registered for this app (`/login`, + // where handleSignIn() below actually exchanges the code). Where the + // user lands once sign-in completes is controlled separately via + // onSignIn. + afterSignInUrl: 'http://localhost:3000/login', + // Same story as afterSignInUrl: this is the post_logout_redirect_uri + // sent to ThunderID, so it must match handleSignOut()'s mount path + // (`/logout`) for the `?state=sign_out_success` callback below to fire. + afterSignOutUrl: 'http://localhost:3000/logout', + onSignIn: (res) => res.redirect('/'), + onSignOut: (res) => res.redirect('/'), + }), + ); +} + +const requireBearer = verifyBearerToken(baseUrl); + +async function getSession(req) { + const client = req.thunderIDAuth; + const sessionId = client && req.cookies?.[client.getSessionCookieName()]; + if (!client || !sessionId) return {signedIn: false, accessToken: null, user: null}; + const signedIn = (await client.isSignedIn(sessionId)) ?? false; + if (!signedIn) return {signedIn: false, accessToken: null, user: null}; + const [accessToken, user] = await Promise.all([client.getAccessToken(sessionId), client.getUser(sessionId)]); + return {signedIn, accessToken, user}; +} + +// ── Configuration notice ──────────────────────────────────────────────── + +function renderConfigNeeded() { + return layout({ + title: 'Configuration needed', + body: `
    +
    +
    ${thunderMark(40)}
    +
    Setup required
    +

    Configuration needed

    +

    This quickstart can't reach ThunderID yet. Follow the steps below, then + restart the server.

    + +
    +
    Step 1 · Set environment variables
    +
      + ${missingEnvVars.map((key) => `
    • ${esc(key)}
    • `).join('')} +
    +

    Copy .env.example to .env, fill in the values from + your ThunderID application, then run npm run dev again.

    +
    + +
    +
    Step 2 · Register redirect URIs
    +
    +

    Sign-in and sign-out are handled by this app's server, so no CORS + configuration is needed. In the ThunderID Console, open this application and go to + Advanced Settings → OAuth2 Configuration, then add the exact URIs below.

    +
    +
    +
    Authorized redirect URI
    + http://localhost:3000/login +
    +
    +
    Post-Logout Redirect URI
    + http://localhost:3000/logout +
    +
    +
    Back-Channel Logout URI (optional)
    + http://localhost:3000/backchannel-logout +
    +
    +
    +
    + +

    Need more info? Take a look at the + Express quickstart guide.

    +
    +
    `, + }); +} + +app.use((req, res, next) => { + if (missingEnvVars.length > 0 && req.path !== '/styles.css') { + return res.status(503).send(renderConfigNeeded()); + } + next(); +}); + +// ── API documentation / landing page ──────────────────────────────────── + +function curlBlock(lines) { + return `
    ${esc(lines.join('\n'))}
    `; +} + +/** Joins a multi-line, backslash-continued curl command into one pasteable line. */ +function toSingleLineCommand(lines) { + return lines + .map((line) => line.trim().replace(/\\$/, '').trim()) + .join(' ') + .replace(/\s+/g, ' ') + .trim(); +} + +function copyButton(text) { + return ``; +} + +function endpoint({method, path: routePath, summary, protectedRoute, curl, sample}) { + return ` +
    + + ${esc(method)} + ${esc(routePath)} + ${esc(summary)} + ${protectedRoute ? 'Protected' : 'Public'} + +
    +
    + Request + ${copyButton(toSingleLineCommand(curl))} +
    + ${curlBlock(curl)} +
    Sample response
    +
    ${esc(sample)}
    +
    +
    `; +} + +function bearerLine(accessToken) { + return accessToken ? `Bearer ${accessToken}` : 'Bearer $ACCESS_TOKEN'; +} + +app.get('/', async (req, res) => { + const {signedIn, accessToken, user} = await getSession(req); + + const hero = ` +
    +
    +
    ${thunderMark(40)}
    +
    Open source
    +

    Auth for Modern Apps and Agents

    +

    ThunderID gives you OAuth 2.0, PKCE, MFA, and JWT out of + the box. Clone the Quickstart and ship auth before lunch.

    +
    +
    +
    OAuth 2.0Authorization standard
    +
    < 5 minIntegration time
    +
    Apache 2.0License
    +
    +
    +
    `; + + const authCard = signedIn + ? `
    +

    You're signed in. Here's your access token β€” it's already substituted into the curl + examples below, so you can copy and run them as-is.

    +
    + + ${copyButton(accessToken || '')} +
    + ${esc(accessToken)} +

    See the full decoded token, expiry, and claims at /token.

    +
    ` + : `
    + +
    ${curlBlock(['Authorization: Bearer '])}
    +

    Sign in above for a demo token, or obtain one via OAuth 2.0 in your own app.

    +
    `; + + const body = `${hero} +
    + + ${authCard} + + + ${endpoint({ + method: 'GET', + path: '/api/public', + summary: 'No authentication required.', + protectedRoute: false, + curl: ['curl http://localhost:3000/api/public'], + sample: JSON.stringify({message: 'This endpoint is public. No token needed.'}, null, 2), + })} + ${endpoint({ + method: 'GET', + path: '/api/protected', + summary: 'Returns a sample resource for the authenticated caller.', + protectedRoute: true, + curl: [ + 'curl http://localhost:3000/api/protected \\', + ` -H "Authorization: ${bearerLine(accessToken)}"`, + ], + sample: JSON.stringify( + {message: 'You are authenticated.', subject: ''}, + null, + 2, + ), + })} + ${endpoint({ + method: 'GET', + path: '/api/me', + summary: "Proxies ThunderID's userinfo claims for the token's owner.", + protectedRoute: true, + curl: ['curl http://localhost:3000/api/me \\', ` -H "Authorization: ${bearerLine(accessToken)}"`], + sample: JSON.stringify({sub: '...', email: 'jane@example.com', given_name: 'Jane'}, null, 2), + })} + ${endpoint({ + method: 'PATCH', + path: '/api/me/credentials', + summary: 'Updates credentials (such as password) for the authenticated caller.', + protectedRoute: true, + curl: [ + 'curl -X PATCH http://localhost:3000/api/me/credentials \\', + ` -H "Authorization: ${bearerLine(accessToken)}" \\`, + ' -H "Content-Type: application/json" \\', + ' -d \'{"password": "n3wP@ssword!"}\'', + ], + sample: '204 No Content', + })} + + +
    +

    Prefer a GUI? Download the collection below β€” it ships with requests for every + endpoint above and a {{accessToken}} variable you can fill in from + /token.

    + +
    +
    + `; + res.send(layout({title: 'API docs', signedIn, user, body})); +}); + +// ── Demo token helper (browser-based, cookie session) ─────────────────── + +app.get('/login', handleSignIn()); +app.get('/logout', handleSignOut()); + +// ThunderID posts a logout token here when the session behind the demo cookie ends somewhere +// else, such as a sign-out from another application. The SDK validates the token and ends the +// local session, so `/token` sends you back to sign-in. Register this path as the application's +// Back-Channel Logout URI to use it (see the README). +app.post('/backchannel-logout', handleBackchannelLogout()); + +app.get('/token', protect((res) => res.redirect('/login')), async (req, res) => { + const {accessToken, user} = await getSession(req); + + const parts = accessToken ? accessToken.split('.') : []; + const decodePart = (part) => { + try { + return JSON.parse(Buffer.from(part.replace(/-/g, '+').replace(/_/g, '/'), 'base64').toString('utf8')); + } catch { + return null; + } + }; + const header = parts[0] ? decodePart(parts[0]) : null; + const payload = parts[1] ? decodePart(parts[1]) : null; + const issuer = payload?.iss; + const audience = Array.isArray(payload?.aud) ? payload.aud.join(', ') : payload?.aud; + const scopes = payload?.scope; + + const body = `
    +
    +
    +

    Token debug

    +

    Inspect your access token and decoded claims.

    +
    +
    Valid
    +
    + +
    +
    + + ${copyButton(accessToken || '')} +
    + ${esc(parts[0])}.${esc(parts[1])}.${esc(parts[2])} +
    + +
    +
    +
    JWT Header
    +
    ${esc(JSON.stringify(header, null, 2))}
    +
    +
    +
    JWT Payload
    +
    ${esc(JSON.stringify(payload, null, 2))}
    +
    +
    + + ${ + issuer || audience || scopes + ? `
    + ${issuer ? `
    Issuer
    ${esc(issuer)}
    ` : ''} + ${audience ? `
    Audience
    ${esc(audience)}
    ` : ''} + ${scopes ? `
    Scopes
    ${esc(scopes)}
    ` : ''} +
    ` + : '' + } + + +
    `; + res.send(layout({title: 'Token debug', signedIn: true, showBack: true, user, body})); +}); + +// ── API routes (bearer-token protected, no cookies involved) ──────────── + +app.get('/api/public', (_req, res) => { + res.json({message: 'This endpoint is public. No token needed.'}); +}); + +app.get('/api/protected', requireBearer, (req, res) => { + res.json({ + message: 'You are authenticated.', + subject: req.thunderIDUserInfo.sub ?? req.thunderIDUserInfo.id, + }); +}); + +app.get('/api/me', requireBearer, (req, res) => { + res.json(req.thunderIDUserInfo); +}); + +app.patch('/api/me/credentials', requireBearer, async (req, res) => { + try { + const authHeader = req.headers.authorization; + const token = authHeader?.split(' ')[1]; + await updateMeCredentials({ + baseUrl, + headers: {Authorization: `Bearer ${token}`}, + payload: req.body, + }); + res.status(204).end(); + } catch (error) { + res.status(error?.statusCode || 500).json({ + error: error?.code || 'CREDENTIAL_UPDATE_FAILED', + message: error?.message || 'Failed to update credentials', + }); + } +}); + +// ── Postman collection download ───────────────────────────────────────── + +app.get('/postman-collection.json', (_req, res) => { + res.download(path.join(__dirname, 'postman', 'ThunderID-Express-Quickstart.postman_collection.json')); +}); + +app.listen(port, () => { + console.log(`Server running on http://localhost:${port}`); +}); diff --git a/quickstarts/express/lib/auth.mjs b/quickstarts/express/lib/auth.mjs new file mode 100644 index 0000000..61be3f3 --- /dev/null +++ b/quickstarts/express/lib/auth.mjs @@ -0,0 +1,47 @@ +/** + * Bearer-token protection for the API routes in this quickstart. + * + * This is a resource-server style check: it does not depend on a browser + * session or cookie. Any client (curl, Postman, another service) can call + * a protected endpoint by sending a ThunderID-issued access token in the + * `Authorization: Bearer ` header. The token is validated by asking + * ThunderID's OIDC userinfo endpoint whether it's still valid β€” the same + * endpoint any OAuth 2.0 resource server would call. + */ +export function verifyBearerToken(baseUrl) { + return async function bearerAuth(req, res, next) { + const header = req.headers.authorization || ''; + const [scheme, token] = header.split(' '); + + if (scheme !== 'Bearer' || !token) { + res.set('WWW-Authenticate', 'Bearer realm="thunderid-express-quickstart"'); + return res.status(401).json({ + error: 'unauthorized', + message: 'Missing or malformed Authorization header. Expected: Authorization: Bearer ', + }); + } + + let response; + try { + response = await fetch(`${baseUrl}/oauth2/userinfo`, { + headers: {Authorization: `Bearer ${token}`}, + }); + } catch { + return res.status(502).json({ + error: 'bad_gateway', + message: 'Could not reach ThunderID to validate the access token.', + }); + } + + if (!response.ok) { + res.set('WWW-Authenticate', 'Bearer error="invalid_token"'); + return res.status(401).json({ + error: 'invalid_token', + message: 'The access token is invalid or expired. Get a fresh one at /token.', + }); + } + + req.thunderIDUserInfo = await response.json(); + next(); + }; +} diff --git a/quickstarts/express/lib/expressLogo.mjs b/quickstarts/express/lib/expressLogo.mjs new file mode 100644 index 0000000..733e4bc --- /dev/null +++ b/quickstarts/express/lib/expressLogo.mjs @@ -0,0 +1,10 @@ +export function expressLogo(size = 24) { + return ` + + + + + + +`; +} diff --git a/quickstarts/express/lib/layout.mjs b/quickstarts/express/lib/layout.mjs new file mode 100644 index 0000000..9b4f97d --- /dev/null +++ b/quickstarts/express/lib/layout.mjs @@ -0,0 +1,96 @@ +import {expressLogo} from './expressLogo.mjs'; + +export function esc(value) { + if (value === null || value === undefined) return ''; + return String(value) + .replace(/&/g, '&') + .replace(//g, '>'); +} + +/** Safe for embedding inside a double-quoted HTML attribute. */ +export function escAttr(value) { + return esc(value).replace(/"/g, '"'); +} + +const MOON_ICON = ``; +const SUN_ICON = ``; +const CHEVRON_LEFT_ICON = ``; +const KEY_ICON = ``; +const SIGN_OUT_ICON = ``; +export const COPY_ICON = ``; + +function userMenu(user) { + const displayName = user?.name || [user?.given_name, user?.family_name].filter(Boolean).join(' ') || user?.username || user?.email || 'Account'; + const initial = displayName.charAt(0).toUpperCase(); + + return `
    + + ${esc(initial)} + ${esc(displayName)} + +
    +
    + ${esc(initial)} + ${esc(displayName)} +
    + ${KEY_ICON}Token debug + ${SIGN_OUT_ICON}Sign out +
    +
    `; +} + +function nav({signedIn, showBack, user}) { + const authAction = signedIn ? userMenu(user) : `Sign in`; + + return ``; +} + +/** + * Wraps page content in the shared ThunderID quickstart shell. Uses the same + * nav/hero/button classnames and design tokens as the React and Next.js + * quickstarts so the sample apps read as one family. + */ +export function layout({title, body, signedIn = false, showBack = false, user = null}) { + return ` + + + + +${esc(title)} Β· ThunderID Express Quickstart + + + + +
    + ${nav({signedIn, showBack, user})} + ${body} +
    + + +`; +} diff --git a/quickstarts/express/lib/thunderMark.mjs b/quickstarts/express/lib/thunderMark.mjs new file mode 100644 index 0000000..32c210d --- /dev/null +++ b/quickstarts/express/lib/thunderMark.mjs @@ -0,0 +1,8 @@ +export function thunderMark(height = 40) { + const width = Math.round((height / 257) * 207); + return ` + + + +`; +} diff --git a/quickstarts/express/package.json b/quickstarts/express/package.json new file mode 100644 index 0000000..03b98cc --- /dev/null +++ b/quickstarts/express/package.json @@ -0,0 +1,16 @@ +{ + "name": "@thunderid/express-quickstart", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "prepare-dev": "node scripts/prepare-dev.cjs", + "start": "node --env-file-if-exists=.env index.mjs", + "dev": "node --env-file-if-exists=.env --watch index.mjs" + }, + "dependencies": { + "@thunderid/express": "1.3.0", + "cookie-parser": "^1.4.7", + "express": "^4.21.2" + } +} diff --git a/quickstarts/express/pnpm-lock.yaml b/quickstarts/express/pnpm-lock.yaml new file mode 100644 index 0000000..a8ab4a8 --- /dev/null +++ b/quickstarts/express/pnpm-lock.yaml @@ -0,0 +1,760 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@thunderid/express': + specifier: 1.3.0 + version: 1.3.0(express@4.22.3) + cookie-parser: + specifier: ^1.4.7 + version: 1.4.7 + express: + specifier: ^4.21.2 + version: 4.22.3 + +packages: + + '@thunderid/express@1.3.0': + resolution: {integrity: sha512-CF+XvS3rRr891Vf3PVi+6iS20NfMg4F3j2hcrLe7GSXrnDzknwTT4t5SS7JsH0JNRozcCxoZA0ayFXzfrMh40Q==} + peerDependencies: + express: '>=4.21.2' + + '@thunderid/javascript@1.4.0': + resolution: {integrity: sha512-qHfIFzXOQTN1nhuBT91Tr8bLPvfyEDa7gUQSL7GNcJkcyyKfJ77meIwr91lCme0ySFUnTeKl0Bk+R8iIJiKXBw==} + + '@thunderid/node@1.3.0': + resolution: {integrity: sha512-hAFf4Bv3JZTcatF7Y/iarbd3lYLbIkz6SHzGKG5HOwh/a/Ip8qpu7u4npF6/0cNzrvZzY5g6awIymsIav75Xqw==} + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + + base64url@3.0.1: + resolution: {integrity: sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==} + engines: {node: '>=6.0.0'} + + body-parser@1.20.8: + resolution: {integrity: sha512-JNcyFQ64OiijEkPzUBTCe+hyPXUD/3LEldGQ6iF5LR1w00mx9o7xtDWHXBY2iItjdCFGoilOLNQbH943ut7pHA==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + cookie-parser@1.4.7: + resolution: {integrity: sha512-nGUvgXnotP3BsjiLX2ypbQnWoGUPIIfHQNZkkC668ntrzGWEZVW70HDEB1qnNGMicPje6EttlIgzo51YSwNQGw==} + engines: {node: '>= 0.8.0'} + + cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + + cookie-signature@1.0.7: + resolution: {integrity: sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==} + + cookie@0.7.2: + resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} + engines: {node: '>= 0.6'} + + cross-fetch@4.1.0: + resolution: {integrity: sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + dom-walk@0.1.2: + resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.1.2: + resolution: {integrity: sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==} + engines: {node: '>= 0.4'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + express@4.22.3: + resolution: {integrity: sha512-Bdcs4+3qlpVlx2NRn6fgX2Ue2/gGRaPeawebgclM0ERSCqDpA+owF1fdPwjJUTAJWMTuAaxjDf+hzb0/4eKvvw==} + engines: {node: '>= 0.10.0'} + + fast-sha256@1.3.0: + resolution: {integrity: sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ==} + + finalhandler@1.3.2: + resolution: {integrity: sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==} + engines: {node: '>= 0.8'} + + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-random-values@3.0.0: + resolution: {integrity: sha512-mNznaBdYcpz7UAdnOtDGcLdNwAa79mXl5htEyyZ51YaeAWNf2g4x/2yCVBdNNTbi35wX0Stc2PJXM7G6rcONOA==} + engines: {node: 18 || >=20} + + global@4.4.0: + resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + hasown@2.0.4: + resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} + engines: {node: '>= 0.4'} + + http-errors@2.0.1: + resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} + engines: {node: '>= 0.8'} + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + jose@6.2.3: + resolution: {integrity: sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + + memory-cache@0.2.0: + resolution: {integrity: sha512-OcjA+jzjOYzKmKS6IQVALHLVz+rNTMPoJvCztFaZxwG14wtAW7VRZjwTQu06vKCYOxh4jVnik7ya0SXTB0W+xA==} + + merge-descriptors@1.0.3: + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} + + methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + min-document@2.19.2: + resolution: {integrity: sha512-8S5I8db/uZN8r9HSLFVWPdJCvYOejMcEC82VIzNUc6Zkklf/d1gg2psfE79/vyhWOj4+J8MtwmoOz3TmvaGu5A==} + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + path-to-regexp@0.1.13: + resolution: {integrity: sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + proxy-addr@2.0.8: + resolution: {integrity: sha512-5nnx0yGyVUcY6t9RnWcARWtwT9F1D8O9rt08htPvnd49W1IgZtmLkhu9WfMzQj1cFxjHIO6connUNVW5k7AVyQ==} + engines: {node: '>= 0.10'} + + qs@6.16.1: + resolution: {integrity: sha512-5Px6J7rfHBAGUhNQ3es4YzcOdBBw0SDcVtThJml4RdnKw4tKs2epA0kPZ+K8X+WiHktT93RHVcQ/3ym5aTCgtg==} + engines: {node: '>=0.6'} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@2.5.3: + resolution: {integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==} + engines: {node: '>= 0.8'} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + secure-random-bytes@5.0.1: + resolution: {integrity: sha512-48nvkahmdyoRbHW/x1HTGIk+i2/84MHFBB+rZ50cg1y/p2RjKG+fhTMQKZx4QD6T6/o2M2WHLPkncqQpjMMsUw==} + engines: {node: 18 || >=20} + + secure-random-octet@4.0.1: + resolution: {integrity: sha512-KEeg9wGi/96Q8Edp97gt5Z5dYCcvG7vPKdKFq6rPLCHtaaHwZKbhbC+gY74O7OjX8Fnels49wqc8IgkNhBJZfw==} + engines: {node: 18 || >=20} + + send@0.19.2: + resolution: {integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==} + engines: {node: '>= 0.8.0'} + + serve-static@1.16.3: + resolution: {integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==} + engines: {node: '>= 0.8.0'} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + side-channel-list@1.0.1: + resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.1: + resolution: {integrity: sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==} + engines: {node: '>= 0.4'} + + statuses@2.0.2: + resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} + engines: {node: '>= 0.8'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + uuid@11.1.1: + resolution: {integrity: sha512-vIYxrBCC/N/K+Js3qSN88go7kIfNPssr/hHCesKCQNAjmgvYS2oqr69kIufEG+O4+PfezOH4EbIeHCfFov8ZgQ==} + hasBin: true + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + +snapshots: + + '@thunderid/express@1.3.0(express@4.22.3)': + dependencies: + '@thunderid/node': 1.3.0 + express: 4.22.3 + uuid: 11.1.1 + transitivePeerDependencies: + - encoding + + '@thunderid/javascript@1.4.0': + dependencies: + jose: 6.2.3 + tslib: 2.8.1 + + '@thunderid/node@1.3.0': + dependencies: + '@thunderid/javascript': 1.4.0 + base64url: 3.0.1 + cross-fetch: 4.1.0 + fast-sha256: 1.3.0 + jose: 6.2.3 + memory-cache: 0.2.0 + secure-random-bytes: 5.0.1 + tslib: 2.8.1 + uuid: 11.1.1 + transitivePeerDependencies: + - encoding + + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + + array-flatten@1.1.1: {} + + base64url@3.0.1: {} + + body-parser@1.20.8: + 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.16.1 + raw-body: 2.5.3 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + bytes@3.1.2: {} + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + content-disposition@0.5.4: + dependencies: + safe-buffer: 5.2.1 + + content-type@1.0.5: {} + + cookie-parser@1.4.7: + dependencies: + cookie: 0.7.2 + cookie-signature: 1.0.6 + + cookie-signature@1.0.6: {} + + cookie-signature@1.0.7: {} + + cookie@0.7.2: {} + + cross-fetch@4.1.0: + dependencies: + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + depd@2.0.0: {} + + destroy@1.2.0: {} + + dom-walk@0.1.2: {} + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + ee-first@1.1.1: {} + + encodeurl@2.0.0: {} + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-object-atoms@1.1.2: + dependencies: + es-errors: 1.3.0 + + escape-html@1.0.3: {} + + etag@1.8.1: {} + + express@4.22.3: + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.8 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.7.2 + cookie-signature: 1.0.7 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.3.2 + fresh: 0.5.2 + http-errors: 2.0.1 + merge-descriptors: 1.0.3 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.13 + proxy-addr: 2.0.8 + qs: 6.16.1 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.19.2 + serve-static: 1.16.3 + setprototypeof: 1.2.0 + statuses: 2.0.2 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + fast-sha256@1.3.0: {} + + finalhandler@1.3.2: + dependencies: + debug: 2.6.9 + encodeurl: 2.0.0 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.2 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + forwarded@0.2.0: {} + + fresh@0.5.2: {} + + function-bind@1.1.2: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.2 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.4 + math-intrinsics: 1.1.0 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.2 + + get-random-values@3.0.0: + dependencies: + global: 4.4.0 + + global@4.4.0: + dependencies: + min-document: 2.19.2 + process: 0.11.10 + + gopd@1.2.0: {} + + has-symbols@1.1.0: {} + + hasown@2.0.4: + dependencies: + function-bind: 1.1.2 + + http-errors@2.0.1: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.2 + toidentifier: 1.0.1 + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + inherits@2.0.4: {} + + ipaddr.js@1.9.1: {} + + jose@6.2.3: {} + + math-intrinsics@1.1.0: {} + + media-typer@0.3.0: {} + + memory-cache@0.2.0: {} + + merge-descriptors@1.0.3: {} + + methods@1.1.2: {} + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime@1.6.0: {} + + min-document@2.19.2: + dependencies: + dom-walk: 0.1.2 + + ms@2.0.0: {} + + ms@2.1.3: {} + + negotiator@0.6.3: {} + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + object-inspect@1.13.4: {} + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + parseurl@1.3.3: {} + + path-to-regexp@0.1.13: {} + + process@0.11.10: {} + + proxy-addr@2.0.8: + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + + qs@6.16.1: + dependencies: + es-define-property: 1.0.1 + side-channel: 1.1.1 + + range-parser@1.2.1: {} + + raw-body@2.5.3: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.1 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + safe-buffer@5.2.1: {} + + safer-buffer@2.1.2: {} + + secure-random-bytes@5.0.1: + dependencies: + secure-random-octet: 4.0.1 + + secure-random-octet@4.0.1: + dependencies: + get-random-values: 3.0.0 + + send@0.19.2: + 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 + transitivePeerDependencies: + - supports-color + + serve-static@1.16.3: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.19.2 + transitivePeerDependencies: + - supports-color + + setprototypeof@1.2.0: {} + + side-channel-list@1.0.1: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.1: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.1 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + statuses@2.0.2: {} + + toidentifier@1.0.1: {} + + tr46@0.0.3: {} + + tslib@2.8.1: {} + + type-is@1.6.18: + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + + unpipe@1.0.0: {} + + utils-merge@1.0.1: {} + + uuid@11.1.1: {} + + vary@1.1.2: {} + + webidl-conversions@3.0.1: {} + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 diff --git a/quickstarts/express/postman/ThunderID-Express-Quickstart.postman_collection.json b/quickstarts/express/postman/ThunderID-Express-Quickstart.postman_collection.json new file mode 100644 index 0000000..d2acf64 --- /dev/null +++ b/quickstarts/express/postman/ThunderID-Express-Quickstart.postman_collection.json @@ -0,0 +1,62 @@ +{ + "info": { + "name": "ThunderID Express Quickstart", + "description": "Sample requests for the ThunderID Express API quickstart. Public endpoints work as-is; protected endpoints need an `accessToken` collection variable β€” grab one from http://localhost:3000/token after signing in through the sample app, or run the OAuth 2.0 flow yourself against your ThunderID instance.", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "variable": [ + {"key": "baseUrl", "value": "http://localhost:3000"}, + {"key": "thunderIdBaseUrl", "value": "https://localhost:8090"}, + {"key": "accessToken", "value": ""} + ], + "item": [ + { + "name": "Public endpoint", + "request": { + "method": "GET", + "header": [], + "url": {"raw": "{{baseUrl}}/api/public", "host": ["{{baseUrl}}"], "path": ["api", "public"]} + } + }, + { + "name": "Protected resource", + "request": { + "method": "GET", + "header": [{"key": "Authorization", "value": "Bearer {{accessToken}}"}], + "url": {"raw": "{{baseUrl}}/api/protected", "host": ["{{baseUrl}}"], "path": ["api", "protected"]} + } + }, + { + "name": "Current user (userinfo)", + "request": { + "method": "GET", + "header": [{"key": "Authorization", "value": "Bearer {{accessToken}}"}], + "url": {"raw": "{{baseUrl}}/api/me", "host": ["{{baseUrl}}"], "path": ["api", "me"]} + } + }, + { + "name": "Update credentials", + "request": { + "method": "PATCH", + "header": [ + {"key": "Authorization", "value": "Bearer {{accessToken}}"}, + {"key": "Content-Type", "value": "application/json"} + ], + "body": { + "mode": "raw", + "raw": "{\n \"password\": \"n3wP@ssword!\"\n}" + }, + "url": {"raw": "{{baseUrl}}/api/me/credentials", "host": ["{{baseUrl}}"], "path": ["api", "me", "credentials"]} + } + }, + { + "name": "ThunderID userinfo (direct)", + "request": { + "method": "GET", + "header": [{"key": "Authorization", "value": "Bearer {{accessToken}}"}], + "url": {"raw": "{{thunderIdBaseUrl}}/oauth2/userinfo", "host": ["{{thunderIdBaseUrl}}"], "path": ["oauth2", "userinfo"]}, + "description": "Calls ThunderID directly, bypassing the sample app, to show what /api/me is proxying." + } + } + ] +} diff --git a/quickstarts/express/public/styles.css b/quickstarts/express/public/styles.css new file mode 100644 index 0000000..26fffc1 --- /dev/null +++ b/quickstarts/express/public/styles.css @@ -0,0 +1,991 @@ +/* ── Reset ── */ +*, +::before, +::after { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +/* ── Design tokens (shared with the ThunderID React / Next.js quickstarts) ── */ +:root { + --color-bg: #f7f9fc; + --color-card: #ffffff; + --color-border: #dde3ec; + --color-text: #05213f; + --color-text-muted: #5a7085; + --color-muted: #5a7085; + --color-primary: #3688ff; + --color-primary-hover: #1f72f0; + --color-nav-bg: rgba(247, 249, 252, 0.92); + --color-nav-border: #dde3ec; + --color-code-bg: #0b1120; + --nav-height: 52px; + --shadow-card: 0 1px 3px 0 rgba(5, 33, 63, 0.06), 0 4px 12px 0 rgba(5, 33, 63, 0.08); + --font-sans: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; + --font-mono: ui-monospace, SFMono-Regular, Menlo, monospace; + --radius-card: 12px; + --radius-btn: 8px; + --transition: 0.2s ease; +} + +.dark, +html.dark { + --color-bg: #080f1c; + --color-card: #0f1a2d; + --color-border: rgba(255, 255, 255, 0.09); + --color-text: #e0eaff; + --color-text-muted: rgba(224, 234, 255, 0.48); + --color-muted: rgba(224, 234, 255, 0.48); + --color-nav-bg: rgba(8, 15, 28, 0.92); +} + +html, +body { + height: 100%; +} + +body { + font-family: var(--font-sans); + background: var(--color-bg); + color: var(--color-text); + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + line-height: 1.5; +} + +a { + color: var(--color-primary); +} + +.app { + min-height: 100vh; + background: var(--color-bg); + color: var(--color-text); + transition: background var(--transition), color var(--transition); +} + +/* ── Nav ── */ +.nav { + position: fixed; + top: 0; + left: 0; + right: 0; + height: var(--nav-height); + display: flex; + align-items: center; + padding: 0 28px; + background: var(--color-nav-bg); + backdrop-filter: blur(12px); + -webkit-backdrop-filter: blur(12px); + border-bottom: 1px solid var(--color-nav-border); + z-index: 100; + gap: 12px; +} + +.nav-logo { + display: flex; + align-items: center; + gap: 10px; + cursor: pointer; + text-decoration: none; + color: inherit; +} + +.wordmark-name { + font-size: 14px; + font-weight: 700; + letter-spacing: -0.03em; + line-height: 1.1; + color: var(--color-text); +} + +.nav-actions { + display: flex; + align-items: center; + gap: 8px; +} + +.nav-back-btn { + display: inline-flex; + align-items: center; + gap: 4px; + height: 32px; + padding: 0 10px; + border-radius: 6px; + color: var(--color-muted); + font-size: 13px; + text-decoration: none; +} + +.nav-back-btn:hover { + background: var(--color-border); + color: var(--color-text); +} + +/* ── Dark-mode toggle ── */ +.dark-toggle { + display: flex; + align-items: center; + justify-content: center; + width: 34px; + height: 34px; + border-radius: 8px; + border: 1px solid var(--color-border); + background: transparent; + color: var(--color-muted); + cursor: pointer; + flex-shrink: 0; + transition: border-color var(--transition), color var(--transition), background var(--transition); +} + +.dark-toggle:hover { + background: var(--color-border); + color: var(--color-text); +} + +.dark-toggle .icon-sun { + display: none; +} + +.dark .dark-toggle .icon-moon { + display: none; +} + +.dark .dark-toggle .icon-sun { + display: flex; +} + +/* ── Buttons ── */ +button { + font-family: var(--font-sans); +} + +.btn-primary, +.btn-outline, +.btn-ghost { + display: inline-flex; + align-items: center; + justify-content: center; + height: 46px; + padding: 0 24px; + border-radius: var(--radius-btn); + font-size: 15px; + font-weight: 600; + cursor: pointer; + border: none; + transition: opacity var(--transition), background var(--transition), border-color var(--transition); + white-space: nowrap; + text-decoration: none; + font-family: inherit; +} + +.btn-primary { + background: var(--color-primary); + color: #fff; + border: 1.5px solid var(--color-primary); +} + +.btn-primary:hover { + opacity: 0.88; +} + +.btn-outline { + background: transparent; + color: var(--color-primary); + border: 1.5px solid rgba(54, 136, 255, 0.4); +} + +.btn-outline:hover { + background: rgba(54, 136, 255, 0.08); +} + +.btn-ghost { + background: transparent; + color: var(--color-muted); +} + +.btn-ghost:hover { + background: rgba(0, 0, 0, 0.04); +} + +.nav .btn-primary, +.nav .btn-outline, +.nav .btn-ghost { + height: 36px; + padding: 0 16px; + font-size: 14px; +} + +/* ── User menu (signed-in nav) ── */ +.user-menu { + position: relative; +} + +.user-menu-trigger { + display: flex; + align-items: center; + gap: 8px; + height: 36px; + padding: 0 12px 0 6px; + border-radius: 999px; + background: transparent; + border: none; + cursor: pointer; + list-style: none; + color: var(--color-text); + font-size: 13px; + font-weight: 600; +} + +.user-menu-trigger:hover { + background: var(--color-border); +} + +.user-menu-trigger::-webkit-details-marker { + display: none; +} + +.user-menu-trigger:focus, +.user-menu-trigger:focus-visible { + outline: none; +} + +.user-avatar-sm { + width: 26px; + height: 26px; + border-radius: 50%; + background: var(--color-primary); + color: #fff; + display: flex; + align-items: center; + justify-content: center; + font-size: 12px; + font-weight: 700; + flex-shrink: 0; +} + +.user-avatar-lg { + width: 40px; + height: 40px; + border-radius: 50%; + background: var(--color-primary); + color: #fff; + display: flex; + align-items: center; + justify-content: center; + font-size: 16px; + font-weight: 700; + flex-shrink: 0; +} + +.user-menu-list { + position: absolute; + top: calc(100% + 8px); + right: 0; + min-width: 220px; + background: var(--color-card); + border: 1px solid var(--color-border); + border-radius: var(--radius-card); + box-shadow: var(--shadow-card); + overflow: hidden; + z-index: 200; +} + +.user-menu-header { + display: flex; + align-items: center; + gap: 12px; + padding: 16px; +} + +.user-menu-header-name { + font-size: 14px; + font-weight: 700; + color: var(--color-text); + letter-spacing: -0.02em; +} + +.user-menu-item { + display: flex; + align-items: center; + gap: 10px; + padding: 12px 16px; + font-size: 13.5px; + font-weight: 600; + color: var(--color-text); + text-decoration: none; + border-top: 1px solid var(--color-border); +} + +.user-menu-item:hover { + background: var(--color-bg); +} + +/* ── Hero ── */ +.hero { + margin-top: var(--nav-height); + padding: 88px 32px 56px; +} + +.hero-inner { + width: 100%; + max-width: 560px; + margin: 0 auto; + display: flex; + flex-direction: column; + align-items: center; + text-align: center; +} + +.hero-mark { + display: flex; + justify-content: center; + margin-bottom: 32px; + color: var(--color-primary); +} + +.hero-badge { + display: inline-flex; + align-items: center; + gap: 8px; + font-size: 11px; + font-weight: 700; + letter-spacing: 0.1em; + text-transform: uppercase; + color: var(--color-muted); + margin-bottom: 28px; +} + +.hero-badge-line { + display: block; + height: 1px; + width: 24px; + background: var(--color-border); + flex-shrink: 0; +} + +.config-badge { + color: #e88b3a; +} + +.hero-title { + font-size: 42px; + font-weight: 700; + letter-spacing: -0.05em; + line-height: 1.1; + color: var(--color-text); + margin: 0 0 18px; +} + +.hero-subtitle { + font-size: 16px; + color: var(--color-muted); + max-width: 440px; + line-height: 1.8; + letter-spacing: -0.01em; + margin: 0 auto 36px; +} + +.hero-divider { + width: 100%; + border: none; + border-top: 1px solid var(--color-border); + margin: 4px 0; +} + +.hero-stats { + width: 100%; + display: grid; + grid-template-columns: repeat(3, 1fr); +} + +.hero-stat { + display: flex; + flex-direction: column; + align-items: center; + gap: 4px; + padding: 16px 8px; + position: relative; +} + +.hero-stat + .hero-stat::before { + content: ''; + position: absolute; + left: 0; + top: 20%; + height: 60%; + width: 1px; + background: var(--color-border); +} + +.hero-stat-value { + font-size: 15px; + font-weight: 700; + color: var(--color-text); +} + +.hero-stat-label { + font-size: 12px; + color: var(--color-muted); +} + +/* ── Content shell (non-hero pages / sections below the hero) ── */ +.page { + width: 100%; + max-width: 780px; + margin: 0 auto; + margin-top: var(--nav-height); + padding: 40px 28px 96px; +} + +.docs-shell { + width: 100%; + max-width: 780px; + margin: 0 auto; + padding: 0 28px 96px; +} + +.eyebrow { + display: inline-flex; + align-items: center; + gap: 8px; + font-size: 11px; + font-weight: 700; + letter-spacing: 0.1em; + text-transform: uppercase; + color: var(--color-text-muted); + margin-bottom: 16px; +} + +.eyebrow-dot { + width: 6px; + height: 6px; + border-radius: 50%; + background: #2fbd6b; + flex-shrink: 0; +} + +.page-title { + font-size: 28px; + font-weight: 700; + letter-spacing: -0.04em; + line-height: 1.15; + margin-bottom: 12px; +} + +.page-subtitle { + font-size: 15px; + color: var(--color-text-muted); + max-width: 560px; + line-height: 1.7; + margin-bottom: 32px; +} + +.section-label { + font-size: 11px; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.09em; + color: var(--color-muted); + margin: 40px 0 14px; +} + +.section-label:first-of-type { + margin-top: 0; +} + +/* ── Cards ── */ +.card { + background: var(--color-card); + border: 1px solid var(--color-border); + border-radius: var(--radius-card); + box-shadow: var(--shadow-card); + padding: 24px; +} + +.card + .card { + margin-top: 14px; +} + +.card p { + font-size: 13.5px; + color: var(--color-text-muted); + line-height: 1.7; +} + +.card p + p { + margin-top: 10px; +} + +.card p code { + background: rgba(54, 136, 255, 0.1); + border-radius: 4px; + padding: 2px 6px; + font-family: var(--font-mono); + font-size: 12.5px; + color: var(--color-text); +} + +/* ── Endpoint list (swagger-like) ── */ +.endpoint { + border: 1px solid var(--color-border); + border-radius: var(--radius-card); + background: var(--color-card); + overflow: hidden; +} + +.endpoint + .endpoint { + margin-top: 12px; +} + +.endpoint-summary { + display: flex; + align-items: center; + gap: 12px; + padding: 16px 20px; + cursor: pointer; + list-style: none; +} + +.endpoint-summary::-webkit-details-marker { + display: none; +} + +.method-badge { + flex-shrink: 0; + font-family: var(--font-mono); + font-size: 11px; + font-weight: 700; + letter-spacing: 0.03em; + padding: 4px 9px; + border-radius: 5px; + color: #fff; + background: #2fbd6b; +} + +.endpoint-path { + font-family: var(--font-mono); + font-size: 14px; + font-weight: 600; + color: var(--color-text); +} + +.endpoint-desc { + font-size: 13px; + color: var(--color-text-muted); + flex: 1; + min-width: 0; +} + +.tag { + flex-shrink: 0; + font-size: 10.5px; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.06em; + padding: 3px 9px; + border-radius: 999px; +} + +.tag-public { + color: #2fbd6b; + background: rgba(47, 189, 107, 0.12); +} + +.tag-protected { + color: #e88b3a; + background: rgba(232, 139, 58, 0.12); +} + +.endpoint-body { + padding: 0 20px 20px; + border-top: 1px solid var(--color-border); +} + +.endpoint-body-label { + font-size: 11px; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.08em; + color: var(--color-muted); + margin: 16px 0 8px; +} + +/* ── Code blocks ── */ +.code-block { + position: relative; + background: var(--color-code-bg); + border-radius: 8px; + padding: 14px 16px; + overflow-x: auto; +} + +.code-block pre, +.code-block code { + font-family: var(--font-mono); + font-size: 12.5px; + line-height: 1.7; + color: #c9d1d9; + background: none; + padding: 0; + white-space: pre; +} + +/* ── Config notice ── */ +.config-list { + text-align: left; + list-style: none; + background: var(--color-card); + border: 1px solid var(--color-border); + border-radius: var(--radius-btn); + padding: 0 16px; + margin: 4px 0 24px; + width: 100%; + max-width: 420px; +} + +.config-list-item { + padding: 10px 0; + font-family: var(--font-mono); + font-size: 13px; +} + +.config-list-item:not(:last-child) { + border-bottom: 1px solid var(--color-border); +} + +.config-hint { + font-size: 14px; + color: var(--color-muted); + line-height: 1.7; + max-width: 420px; + margin: 0 auto; +} + +.config-hint code { + background: rgba(54, 136, 255, 0.08); + border-radius: 4px; + padding: 2px 6px; + font-family: var(--font-mono); + font-size: 13px; +} + +.config-step { + width: 100%; + max-width: 420px; + margin: 0 auto 28px; +} + +.config-step-label { + font-size: 11px; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.09em; + color: var(--color-muted); + margin-bottom: 10px; + text-align: left; +} + +.config-step .config-list, +.config-step .config-hint { + margin-left: 0; + margin-right: 0; +} + +.config-box { + text-align: left; + background: var(--color-card); + border: 1px solid var(--color-border); + border-radius: var(--radius-card); + padding: 16px; +} + +.config-box-body { + font-size: 13px; + color: var(--color-muted); + line-height: 1.6; + margin-bottom: 14px; +} + +.config-value-group { + display: flex; + flex-direction: column; + gap: 12px; +} + +.config-value-label { + font-size: 11px; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.06em; + color: var(--color-muted); + margin-bottom: 4px; +} + +.config-value { + display: block; + overflow-x: auto; + white-space: nowrap; + font-family: var(--font-mono); + font-size: 12px; + color: var(--color-text); + background: rgba(54, 136, 255, 0.08); + border-radius: 4px; + padding: 8px 10px; +} + +.config-docs-note { + font-size: 13px; + color: var(--color-muted); + max-width: 420px; + margin: 0 auto; +} + +.config-docs-note a { + color: var(--color-primary); + font-weight: 600; +} + +/* ── Token debug page ── */ +.token-header { + display: flex; + align-items: flex-start; + justify-content: space-between; + gap: 16px; + margin-bottom: 36px; + flex-wrap: wrap; +} + +.token-title { + margin: 0 0 5px; + font-size: 22px; + font-weight: 700; + letter-spacing: -0.04em; + color: var(--color-text); +} + +.token-subtitle { + margin: 0; + font-size: 13px; + color: var(--color-muted); + letter-spacing: -0.01em; +} + +.token-badge { + display: inline-flex; + align-items: center; + gap: 7px; + padding: 6px 12px; + border-radius: 6px; + font-size: 12px; + font-weight: 700; + letter-spacing: -0.01em; + flex-shrink: 0; + background: rgba(47, 189, 107, 0.08); + border: 1px solid rgba(47, 189, 107, 0.22); + color: #2fbd6b; +} + +.token-badge--expired { + background: rgba(220, 38, 38, 0.08); + border: 1px solid rgba(220, 38, 38, 0.22); + color: #dc2626; +} + +.token-badge-dot { + width: 6px; + height: 6px; + border-radius: 50%; + background: currentColor; + flex-shrink: 0; +} + +.token-raw-section { + margin-bottom: 20px; +} + +.token-raw-label-row { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 8px; +} + +.token-section-label { + font-size: 11px; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.09em; + color: var(--color-muted); +} + +.token-copy-btn { + display: inline-flex; + align-items: center; + gap: 5px; + padding: 4px 10px; + border-radius: 5px; + background: transparent; + border: 1px solid var(--color-border); + font-size: 11px; + font-weight: 600; + color: var(--color-muted); + cursor: pointer; + font-family: var(--font-sans); + letter-spacing: -0.01em; + transition: border-color 0.2s, color 0.2s; +} + +.token-copy-btn:hover { + border-color: var(--color-primary); + color: var(--color-primary); +} + +.token-raw { + display: block; + font-size: 11px; + font-family: var(--font-mono); + word-break: break-all; + line-height: 1.8; + color: #c9d1d9; + background: var(--color-code-bg); + padding: 14px 16px; + border-radius: 8px; + overflow-x: auto; +} + +.token-part--header { + color: #ff7b72; +} + +.token-part--payload { + color: #79c0ff; +} + +.token-part--signature { + color: #3fb950; +} + +.token-dot { + color: rgba(255, 255, 255, 0.2); +} + +.token-decoded-grid { + display: grid; + grid-template-columns: 1fr 1.7fr; + gap: 12px; + margin-bottom: 20px; +} + +.token-code-box { + background: var(--color-code-bg); + border-radius: 10px; + overflow: hidden; +} + +.token-code-box-header { + padding: 9px 14px; + font-size: 10px; + font-weight: 700; + letter-spacing: 0.09em; + text-transform: uppercase; +} + +.token-code-box-header--header { + color: #ff7b72; + border-bottom: 1px solid rgba(255, 123, 114, 0.15); +} + +.token-code-box-header--payload { + color: #79c0ff; + border-bottom: 1px solid rgba(121, 192, 255, 0.15); +} + +.token-code-pre { + margin: 0; + padding: 14px; + font-size: 11.5px; + line-height: 1.8; + font-family: var(--font-mono); + color: #c9d1d9; + overflow-x: auto; + max-height: 220px; +} + +.token-meta-row { + display: flex; + gap: 32px; + padding-top: 20px; + border-top: 1px solid var(--color-border); + flex-wrap: wrap; +} + +.token-meta-label { + font-size: 10px; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.09em; + color: var(--color-muted); + margin-bottom: 5px; +} + +.token-meta-value { + font-size: 12px; + font-family: var(--font-mono); + color: var(--color-text); + letter-spacing: -0.01em; +} + +/* ── Profile table ── */ +.kv-table { + width: 100%; + border-collapse: collapse; +} + +.kv-table th, +.kv-table td { + padding: 12px 0; + text-align: left; + font-size: 13.5px; + border-bottom: 1px solid var(--color-border); +} + +.kv-table th { + width: 140px; + font-weight: 600; + color: var(--color-muted); + text-transform: uppercase; + font-size: 11px; + letter-spacing: 0.06em; +} + +.kv-table td { + font-family: var(--font-mono); + word-break: break-all; +} + +.footer-note { + margin-top: 48px; + padding-top: 24px; + border-top: 1px solid var(--color-border); + font-size: 12.5px; + color: var(--color-muted); + display: flex; + gap: 20px; + flex-wrap: wrap; +} + +@media (max-width: 640px) { + .token-decoded-grid { + grid-template-columns: 1fr; + } + + .endpoint-summary { + flex-wrap: wrap; + } + + .hero-title { + font-size: 32px; + } +} diff --git a/quickstarts/express/scripts/prepare-dev.cjs b/quickstarts/express/scripts/prepare-dev.cjs new file mode 100644 index 0000000..734e095 --- /dev/null +++ b/quickstarts/express/scripts/prepare-dev.cjs @@ -0,0 +1,19 @@ +// Copyright 2026 The ThunderID Authors +// SPDX-License-Identifier: Apache-2.0 + +const fs = require('node:fs'); +const path = require('node:path'); + +const root = path.join(__dirname, '..'); + +const envExample = path.join(root, '.env.example'); +const envTarget = path.join(root, '.env'); +if (fs.existsSync(envExample) && !fs.existsSync(envTarget)) { + // Blank placeholder values (e.g. `your-client-id-here`, the sample base URL) + // so the copied .env still trips the app's missing-env-var check until real + // values are filled in. + const envContent = fs + .readFileSync(envExample, 'utf8') + .replace(/^([A-Z0-9_]+)=(your-\S*|generate-with-\S*|https:\/\/localhost:8090)$/gm, '$1='); + fs.writeFileSync(envTarget, envContent); +} diff --git a/quickstarts/flutter/.env.example b/quickstarts/flutter/.env.example new file mode 100644 index 0000000..4c5f308 --- /dev/null +++ b/quickstarts/flutter/.env.example @@ -0,0 +1,4 @@ +THUNDERID_BASE_URL=https://localhost:8090 +THUNDERID_APP_ID=your-application-id +THUNDERID_ATTESTATION_ENABLED=false +THUNDERID_CLOUD_PROJECT_NUMBER= diff --git a/quickstarts/flutter/.gitignore b/quickstarts/flutter/.gitignore new file mode 100644 index 0000000..48a41e5 --- /dev/null +++ b/quickstarts/flutter/.gitignore @@ -0,0 +1,130 @@ +# Miscellaneous +*.class +*.lock +*.log +*.pyc +*.swp +.buildlog/ +.history + +# Local ThunderID dev server certificate (machine-specific, see Flutter Quickstart docs) +server.cert +server.key + +# Flutter repo-specific +/bin/cache/ +/bin/internal/bootstrap.bat +/bin/internal/bootstrap.sh +/bin/mingit/ +/dev/benchmarks/mega_gallery/ +/dev/bots/.recipe_deps +/dev/bots/android_tools/ +/dev/devicelab/ABresults*.json +/dev/docs/doc/ +/dev/docs/flutter.docs.zip +/dev/docs/lib/ +/dev/docs/pubspec.yaml +/dev/integration_tests/**/xcuserdata +/dev/integration_tests/**/Pods +/packages/flutter/coverage/ +version +analysis_benchmark.json + +# packages file containing multi-root paths +.packages.generated + +# Flutter/Dart/Pub related +**/doc/api/ +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +**/generated_plugin_registrant.dart +.packages +.pub-preload-cache/ +.pub/ +build/ +flutter_*.png +linked_*.ds +unlinked.ds +unlinked_spec.ds + +# Android related +**/android/**/gradle-wrapper.jar +.gradle/ +**/android/captures/ +**/android/gradlew +**/android/gradlew.bat +**/android/local.properties +**/android/**/GeneratedPluginRegistrant.java +**/android/key.properties +*.jks + +# iOS/XCode related +**/ios/**/*.mode1v3 +**/ios/**/*.mode2v3 +**/ios/**/*.moved-aside +**/ios/**/*.pbxuser +**/ios/**/*.perspectivev3 +**/ios/**/*sync/ +**/ios/**/.sconsign.dblite +**/ios/**/.tags* +**/ios/**/.vagrant/ +**/ios/**/DerivedData/ +**/ios/**/Icon? +**/ios/**/Pods/ +**/ios/**/.symlinks/ +**/ios/**/profile +**/ios/**/xcuserdata +**/ios/.generated/ +**/ios/Flutter/.last_build_id +**/ios/Flutter/App.framework +**/ios/Flutter/Flutter.framework +**/ios/Flutter/Flutter.podspec +**/ios/Flutter/Generated.xcconfig +**/ios/Flutter/ephemeral +**/ios/Flutter/app.flx +**/ios/Flutter/app.zip +**/ios/Flutter/flutter_assets/ +**/ios/Flutter/flutter_export_environment.sh +**/ios/ServiceDefinitions.json +**/ios/Runner/GeneratedPluginRegistrant.* + +# macOS +**/Flutter/ephemeral/ +**/Pods/ +**/macos/Flutter/GeneratedPluginRegistrant.swift +**/macos/Flutter/ephemeral +**/xcuserdata/ + +# Windows +**/windows/flutter/generated_plugin_registrant.cc +**/windows/flutter/generated_plugin_registrant.h +**/windows/flutter/generated_plugins.cmake + +# Linux +**/linux/flutter/generated_plugin_registrant.cc +**/linux/flutter/generated_plugin_registrant.h +**/linux/flutter/generated_plugins.cmake + +# Coverage +coverage/ + +# Symbols +app.*.symbols + +# Exceptions to above rules. +!**/ios/**/default.mode1v3 +!**/ios/**/default.mode2v3 +!**/ios/**/default.pbxuser +!**/ios/**/default.perspectivev3 +!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages +!/dev/ci/**/Gemfile.lock + +# Log/OS Files +*.log +.DS_Store + +# Environment variables (use .env.example as a template) +.env +.env.local +.env.*.local diff --git a/quickstarts/flutter/.metadata b/quickstarts/flutter/.metadata new file mode 100644 index 0000000..0b1aaad --- /dev/null +++ b/quickstarts/flutter/.metadata @@ -0,0 +1,30 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: "cc0734ac716fbb8b90f3f9db8020958b1553afa7" + channel: "stable" + +project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: cc0734ac716fbb8b90f3f9db8020958b1553afa7 + base_revision: cc0734ac716fbb8b90f3f9db8020958b1553afa7 + - platform: android + create_revision: cc0734ac716fbb8b90f3f9db8020958b1553afa7 + base_revision: cc0734ac716fbb8b90f3f9db8020958b1553afa7 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/quickstarts/flutter/README.md b/quickstarts/flutter/README.md new file mode 100644 index 0000000..44230be --- /dev/null +++ b/quickstarts/flutter/README.md @@ -0,0 +1,44 @@ +# ThunderID Flutter Quickstart + +ThunderID Flutter Quickstart demonstrates the full authentication lifecycle using the [`thunderid_flutter`](https://pub.dev/packages/thunderid_flutter) SDK on iOS and Android. + +**Flow demonstrated:** +1. App opens β†’ unauthenticated state (sign-in screen) +2. User initiates sign-in / sign-up β†’ SDK starts app-native Flow Execution +3. User completes the flow +4. Sign-in β†’ authenticated state with profile information, token debugging, and sign-out button. + Sign-up creates the account but does not start a session, so it returns to the landing screen + and the new credentials have to be used to sign in. +5. User taps Sign Out β†’ session terminated, returns to sign-in screen + +## Get the Sample + +```bash +git clone https://github.com/thunder-id/samples.git +cd samples/quickstarts/flutter +``` + +## Configure + +```bash +cp .env.example .env +``` + +| Variable | Description | +|---|---| +| `THUNDERID_BASE_URL` | Base URL of your ThunderID server (default `https://localhost:8090`). | +| `THUNDERID_APP_ID` | ID of the ThunderID application the sample signs in to. | +| `THUNDERID_ATTESTATION_ENABLED` | Set to `true` to enable platform attestation. | +| `THUNDERID_CLOUD_PROJECT_NUMBER` | Google Cloud project number, used for Play Integrity attestation on Android. | + +## Run + +```bash +flutter pub get +flutter run +``` + +See [Try the Flutter Sample App](https://thunderid.dev/docs/v1.0.x/sdks/flutter/guides/try-the-sample-app) +in the Flutter SDK docs for prerequisites, creating the application, attestation, passkeys, and run instructions. + +The SDK source lives in [thunder-id/flutter-sdks](https://github.com/thunder-id/flutter-sdks). diff --git a/quickstarts/flutter/analysis_options.yaml b/quickstarts/flutter/analysis_options.yaml new file mode 100644 index 0000000..0d29021 --- /dev/null +++ b/quickstarts/flutter/analysis_options.yaml @@ -0,0 +1,28 @@ +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at https://dart.dev/lints. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/quickstarts/flutter/android/.gitignore b/quickstarts/flutter/android/.gitignore new file mode 100644 index 0000000..be3943c --- /dev/null +++ b/quickstarts/flutter/android/.gitignore @@ -0,0 +1,14 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java +.cxx/ + +# Remember to never publicly share your keystore. +# See https://flutter.dev/to/reference-keystore +key.properties +**/*.keystore +**/*.jks diff --git a/quickstarts/flutter/android/app/build.gradle.kts b/quickstarts/flutter/android/app/build.gradle.kts new file mode 100644 index 0000000..55d73d4 --- /dev/null +++ b/quickstarts/flutter/android/app/build.gradle.kts @@ -0,0 +1,44 @@ +plugins { + id("com.android.application") + id("kotlin-android") + // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. + id("dev.flutter.flutter-gradle-plugin") +} + +android { + namespace = "dev.thunderid.flutter_quickstart" + compileSdk = flutter.compileSdkVersion + ndkVersion = flutter.ndkVersion + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } + + kotlinOptions { + jvmTarget = JavaVersion.VERSION_17.toString() + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId = "dev.thunderid.flutter_quickstart" + // You can update the following values to match your application needs. + // For more information, see: https://flutter.dev/to/review-gradle-config. + minSdk = 26 + targetSdk = flutter.targetSdkVersion + versionCode = flutter.versionCode + versionName = flutter.versionName + } + + buildTypes { + release { + // TODO: Add your own signing config for the release build. + // Signing with the debug keys for now, so `flutter run --release` works. + signingConfig = signingConfigs.getByName("debug") + } + } +} + +flutter { + source = "../.." +} diff --git a/quickstarts/flutter/android/app/src/debug/AndroidManifest.xml b/quickstarts/flutter/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 0000000..399f698 --- /dev/null +++ b/quickstarts/flutter/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/quickstarts/flutter/android/app/src/main/AndroidManifest.xml b/quickstarts/flutter/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..bd098c0 --- /dev/null +++ b/quickstarts/flutter/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/quickstarts/flutter/android/app/src/main/kotlin/dev/thunderid/flutter_quickstart/MainActivity.kt b/quickstarts/flutter/android/app/src/main/kotlin/dev/thunderid/flutter_quickstart/MainActivity.kt new file mode 100644 index 0000000..096090a --- /dev/null +++ b/quickstarts/flutter/android/app/src/main/kotlin/dev/thunderid/flutter_quickstart/MainActivity.kt @@ -0,0 +1,5 @@ +package dev.thunderid.flutter_quickstart + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity : FlutterActivity() diff --git a/quickstarts/flutter/android/app/src/main/res/drawable-v21/launch_background.xml b/quickstarts/flutter/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 0000000..f74085f --- /dev/null +++ b/quickstarts/flutter/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/quickstarts/flutter/android/app/src/main/res/drawable/launch_background.xml b/quickstarts/flutter/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 0000000..304732f --- /dev/null +++ b/quickstarts/flutter/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/quickstarts/flutter/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/quickstarts/flutter/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..db77bb4b7b0906d62b1847e87f15cdcacf6a4f29 GIT binary patch literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ literal 0 HcmV?d00001 diff --git a/quickstarts/flutter/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/quickstarts/flutter/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..17987b79bb8a35cc66c3c1fd44f5a5526c1b78be GIT binary patch literal 442 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xx&nMcT!A!W`0S9QKQy;}1Cl^CgaH=;G9cpY;r$Q>i*pfB zP2drbID<_#qf;rPZx^FqH)F_D#*k@@q03KywUtLX8Ua?`H+NMzkczFPK3lFz@i_kW%1NOn0|D2I9n9wzH8m|-tHjsw|9>@K=iMBhxvkv6m8Y-l zytQ?X=U+MF$@3 zt`~i=@j|6y)RWMK--}M|=T`o&^Ni>IoWKHEbBXz7?A@mgWoL>!*SXo`SZH-*HSdS+ yn*9;$7;m`l>wYBC5bq;=U}IMqLzqbYCidGC!)_gkIk_C@Uy!y&wkt5C($~2D>~)O*cj@FGjOCM)M>_ixfudOh)?xMu#Fs z#}Y=@YDTwOM)x{K_j*Q;dPdJ?Mz0n|pLRx{4n|)f>SXlmV)XB04CrSJn#dS5nK2lM zrZ9#~WelCp7&e13Y$jvaEXHskn$2V!!DN-nWS__6T*l;H&Fopn?A6HZ-6WRLFP=R` zqG+CE#d4|IbyAI+rJJ`&x9*T`+a=p|0O(+s{UBcyZdkhj=yS1>AirP+0R;mf2uMgM zC}@~JfByORAh4SyRgi&!(cja>F(l*O+nd+@4m$|6K6KDn_&uvCpV23&>G9HJp{xgg zoq1^2_p9@|WEo z*X_Uko@K)qYYv~>43eQGMdbiGbo>E~Q& zrYBH{QP^@Sti!`2)uG{irBBq@y*$B zi#&(U-*=fp74j)RyIw49+0MRPMRU)+a2r*PJ$L5roHt2$UjExCTZSbq%V!HeS7J$N zdG@vOZB4v_lF7Plrx+hxo7(fCV&}fHq)$ literal 0 HcmV?d00001 diff --git a/quickstarts/flutter/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/quickstarts/flutter/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..d5f1c8d34e7a88e3f88bea192c3a370d44689c3c GIT binary patch literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof literal 0 HcmV?d00001 diff --git a/quickstarts/flutter/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/quickstarts/flutter/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..4d6372eebdb28e45604e46eeda8dd24651419bc0 GIT binary patch literal 1443 zcmb`G{WsKk6vsdJTdFg%tJav9_E4vzrOaqkWF|A724Nly!y+?N9`YV6wZ}5(X(D_N(?!*n3`|_r0Hc?=PQw&*vnU?QTFY zB_MsH|!j$PP;I}?dppoE_gA(4uc!jV&0!l7_;&p2^pxNo>PEcNJv za5_RT$o2Mf!<+r?&EbHH6nMoTsDOa;mN(wv8RNsHpG)`^ymG-S5By8=l9iVXzN_eG%Xg2@Xeq76tTZ*dGh~Lo9vl;Zfs+W#BydUw zCkZ$o1LqWQO$FC9aKlLl*7x9^0q%0}$OMlp@Kk_jHXOjofdePND+j!A{q!8~Jn+s3 z?~~w@4?egS02}8NuulUA=L~QQfm;MzCGd)XhiftT;+zFO&JVyp2mBww?;QByS_1w! zrQlx%{^cMj0|Bo1FjwY@Q8?Hx0cIPF*@-ZRFpPc#bBw{5@tD(5%sClzIfl8WU~V#u zm5Q;_F!wa$BSpqhN>W@2De?TKWR*!ujY;Yylk_X5#~V!L*Gw~;$%4Q8~Mad z@`-kG?yb$a9cHIApZDVZ^U6Xkp<*4rU82O7%}0jjHlK{id@?-wpN*fCHXyXh(bLt* zPc}H-x0e4E&nQ>y%B-(EL=9}RyC%MyX=upHuFhAk&MLbsF0LP-q`XnH78@fT+pKPW zu72MW`|?8ht^tz$iC}ZwLp4tB;Q49K!QCF3@!iB1qOI=?w z7In!}F~ij(18UYUjnbmC!qKhPo%24?8U1x{7o(+?^Zu0Hx81|FuS?bJ0jgBhEMzf< zCgUq7r2OCB(`XkKcN-TL>u5y#dD6D!)5W?`O5)V^>jb)P)GBdy%t$uUMpf$SNV31$ zb||OojAbvMP?T@$h_ZiFLFVHDmbyMhJF|-_)HX3%m=CDI+ID$0^C>kzxprBW)hw(v zr!Gmda);ICoQyhV_oP5+C%?jcG8v+D@9f?Dk*!BxY}dazmrT@64UrP3hlslANK)bq z$67n83eh}OeW&SV@HG95P|bjfqJ7gw$e+`Hxo!4cx`jdK1bJ>YDSpGKLPZ^1cv$ek zIB?0S<#tX?SJCLWdMd{-ME?$hc7A$zBOdIJ)4!KcAwb=VMov)nK;9z>x~rfT1>dS+ zZ6#`2v@`jgbqq)P22H)Tx2CpmM^o1$B+xT6`(v%5xJ(?j#>Q$+rx_R|7TzDZe{J6q zG1*EcU%tE?!kO%^M;3aM6JN*LAKUVb^xz8-Pxo#jR5(-KBeLJvA@-gxNHx0M-ZJLl z;#JwQoh~9V?`UVo#}{6ka@II>++D@%KqGpMdlQ}?9E*wFcf5(#XQnP$Dk5~%iX^>f z%$y;?M0BLp{O3a(-4A?ewryHrrD%cx#Q^%KY1H zNre$ve+vceSLZcNY4U(RBX&)oZn*Py()h)XkE?PL$!bNb{N5FVI2Y%LKEm%yvpyTP z(1P?z~7YxD~Rf<(a@_y` literal 0 HcmV?d00001 diff --git a/quickstarts/flutter/android/app/src/main/res/values-night/styles.xml b/quickstarts/flutter/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 0000000..06952be --- /dev/null +++ b/quickstarts/flutter/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/quickstarts/flutter/android/app/src/main/res/values/styles.xml b/quickstarts/flutter/android/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..cb1ef88 --- /dev/null +++ b/quickstarts/flutter/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/quickstarts/flutter/android/app/src/profile/AndroidManifest.xml b/quickstarts/flutter/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 0000000..399f698 --- /dev/null +++ b/quickstarts/flutter/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/quickstarts/flutter/android/build.gradle.kts b/quickstarts/flutter/android/build.gradle.kts new file mode 100644 index 0000000..d08ad63 --- /dev/null +++ b/quickstarts/flutter/android/build.gradle.kts @@ -0,0 +1,25 @@ +allprojects { + repositories { + google() + mavenCentral() + maven { url = uri("https://jitpack.io") } + } +} + +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() +rootProject.layout.buildDirectory.value(newBuildDir) + +subprojects { + val newSubprojectBuildDir: Directory = newBuildDir.dir(project.name) + project.layout.buildDirectory.value(newSubprojectBuildDir) +} +subprojects { + project.evaluationDependsOn(":app") +} + +tasks.register("clean") { + delete(rootProject.layout.buildDirectory) +} diff --git a/quickstarts/flutter/android/flutter_quickstart_android.iml b/quickstarts/flutter/android/flutter_quickstart_android.iml new file mode 100644 index 0000000..3bc4b3b --- /dev/null +++ b/quickstarts/flutter/android/flutter_quickstart_android.iml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/quickstarts/flutter/android/gradle.properties b/quickstarts/flutter/android/gradle.properties new file mode 100644 index 0000000..fbee1d8 --- /dev/null +++ b/quickstarts/flutter/android/gradle.properties @@ -0,0 +1,2 @@ +org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError +android.useAndroidX=true diff --git a/quickstarts/flutter/android/gradle/wrapper/gradle-wrapper.properties b/quickstarts/flutter/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..e4ef43f --- /dev/null +++ b/quickstarts/flutter/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-all.zip diff --git a/quickstarts/flutter/android/settings.gradle.kts b/quickstarts/flutter/android/settings.gradle.kts new file mode 100644 index 0000000..ca7fe06 --- /dev/null +++ b/quickstarts/flutter/android/settings.gradle.kts @@ -0,0 +1,26 @@ +pluginManagement { + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } + + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") + + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} + +plugins { + id("dev.flutter.flutter-plugin-loader") version "1.0.0" + id("com.android.application") version "8.11.1" apply false + id("org.jetbrains.kotlin.android") version "2.2.20" apply false +} + +include(":app") diff --git a/quickstarts/flutter/assetlinks.json.example b/quickstarts/flutter/assetlinks.json.example new file mode 100644 index 0000000..56d12f3 --- /dev/null +++ b/quickstarts/flutter/assetlinks.json.example @@ -0,0 +1,12 @@ +[ + { + "relation": ["delegate_permission/common.get_login_creds"], + "target": { + "namespace": "android_app", + "package_name": "dev.thunderid.flutter_quickstart", + "sha256_cert_fingerprints": [ + "" + ] + } + } +] diff --git a/quickstarts/flutter/flutter_b2c.iml b/quickstarts/flutter/flutter_b2c.iml new file mode 100644 index 0000000..f66303d --- /dev/null +++ b/quickstarts/flutter/flutter_b2c.iml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/quickstarts/flutter/flutter_quickstart.iml b/quickstarts/flutter/flutter_quickstart.iml new file mode 100644 index 0000000..f66303d --- /dev/null +++ b/quickstarts/flutter/flutter_quickstart.iml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/quickstarts/flutter/ios/.gitignore b/quickstarts/flutter/ios/.gitignore new file mode 100644 index 0000000..7a7f987 --- /dev/null +++ b/quickstarts/flutter/ios/.gitignore @@ -0,0 +1,34 @@ +**/dgph +*.mode1v3 +*.mode2v3 +*.moved-aside +*.pbxuser +*.perspectivev3 +**/*sync/ +.sconsign.dblite +.tags* +**/.vagrant/ +**/DerivedData/ +Icon? +**/Pods/ +**/.symlinks/ +profile +xcuserdata +**/.generated/ +Flutter/App.framework +Flutter/Flutter.framework +Flutter/Flutter.podspec +Flutter/Generated.xcconfig +Flutter/ephemeral/ +Flutter/app.flx +Flutter/app.zip +Flutter/flutter_assets/ +Flutter/flutter_export_environment.sh +ServiceDefinitions.json +Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!default.mode1v3 +!default.mode2v3 +!default.pbxuser +!default.perspectivev3 diff --git a/quickstarts/flutter/ios/Flutter/AppFrameworkInfo.plist b/quickstarts/flutter/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 0000000..391a902 --- /dev/null +++ b/quickstarts/flutter/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + + diff --git a/quickstarts/flutter/ios/Flutter/Debug.xcconfig b/quickstarts/flutter/ios/Flutter/Debug.xcconfig new file mode 100644 index 0000000..ec97fc6 --- /dev/null +++ b/quickstarts/flutter/ios/Flutter/Debug.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" +#include "Generated.xcconfig" diff --git a/quickstarts/flutter/ios/Flutter/Release.xcconfig b/quickstarts/flutter/ios/Flutter/Release.xcconfig new file mode 100644 index 0000000..c4855bf --- /dev/null +++ b/quickstarts/flutter/ios/Flutter/Release.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" +#include "Generated.xcconfig" diff --git a/quickstarts/flutter/ios/Podfile b/quickstarts/flutter/ios/Podfile new file mode 100644 index 0000000..d649ddf --- /dev/null +++ b/quickstarts/flutter/ios/Podfile @@ -0,0 +1,44 @@ +platform :ios, '16.0' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_ios_podfile_setup + +target 'Runner' do + use_frameworks! + + pod 'ThunderID', :git => 'https://github.com/thunder-id/ios-sdks', :branch => 'main' + + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) + target 'RunnerTests' do + inherit! :search_paths + end +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_ios_build_settings(target) + end +end diff --git a/quickstarts/flutter/ios/Runner.xcodeproj/project.pbxproj b/quickstarts/flutter/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 0000000..b6af898 --- /dev/null +++ b/quickstarts/flutter/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,737 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 25604BB0C5D4253EA9F66207 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8E69A3A38C99D0AD4E4C2F2D /* Pods_Runner.framework */; }; + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 6A222F8C540B83806C61B446 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C0011CBFF79FEA703C01697 /* Pods_RunnerTests.framework */; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 7884E8682EC3CC0700C636F2 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7884E8672EC3CC0400C636F2 /* SceneDelegate.swift */; }; + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 97C146E61CF9000F007C117D /* Project object */; + proxyType = 1; + remoteGlobalIDString = 97C146ED1CF9000F007C117D; + remoteInfo = Runner; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9705A1C41CF9048500538489 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 0BA1155FF8054CAFB9195FE7 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 4C0011CBFF79FEA703C01697 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 604F03390D50C5B0431BCDCE /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; + 65AAD9653F9261F8FF02E12E /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 7884E8672EC3CC0400C636F2 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 7E492B9724CEC84F2DD64C48 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + 8E69A3A38C99D0AD4E4C2F2D /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 7884E8682EC3CC0500C636F2 /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = ""; }; + BB4ADE648BDC5D1EB1C7F3DE /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; + C4DFF1B3D699B2E866A4C76D /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 5D3F5A9CEC455807F803B9A2 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 6A222F8C540B83806C61B446 /* Pods_RunnerTests.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 25604BB0C5D4253EA9F66207 /* Pods_Runner.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 1D45EFF127630E5FEDBD8758 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 8E69A3A38C99D0AD4E4C2F2D /* Pods_Runner.framework */, + 4C0011CBFF79FEA703C01697 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 331C8082294A63A400263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 3C32D4ABDE6503950307A95A /* Pods */ = { + isa = PBXGroup; + children = ( + 7E492B9724CEC84F2DD64C48 /* Pods-Runner.debug.xcconfig */, + 65AAD9653F9261F8FF02E12E /* Pods-Runner.release.xcconfig */, + 0BA1155FF8054CAFB9195FE7 /* Pods-Runner.profile.xcconfig */, + 604F03390D50C5B0431BCDCE /* Pods-RunnerTests.debug.xcconfig */, + C4DFF1B3D699B2E866A4C76D /* Pods-RunnerTests.release.xcconfig */, + BB4ADE648BDC5D1EB1C7F3DE /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + 97C146EF1CF9000F007C117D /* Products */, + 331C8082294A63A400263BE5 /* RunnerTests */, + 3C32D4ABDE6503950307A95A /* Pods */, + 1D45EFF127630E5FEDBD8758 /* Frameworks */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + 331C8081294A63A400263BE5 /* RunnerTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 7884E8672EC3CC0400C636F2 /* SceneDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + 7884E8682EC3CC0500C636F2 /* Runner.entitlements */, + ); + path = Runner; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C8080294A63A400263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + 089A43EE0800B27345DAE923 /* [CP] Check Pods Manifest.lock */, + 331C807D294A63A400263BE5 /* Sources */, + 331C807F294A63A400263BE5 /* Resources */, + 5D3F5A9CEC455807F803B9A2 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 331C8086294A63A400263BE5 /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + A3D4D7F2FFCA68FBDAEFE190 /* [CP] Check Pods Manifest.lock */, + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + C6E0620E66429D285910F9F8 /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Runner; + productName = Runner; + productReference = 97C146EE1CF9000F007C117D /* Runner.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 97C146E61CF9000F007C117D /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastUpgradeCheck = 1510; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 331C8080294A63A400263BE5 = { + CreatedOnToolsVersion = 14.0; + TestTargetID = 97C146ED1CF9000F007C117D; + }; + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1100; + }; + }; + }; + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 97C146E51CF9000F007C117D; + productRefGroup = 97C146EF1CF9000F007C117D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 97C146ED1CF9000F007C117D /* Runner */, + 331C8080294A63A400263BE5 /* RunnerTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 331C807F294A63A400263BE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EC1CF9000F007C117D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 089A43EE0800B27345DAE923 /* [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-RunnerTests-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; + }; + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + }; + A3D4D7F2FFCA68FBDAEFE190 /* [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-Runner-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; + }; + C6E0620E66429D285910F9F8 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 331C807D294A63A400263BE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + 7884E8682EC3CC0700C636F2 /* SceneDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 331C8086294A63A400263BE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 97C146ED1CF9000F007C117D /* Runner */; + targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 97C146FA1CF9000F007C117D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C146FB1CF9000F007C117D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + 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_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; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + 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 = 16.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Profile; + }; + 249021D4217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = dev.thunderid.Quickstart; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; + 331C8088294A63A400263BE5 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 604F03390D50C5B0431BCDCE /* Pods-RunnerTests.debug.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = dev.thunderid.Quickstart.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Debug; + }; + 331C8089294A63A400263BE5 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = C4DFF1B3D699B2E866A4C76D /* Pods-RunnerTests.release.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = dev.thunderid.Quickstart.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Release; + }; + 331C808A294A63A400263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = BB4ADE648BDC5D1EB1C7F3DE /* Pods-RunnerTests.profile.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = dev.thunderid.Quickstart.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Profile; + }; + 97C147031CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + 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_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; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + 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_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 = 16.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 97C147041CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + 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_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; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + 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 = 16.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 97C147061CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = dev.thunderid.Quickstart; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 97C147071CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = dev.thunderid.Quickstart; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C8088294A63A400263BE5 /* Debug */, + 331C8089294A63A400263BE5 /* Release */, + 331C808A294A63A400263BE5 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147031CF9000F007C117D /* Debug */, + 97C147041CF9000F007C117D /* Release */, + 249021D3217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147061CF9000F007C117D /* Debug */, + 97C147071CF9000F007C117D /* Release */, + 249021D4217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 97C146E61CF9000F007C117D /* Project object */; +} diff --git a/quickstarts/flutter/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/quickstarts/flutter/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/quickstarts/flutter/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/quickstarts/flutter/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/quickstarts/flutter/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/quickstarts/flutter/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/quickstarts/flutter/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/quickstarts/flutter/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..f9b0d7c --- /dev/null +++ b/quickstarts/flutter/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/quickstarts/flutter/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/quickstarts/flutter/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 0000000..3d095f2 --- /dev/null +++ b/quickstarts/flutter/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,14 @@ +{ + "pins" : [ + { + "identity" : "ios-sdks", + "kind" : "remoteSourceControl", + "location" : "https://github.com/thunder-id/ios-sdks", + "state" : { + "branch" : "main", + "revision" : "1ed224e4697acb0dace4604de6c2eeeb5ff9c353" + } + } + ], + "version" : 2 +} diff --git a/quickstarts/flutter/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/quickstarts/flutter/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 0000000..e3773d4 --- /dev/null +++ b/quickstarts/flutter/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/quickstarts/flutter/ios/Runner.xcworkspace/contents.xcworkspacedata b/quickstarts/flutter/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..21a3cc1 --- /dev/null +++ b/quickstarts/flutter/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/quickstarts/flutter/ios/Runner/AppDelegate.swift b/quickstarts/flutter/ios/Runner/AppDelegate.swift new file mode 100644 index 0000000..c30b367 --- /dev/null +++ b/quickstarts/flutter/ios/Runner/AppDelegate.swift @@ -0,0 +1,16 @@ +import Flutter +import UIKit + +@main +@objc class AppDelegate: FlutterAppDelegate, FlutterImplicitEngineDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } + + func didInitializeImplicitFlutterEngine(_ engineBridge: FlutterImplicitEngineBridge) { + GeneratedPluginRegistrant.register(with: engineBridge.pluginRegistry) + } +} diff --git a/quickstarts/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/quickstarts/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..d36b1fa --- /dev/null +++ b/quickstarts/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,122 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@3x.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@1x.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@1x.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@1x.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "Icon-App-83.5x83.5@2x.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "Icon-App-1024x1024@1x.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/quickstarts/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/quickstarts/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..d41fd82f5ee9fdda761d536cecd5870d5fd43822 GIT binary patch literal 277280 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
    ^^d6GZ{f?R<%!Ho!Usey2&X;;;%kl>_VK6p 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

    +chE-~*v@tgz_;BzyrE0$=x&|BNQ` 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 literal 0 HcmV?d00001 diff --git a/quickstarts/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/quickstarts/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..b8df5ece30b0b053a69cd089c702d113a9b74d22 GIT binary patch literal 2389 zcmZ`*do|ELQd0OF7UkbDsURzWKHF93){0f5jK04(wWU`Kdyv$G{A zNRb`wv4H63Dru|C1{nwghqr|YArNVG8IS(HaE{zC;lid z*q3*Viu5Pf=vLse?cz93{c5p|2Da6$RIa>8jS>1CSTH5ExuId4vkjwzDn zYEqbXF{L46R(Bs2S%5r3wTXB|lD)pYKV)6>N^&L0xgxn*AdnA(M0`9e}7OHyqj!R=4n5r`2DaU6$ znA;5qM-&f|*c^t<0IztvTVPXQ!gp`1^)0xRvoF-;bn=jI;T1tu5yw-btWHWV)9g%^T^qbHx6cGxEIw^3HZ{ zZF#4?_9|8qMIdP&+zdt_$+{Y^dz8{1UpKruz&cm`VEMN!F|4&DC-5HB4B!6ck2h4P ztGs0UMt{K-*L^%C6H@TP=XIlC2~?$wnP1Y>%_jr#Qpg`KZf=}h=yJs#!#ZHGK{puR zilnwBwzU-s?Yg(3ojSqVZ()21h~e^$WAqc>8aU=Jkm_6pihzO;;imi$-{TDFW*w} zk;FVwLl95^vNUl&;U3GPfg=(6r2qC7(`x3(5}LGr+gy=rXXKKjIzy~nAL1Bg$epPr zg0YH&Tv-bY@k<<%gFzaJP~C$;Nofhxy3VU}m_)6+Yta$n#n7 zG8D(8r)4VSsz?)*NwtD}39?4Da`{kMRn0BU-oDH^;+;H_iZUKXtE^Sy=o}f!Rp_>@ z@gnLm-CX2bm#faL-M^gIXc;^2THc~94+E_I#5tTYHR2_g=RAiDbcKb(y&O>CDRYHGr8ekToMJkZ+(B`IeX9#k1u?bpsrZP=+FGBJtW@~S*x zO2T2~5tO7c*zl>uTuwJ$!JsE7((L>LncZ`%^b?5+6#t=|&IJKvw_phBFdg>PaQLFikdL=dfx+1M9$bBlZO`a>U-y%} z^`)<`tEd>aI%qP&B?@Q8U+dOgsZ}$_S0EdO4m8RMfpFx8k2L0(X)?3axbVPtuR63n zw~e4tc{z3QnPO1UYwmJ?`ia_}V7Wvc&t8~isquh?XLoSVZ1xMIQx-kuA#@fedK;oU zAm8;Cabm*hl9H$S9lmBs^P&&aFnh^r=QbD|{yYX#CD7d}VK%h7GNe=dT z+|1HFpXJkNYGx$spRL+;rb2Mg*_!w`_Ux>KwH2`I!i?ekwA5~zyL-ZX_36mR2~!*O zqu+)--O}0TIkIk5R$pIc1-37JiQo3+k#+d{F(K>t&DaIVUhV*Iv_mncGc&Pb)S|f< zQu^$}0C9hoGn1s*Edg&}{s`WBHF!Y>rnR}THwpccwd37w{b;)N&9_B-%eBo)R*dii zc~I3niV;1pWIyysX&}o0hDbrW@Z>!a**8(@@pfk1QMaVk^}o?PTLm-ybKPd5-0BYt zc*_GODhHR|U?#{#*jCJ$%A~%DV2F;m@CLsnzIQzOOI1v(>5P-t(&R{})+D)KOFZGn zeMrPcENO<(5_RBIeQ8vX?x<593Zegw62SJoTA=@lk6Fh&;tyVX9C0X)_LNDEVatCI zXVX8eG)^&wx71hGKJ!I0BIn|oyhaZmeWArAwI(f{dUTuB-aO#Z$sKO`>cMoGjVO|i zE{R$m+fL`Cu6%v9sC~Rx>Yjfx{rX2^r}l3xuDNt*#|xj8j7-Fl47KrsY-Q_zGl`PTwD*;9dSJlP~o*9N-85^ASaNp~P zB^#*Z`G~rh>=TAtr{_m<+T-7{k~W6@4_nk=xsqG9v}k$5?i8WFz+V|JN$&qxccOo$ z3$-KXIfYp)V^j8uOP!8!Jp5NbP4`WoyXzs~HBoiS z!6z6?amP{dc)$Scr2(SDoEdb8e30w2KZ^}Oa@RcA1 literal 0 HcmV?d00001 diff --git a/quickstarts/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/quickstarts/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..81bea86cafb81bb1efaa91e5452041207a2cae63 GIT binary patch literal 3788 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 OKv&BUQE}To@;?AHzuwXS literal 0 HcmV?d00001 diff --git a/quickstarts/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/quickstarts/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..2c7701bb5ce960e09067d7b5395d462a74dd658f GIT binary patch literal 1695 zcmZ`(e>l^59RJLA8}nqHlfYWs#y?s>Xj&pn^d`}2A~@7L?~dHwf3#R&8@Mq8o* z0LFA0H3-6$i>0pzy}eU!SPSzGS`2b+|Uu|Hz zLj-cyR$nUkuy`bjvK(lF;?o1XQEC)Q-*TzQW+MjxL^YjC38CFPk+(G=G}Pkc2if~C zM|YqTou)6>HTl6Ro!Y6^6u}-_J0qOrz%a&~-TcJ%4i0rTI@;)Ikx3TJoEvXvdy;zN zIz#gI2a8O6U*F8k^ZB0L3nq``+t8~1I}M|+H3bTtOeZ_{#Xf-*o|bM$xoP5&jj*sA z;&cXicx<;hACm3^(p^2{^;#y@yl5}ToyY~GaGLL)R5*o!?M-RI&t9Ai$tz^$Qas_$ zKTr&C`aq1a2$C>ImM;~uRJ)p^EGjAh-iJypK@cT+K}#Yl+q>e6BBv+S1*JhnvcMM1 zeQc`W*gJt)QO%M|G;Br~zx>!T#TK3Jg0Rsor~b*2(fd!gRgr*4RQHbp+f6S=?|B=w zf^t!}no%qjFHhT$JgwX;HtJvDkcC5GmeftAVAs0;J~iCG1#S>gOm?Jg@6&`CUqpLU zY0PqcvSiNscQF_u+A`v|S08@9(a|cGHomaAVq=8}Eq1Tlfr7^?un15^8N-ngk1}zt zVJ#(>`x4HFor{j+J?p-^YT0p*_=5~W_pSaiJUxR^yfg}xS62n||9VU`*q>jstTRLt z?;4GmW_7DN&W~RfcJ5s5OtCe3xQQc=$+aZiROOAUej1bul}LLmt>K2(+QI5|fqAmT z(z%EOLusMm;jRn=c=qjbGi|f~fwZIePWXM*#`S{9RIdr;?gmpm8tFT~DppiY(3Vb5 zI>E2a`HkGE@Cw49GQCYFJi{#FET~G56gVKRF_mVzsEZyL1s`1{M)Tad9F?;t=)|DH zy{~(E>wgfLwPZwOX~f1mI!sS{bsdX6ZhzCtZH2q4=6yM?to0LiRO$S5EW#j@$5tDb z_??mKx7)#`X!Q4;Y79Fue?~q&s7<+87Wq`a@&}=LTeW9n z-7@i)6gDHJkqu6oK`Vcy8M-#OCA(z^*5UB=TB%*!M{Fs zh!j25xfli?F(}DSn@x3^zuqA6*Et6y?@D_YRw3V9JC6BOoWaV9n*VzEmP-o~NYx5a z#lZ*rGv{M2)SeDudztH5t1lF4YlZWhq$2@L>shI&c%e+EIGkyDDt}iE4q08+SZP~# zONaX<@Yi}g7-Q|dvjO8ebnB;Yt>ozD(cQ((3Ht_BZ+gw;Q;ob&*K4)MdpxMAHT7w) zet8_YVnWDy_}%t*3t#@;@d1c5vhs$)NvEf7Q${T04!U%4h$i5zYMz(4m+d$s= zOg{Zmd`&Q5dZ^xKTml1d2w{seiQY$cr3C(0zbI6Fvy2IWJ>Q$fkB#AT$n0be1b|2&x_wSq z58V*L1~QRECJ{d)5Xc0=+nlNKe;5*zV&k}i|2G_aL=S}wjvo{FafuurKPGYizddeb zqU)a_h&w+ULmsn54<{v#OZG}iNJt6CxJzULih3FlJ)`OMkME)>c5ihf0sPdgnb1`0Np!~TJ0Hq^bgHK%>DoX literal 0 HcmV?d00001 diff --git a/quickstarts/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/quickstarts/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..92298e2b0da8f798cfd54f436830ec7ef7293782 GIT binary patch literal 3626 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 Hjf(j%UI3B{ literal 0 HcmV?d00001 diff --git a/quickstarts/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/quickstarts/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..ff48b7b1472469e2ad41401433b8304c23bd8480 GIT binary patch literal 6046 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 literal 0 HcmV?d00001 diff --git a/quickstarts/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/quickstarts/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..4cc3cf34c33ecc6ddcbdb25c8435d7765ce69512 GIT binary patch literal 9541 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 rMCm!`TW@Fgw*Y004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00006VoOIv0RI600RN!9r;`8x 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%0A; zjpz^o&~%qg+2!XRoiB3oa4UOi;4Qk#$UTcs`Ic>sv7Mte4pYM9zH3@r_jOJmMa+bb zg@?9MBAZt5yFiEl+mE#d-=Z=p0RQZqv?BSa52=^&=(;V8gJD>!yoItVhY2aLXYn^j z5i+K?_uAKNJO8?Bh45Xu;3K!q9KlM{J5;WKRFzWWK45% zch($(ks1dOG{z^kop-~rZ~ZkEO|@bB}4u~tzS{YkNi1pt8xS?A!- zwJPTps@eGmwLC>{s=|xLgv0QkfwIPyyfuMC8V4Cub{5lnbp*r-_1`FM#XUfcKt!#r zXJ;7Am0;_6Pe1;hTiuO>8YPktYV{cg26R!aYn-X1PN-MWShG;@4@j|<(Xm!R zQN(ouDEqPz*F{&E*neZde*mVl*lV8#$UKaxeoM0rOhsW1cZx|2Vsq=hQ5l4ikb$vX z2bxoR$&{gJgG5Gf#-HC1Yn6i0D(^>W| z(?>@o(4nk?_vZjlWkXV`uNj85O7L%0 zN@3L*kFgQ5*03!537I~1$zb=mIa?lti-QI{5PGYpsO%^wXy>=&8w;Ey)XF!0HW7q< znxZw;n3&!a;{X7F$+NBoi|njS+y)GRj?wNmX5;lJSu2NMbi!dTnvt#&LUT~km*x;FN>rbIOJQj48%<4!Wp#_=60L z?Yby$PJn&hf%!HGRroVv32xMj;aMv=)+zviN2%U(kZ>D=&$S}If5WmZzg=Desaglc zUb~t_vRXr*(Wn zcfq#~9xGHTc3gCI#7=P?vL@&*ozNTf5&LXnDT72t0??B9XEWE-=MlG&9C@P{+i?Lf zCS}QaJ`#D;IOZsENqWPWE|iqoQa?V>E&%f{<5`=vCcg8mwe~h7KFjzT)W%qBy*``_ zbeB%}fK4fD4v>exDzp*;!mMa*UC*N8Ar6EsJ1_bz-3{lF3C~R9XkpS5e@S`0u z;Q)s^2mm0foJ&$){!dkWZPuy^hBb4{kwK7z2}W3bFe#f}r?+~_5wxbx${Jg!=hl`=1_iu?SYr9)qGBZr(krGIeW81EkAS6qp2XUYz`X_dt5e#o zu?!6NIV1JE=9S~_jWuq|JcW_m=4x>^Zjb|^w|dHSmqnaIv7XsZ^2qnasvSY%!<3Ej zU8c9Bo}5lxEd3H?StDzV4c=-ZD8{zs&B<=}1oB3dPB|#ir``TK6>j7RCYExP6DC_H zi-WJJ#*@yF0@S{)JYuaN3=PD47I6)U`R3Qj$8Fdrlj|__7)0o;%u(6Jtl;Fo^%wk( zi%M?jc3}$fof0u-#nQ3wKJckuw>o5A!|cF+uD&wH^v-$4FHN0uH4UC?C&(HT#g=W| z#p4ic{ZSKV5vim>+&Hi0{{TBB5#cETqc8%BLnhk1e2qiWFv)k=A|JQM9H)?&g~Z zj$GDYe_*i8BVDIyEMDQB$&8Pka!*96;v5}5|sjSXq@wE>ssk?lV zACW{J73wvgd}Fp+6#DQs&)&t<;-kcKCnZafUGKk1I z`w(XYmJww*Qc6KzD~f2sweT9!z-0|Q*Gd5OjZoQyAk0W=rbLi1y)_O5(`%PD$-%>$ z#5`oBSk9CCWQItLg3ORwFrlHSPqEvl^@xZ}ue0O8bH{eAu_IJJ<7iDLgvcUN(jt(8 ztY0CVoNHxuk+egpD>n+NQiX)DvSAx$t(Ems)B;e>AKm9saSu1MY zTmMVqWjwMu1JAW4!k_w6{LQm;+IR8a(&lJ5S!d8&oj2VT4||;hVGg1)2GW(uDHZP@ z9a$xTHk@SuTLyqBJ3B9VQETh;y4?lz{gE3N4{R&|olcYm65r}}UuCf1n z%7oz>(owNi!0>zT$^1_9;LX@)I|!1ax{q)Hx=SaG>1KITJi9>rOri5}8r22Hu6rbZ zi0J`#^aKE8dabSdc3yn*1{V=xmMZ}h1e}(HV%fPy1l6fP!G>Da8sZF9x4oYPq&lv^ zMp)}wkqE_;EIxF(ZPSJ&EOxTqxRtYrzBZ5aS(eO;fFAyRi)0@8RrH%1P z(_5EOaPv9+iKsSpc=pS zBGVn)d0_j6&)WFfV=_H*iv*N|CaVjpL*p9Lm$mx&D}Olspq_;+9RioDqziE*SB7&uJC zo`Zol1Q&0ZwUTy|?$A3JQyiJ~N33lGr=8-aNxbCbi~No>YtbSJHVobX0HCt$E}w93 z_yd}VSgT%6C%hGjE{I^E=32uU zS3TFtPNnJx_M5371StIdHi5N@e#B*U`?-U9AmO zf(&gjz{QXjje9Uz4@EI^ylR zg?mFe+%dY#Al3n$rP;E*P+@+G_Uz;x(>)5yi$K;|DHMG{?7e|Z)*Rn`R2no&v4#Ec=~v*Rb$eavw3b&@UAW-fUayn|7Zg09qpl*^?a6>HIUo( zypo5QH$=c8Q(%AqlY6hiyur)_)K>ZOQY2HZoVbt5o+__I<`Jz!Sw5(kUT4?EKQgxK zyiq+MNd#s4G`N7pLzhRYf)}ogMH1@OJt8t0tB%P)clm_cMiST>z1s+MteYLjd&SLta>vIc&DX$dK%Oh4*C#Ef z6pC~|c{QK6wm6?5kqG&QGO6L$cU4~771ptGFcA-SIRdm74ws#!ENghs4gtN7P_-Z_ zGgrQ#wRL)fSufcj>UAvDvUl*Z_0Rsuul%BxvO6|?(Tk$K=`5x~q9Kan?^qjVbpfUtVv0V3l8 zT!8w7m}Axo9Q-l3K*)Fy)*AJ_DpRQQ8)U5jk#{04YsW+ME&o|nkHcn2htWiL>3FZb z5Kw~@Y!Z}(z?ja|zH7H#`1BE51^^jYIeEXE|6&{}0!m-j3Sb`(L!}k#A_ixzp+doa zRrvd)SZf6lHp*JPbFgRC*kxMmyx$0kqC7Bz_QDaI!NMtd-W<;T8jx+_?;^eVRZ1}> zgF4nK{*r8kYAj>)tW|-X+Ol9@6*Ov9fa!GFryga%k#KZjqy*D#?|Sl!#&=&haYu>L{WLHjlOTuLynX1+N*^fe4+Ix$g2wtmCnPr4j&@jfq{; zSG;^9i--HQ=k&>?qu=riNUdcI!CL)EX061=HVkW}bOZ<=YT9hps@oE&1;qm*Bi06V z79T4+OPFP82}N$q^xC^Gxn;}tJ)7Y+Fo&fhcXbz!+YE;dD>xKu1ub-;nPFHf)EZ6n zl>KJ2)|69s-SU@?-Zl_c=N_W6gV>U`S%*o9dado}O<(rn(Jb0X+yUn9`>c&4Vj0*_ ztd()bhFELTn1BGVa1Lq|tkqT1m$e2y!>=A7N^5FV$LjpU(kZd;mcW`NZp!Y=6+h9K z*tRKdBZKz*W2X;(CCdw*pnp7BYaD|J0sW&1Oo51_3C4q1t;1H;gKI{DwW=nioSQp` zHDfqFDy6s$F@UY4z)MP#>Qibl=|m4VP}FLoA>hOaG4-;99F?yLVz-rBMmZUYd? zcIV{XANOwp90hAlMUz0C{a7oXm2>2UcyQ!QvsSXN!Gq4ky3=#ihsY#=M{>3~S{xep!upU3vWq;kD%MSZn&*l%jnS zPoS}&k)u2?gVp&*On2Few2F4>DOsK+H<%T>uYPrw=bPfh08FnucIStIA08L5VYug7 z-KefxA?&7i^}lMR9j3kl9?bT3g?m2ijI&m9OF4q?HV2ii&Oc11M_EJo(}ZI+z15u; zKY!|+t2fJS6masMe?0x@?U*&>kb2x%t6R*=7#$Jp%Xn(mkOFKXYZc$B;+tR@M6f#d z5CB%2__!8E?wBZVjPJhsCpU{TA@tfSN5B530B$QLv1Z_LWUZo3)&WtlF@E&i1nC#1 zCt0gMYiHzZ?|{)A?& ziqX_KH;My~e6oJTrhy3E)%ot?F@OxfcnNAKM`Vieox87mgL!bgwJd*HgNF{#HhkkhS(T3v$j}-@!cw=&gIC_K`t* z;c##DluPFkk*S`1vpKP9hn`-0_m!{MvSaTi83&O$^o93!myTnWOBn7uO#T6H%^AJ) z(ijtnUuCW^sRW@EJ4{zCGEAU=-V}QHoO#wN%5KggA4F)+KVo|Atk?n|Ut=Xqx-7SB zJ7@axmuyx*X~5C1e`Nmt&t-YbMRgHLA6M4u+^AZDTIsrGfpJ>QRh9K~t%+u!cZr^` z3G@M^ui6y*Se<*wuki_Nw>oFKd#?SdO-hz$1uQ&#=iz_;1I!EVK4}MjCg)nM=tD0h zz^c1lw1!mGH6&{d-#?{lPOw&`txYit03ZV^C+-K#YE!gjZ+zy-JD>dg&7iNCLwn)) z!=L#L(_O)=0h+aXJpcHyRt@+na6-;=cowx`)~eB~>sCE$_2evS`^c07WoNas@F-%& zD{sB)viUHx_qw0ijAS`x&|6t};I>~|J^4UZv^MX#)==z$u*KP!waS2`USy zD=-EURz;&U4@BrJ9_uU}ciBY$kH`=JmF=msuiL)=#?7z{Q??)e%zI8B`g)eP#AL)1 zg0%{43IOf}Vo1_Xi^r3-V#>e~Mz{y(LQ%}X zbXOkyMga7bborS|$V~cajwX9XRlm4vL z?LiQ|ovYff!p9>WQy4MEtd&3NX<-n}B)Nw4ab&G>Rqg1O7bEnR7doep0EUTRGG$|Y zde3#Q9aTOwE1+zz9R8;d9J~E5$n>gY*P5&~l(A;50#%~?Ab*Qc;)X1Go?5NZbb&0* zTIJsN+H*kR8@F-R3d6Ei{cRKuH+WzMoyEs`tEVu6xKws#u6*T4R+eK1h_LX`*AIQ^ z50?(#iA4+ZVnEiq=5wu~-%YN6Py>e06@sk%4+kHr7OE<7WSbWPm z7d|c^<{p6}Fy0vDfe5Sf2gSp&4)2(Y;!T`@SYgJP4+whLe zdmyZyxDR~faNf!E_CDpO8{<>!b{m-6739b6`0(s^|F*Yu5{qV5H25|HvQ`xBlJAB@ zVL93{002=*y|M@09*_Y<$g0W+i~$13^Q_48JQuDS9Rzk7(c9y*vi$I`GNk_wCs_HJRmEyWN>RG56rXN56Z| zec!p~zDEuprEWKCw(^R@OCsQ!C_@R!W>x%#px_P1&pd0b@RBA`05q~^Ax)>VI{ye_ zuG@uYJ?-^*vo)yOKubf&Kxg6D=|{dcckic9ANppmeL5?ed1Fj2g5Ahmt3nW*1!J>V zT`d}oXWnq_D_-*ao1gRai}#=3Xw*)co}4@NjXS@6>nA?@u}^;Pk%u3}Mx&@MMyNK` z7v@WW5%bW*3Ulye%Nb^^)y0(hcH;+T&^djwyL24UO%b@2<=ZcMPCv`2tO4y~3}vUg zI`{D6k-HWSes%HDJGx7=0GQ>CyfFqY<_6ETu8*}MfZ%{$72S3x%ixw5KIbhz|C*bg zd3}~;u-372$F}F+bmQ}Hy7Ap_|HZ%f>yQ26AOHD-_di^WZQ(~j5iN@e;yu}jX3rFI zy6+6LR^?sYS5|&mkqxt&Afe(MI*X5$?M2M&+o*^rZ;bDI`Wy46-m{zu908S3wwHP< z^X-L0t0(SXKK{Lx$QcBD(xIqz*$;X??g&Qfn>zHBe_R^~d3$9hY%z134?XR+Gl7_%I*LfeFkis^1Tvw(1}mAmL3Koy8g z`3wR8DowAm`ud-K`S1Lvw@vTbF`zZH4RlNp0dR79`al2XJFoxYXTJ6AzkcYUgN?B< ze=p@e!meQJNk7W1PqEg3d2)Xe--<^KldP3^tWfx^T!%yeNTvs2eu|=xky=7@hi-!d z@1)3dc_T;gypySAhL{0njxP`gTxXk{Q-biMMp<&$u<-pGK7;_>YjTi@zbQ*J<$K=s z=6Ag54Fj4506e&4-hY2@sjFyjCDD$7%ch$*m5;pf7vB2iuiV}kA9JlHMw}8y+lIBC z^rJE_CZu0OS)*?$9?sOiZ19VstNN4pAb&u$7X&66v@kvBMT^uM;!-sxZPdRIUD1=i z(i3Z*0jMm&l>g%c`r!Mnx#sfj>T1gj9S*}Q!pVQA*~mEYaXbP@w!s+Yb1rz(wVoUv(XYF0WF1&(JQm^D1;J(A|bDp z@YneAh?VH<*51mgSou(QW%>0#_3~f+<)0ngG9Fqo@4L5qvQ3SM$8?;}m}&X0oV91> z&;IClXQp?Qy{^1HSk!J6iwJqK>mnte1Zz!viSciO-|lnMSO&J}vGmwN2=CI+tFu|F8b!cgHU!@R)!-lU zweG{a9A~3xO(!;g(vcqPb&U1Zx>o6L1Cpiv0gKJ8pmVI%s@irC35fUt7b=8PrqFE! z$xtGbA^i5ce`VK>?Za3`_hg5PXkd2?oIinYdvd}us^fL9e))@D_}t#g3J`c&B_bjc zWU{4c)=Kt~?TEF?8KYQ9o)1%)&(PYXz^cfiMGPtw1=IV65rozj7+egAgdL&76Jf0) zU6eeKIKLd+8eQPQ)X1@7bVBH@uKwuF&${IW&w;^?&@#X$F|E(2w+sNtvh3I2`KGan zF=LERp6fPdK%@r~D8GzyGbnEn(%@szCVnY%tF(t6%cal&d$vAKC7h`NftlFaf@>lZ z3=xb1DIRFM3)~;7!$d$7t`H_pZh0iCpGb4|FYay{&El=U_<9^{?%<&%df&a>6CEm| z>B`D7-rCnPs^h8GUio7$dS1D@ikz?4nh>kcwFdaN^M?$w{CtV4E>V_^OO~}?`{9bA z!Z66EYmEw}h*Ib+gXGPFYk~vS9W2i9(ZuZ`Y_sX&q{w&@0g~LRiX#rox|%%F(S#65 z;aZ?>r}INkz3N#vTsM?uG-S6BfNV4w#4@Vm-@pDR^F~3TgRtF<6ZMZ5Yh5$%Nj38@ zw8oh*25EMrL!0XCs9CG6ta`3hZOTH>>%Hn_FLX1g{SN6ff(8$3831tO4cA?I>BVKY z6Z>h>#^D51Mc98GtkpfpvFWT8U5Iu+y?ZmpOm3UH`8m%R)-vSLDF=-v^4QX9-F(xH z)aeqKKzf1a5Y$o(mr$nYR23Z*vDQ@8$zu@KO6k*S1|GIrmkFYYuYeiEfbVM+?!-kB zvZ>YD-Izi%rn1+&c>nnaE%FoC}^q-9jcvv0f}a`Z0VRZV&gDT{mb zbFKX_%9{D_wEEq!t;4O{MOBw@egNR#lNGX7adQ20t-3AR{H1)m-77A;xKZ?*hJJ8~ z-WPBa_ti!$0{||+^huLjr&d;0F&E$v2}y3fSef@mSgYHO_y4ojsI?S2Q+a!1o_yef zKKhGs#;7a<0QT;l-aWm;7&pynAr*pOCI~#C;75oH6cVFK^Cy}8lPiRI90hZ&k#y=e z*X?&lxuSq=meMsO>J;_(W(j`m2SPm8iqTvvdQamBOvJD-qF@qp5FnntZ%@5t7@Gr) zKv!%T9RnScw(TC#c#d(3eSCa;de@Ez9ykbg4Xj&XUM&;kHcR}=s?)4<4b~cHV-40C z(I-`L0`qFt>Z^^eQHO{oR_7SyK-C_?EC?PuG+t9_6*)Lw)h>au5aD3b?b`)AVq!NNKhG5+Dc&j87 zEQ3p4oZ=?6M{+)WEtlY$Tz7$;NvB}wJC7-ygzwAdJlDzw=YHlji~sJNH%C`!T<)Sm z04~#|ErWjVd%fdrD#TNRWGw?Op29cmFQ#fxO(x$YA>>o=hWNEBgdu*&7NE}xVOD=y zNfcQNMHj}Vp@#l2tkt(D*dMq$%W+ZeA*@j9Chf+AZoMf25Vbphhw+X6;ae5S!5AHI76~lg;{?-`?Lc zy4_O?ry;{wfC}YokhQ9vS_WdR!C*R*tkquAm$ka*pk;?b)|#~AD2&QOhAa2wLkAzN zQ(lJf+6xK-_|(x7Ak1{#vta(i9UTJLvjxkPWxVZ@#?E@n0D$>Z3&)PnViu%B0qmm* z!CBT*Qb``)dk^fp=`nar=lTx)v~w0(PtW5dLrlb49p^$-tHq@fW_q(4<@;JwttGLj zILp3s&-eT2FGG0U1w~14?`acQ##`>_9A2SD21N!tn`kJsj9q;#0{|XA_~?lfbK;2y zFAnvT{r}snHMo*NWA=i8#rhvAU<9aN*kX zJU{g4k#FAlo&H)Z5Ts?iSy)C@(~(s=*`^ZkqRDJP%K(7SeC~_9V2ycf)o8o8Y%}Lt z`;YHUnQL_>MUmT(ddpQK6`g=#6+rH zJyhh~xw%jM)!*IvrF#dov%mi6ZL>!n^GgL}EG5eGo%@Bh2V$)n_HU52)|~Ed_kCC^ z$S5H>5HhNAR;N(v`c??1m{in}n!dOO0T5(}^T%h;K4g+e2PXHMq}UATSD zaOMbu&aMP%gf6@|K@idKRKV}1z@JdjsTeFyY|=M zG6$;NpW0^#&%18cTBqZUuvX1_24bxMoE_(rK7;P-jz>SBeb;9SWVpO)&8iOfP$c*# zSH5@e{Xg}pmyD0Ez4ROrZk*0fcj5LqlV^|>d1v$94*>Xop5Fs;E_gS#YIt5%LQDN;6) zs3B3OuLo0iauGzaTZHg|M~*n4f@s`L=+{lfT7wJZPD}aqAyhAoM%7M0MC^1rU;6UbUv|s$`{X=A`^$;3KXGjKE8n=|Ww+cs2>1YiEYDte&AGFS?XTSPSXQ`1r`;q1dxk#o z&4cGmPhRWn<0F6bv0r-2J1H-+yb$g!F^r{gIH6d=7PHnq)MLQ8)~FOH16&7djptfX z04B*u70IfQBt@k-)?kg#pn9JX^H_0>Tw;cjPzecCXY!&r_`t(oyZx>g-2CjR$%%pN z1M!7dpF6wQ{_1y+n9`V@{|6AR24FJ~DB4MEHr zMYi;v&%N*W-q-G#yl4u`fP`^WrJ4tx8}(UDW4JB1#i?Og>zX=FNj)kRu~u--6QXOB z%G7EG)uHDWh=E80P|-(>y)@gazL!|sX)Dz<(ZkCzx^A(_A{?}6>RJ{ zdHmR~{>S(H>7V^?Y_{@>o+N#SR%M>;xX>qq1Z!30p1`aXqgv%z41Pwe6`grV)><1) zpypqF4pf7AL@iWK>wvhb+B6ga@}fAsynO4&K6(2c|8ije`DgFjyAHEhTw40T2mkUl zZ+O$^|MAQD*m#!ZYeW+vP;BgfE+e>jHzr~0k=1YNTx-8NfiWdULtg>Xfmkb#h;TP1 zb@R37T7!17&$1>czZ+x^Ve90;kTK=T^4P@KOJ98R8(#O5&wTpzTej#8%4&{B4jukK zw|?RSANtF0-}N16Hj73RAQQv{*6gMWD+xdmBg*~(IK^5MUSnf8!{=V=GaqT(T;7aU4TL#*}7d1slZ`mtOoMH$Cgw&-|gwFMaZ! zJu?#%R;*#BH~ z?=J^6uEkJ}mo_Cv3)SB#67-1=2$BU^H4yfUh!gua1w_1XRWmt zB;}*R4Ux(tRP%@gM5ZjeUFdWm&!)Cb&P?x`-nC^JZD85q7a=TXPOxvwydHq$iwoxosdcob-af)+fn)YSD}{+L$~eBo*jgXTK@N9FVL zf(1E+ZgS#V~PB+c~`A}?3jHbmcil2 zem;@Y`F}a5oClso;gTBRnda-upao=eFfg`fGOz$yj6f^}#0(6~3m6%I3*dkvK(Pf( zaM>*jm=SD{!mz8;DuI-0iEBhjN@7W>RdP`(kYX@0Ff!9MFbAR#0}Cr7Q!7(rZ36=< z1A~w!zksX3kTm4xr(~v8;?|(L)9E2lg9hA&lFZ!H;*!MN0(3oQRz^k;OH4IyO#tc< z1nEhw$V{_x&d9+uI%RTGkBN;qFY^AA+0IvT& zd9B6C_zH=)y0$XO76}QMnURgreh~m@N!1Yw2L3axkAq%4nGCoN*_eZWfVXUi1bj=V zzZDcP^?5y&9zIHT;1rOb)Pux$ImW!r|7 zCL#No66p5(r>}P0bllLcK3}`rcZa3M8Ct4htNlLp%>4)qWTqwn(#tJ8vk8e{xQpRq zaM1iVg*p84X0e&@?Lu}=xbr#LIA%1|ECH9h8h)$(=CiRMTo4QKZ2hlUsb=3o^rRh_ zzSd+WizlHuCv54~=|fRZ3_8QTrvOoq#`$@eJdQ=NhEBJc2YtxGQ*i-xi@N? zPs2RyOQsD?(a^MNZClh`+=#26$l*oBoQ1$rQ{aT+~E)-`QS?g8F%S^yl!GOkY+euIZj)C}yqHA(X^| z8QAw=eSc{k&%50ORz$YZd~z*T&e1ZPj0PqL*nmcR$wY=`F+fdP-jr5%)PWY+SQU=r;(jy{^Nn_b zB_MGwqToLIHRcgVrT|i!jQFLb!;#Ch#QyeEW9j{|)5aVVxL-=)A-Bdq$JFrLZkH=q z9N7WCkLr?DZdGe!REaJ(g-rsctWF)dayT6z+ntp<>55FKlCIN7Io*A;C@mSV+T56v ze*Rsbw<-c7F6E$SF`da2n$9LIf1D19{Oa=L3pxwJ)1BEaeN~W4iJ%EEAbJMt-geU_ zQ2=PEvQa8ty%3s13hi3Z{k%N8f%^7YiL2+yBXTpJ+%wdQUUPaX-w>iTSG{@JGT}Ew zpjjYD1EPjNscCv*7({>Y^}cz#C$GVQIpQqku5{&wHg6xd?=sB{qp-@)dRGRcyKYJ_ z#wRCM(0hSUgJczN>9~6;W~?)Yp$zL4=R48a>_mjf7!7KSB{i{vMHt3XkCZSrQ67ZY zRpP9hi&$8GFTS#2!>cl~)X@L9o%uMfMnnF6PJhhT*qp(e)$bpvn7+HqZ+`1tX2Yx5 z@!Pm55|N$SK>J--{ZX=dq=BkjT&`!dq?z03RRrjtZ(S3^@~T~C z5StAPNy2g7+sXQ3Eae?a_Ebq^zml6IJ8(&-A|lAosxPf)}SBKN5*#6R;K zG6p1Vas6}X^L*54WbLG^fU%OjVlq>TaQ>?yI|xE!z(+XSM8R1wCMQ{YqN8J~EcG~v zZQUdz#-QVaG%I!O$sK;nx9JFZ1w$Nfe@vnwjltnfsDpB4vH5nzq`JG_JpHkYAR*~9 zhN$9)jQ^-~@Uj4ZBp>0%C|)o*aFo+^YKeX2qUz4-eq1FBt2-x7ZStc7Xx|2$?$XRFNoH>jhZ$qxo%c7zAm9nVVxdW%fAZ^;q7&;3S6 zj%GNdG9+m%k<=Au_$KOB3s&E_7);fkjpTImjiKu77-nHykV>f`M29y6@8XucsJlOc zr#F~ z5a}&T9oso$%XxQ#*_VkAj9%MM)^?PLIz)7nRjA=VHQKYR2*P){ntJ82-u;J5R(Tsc zFxztP*w_T#tFbcL7 zEalxIkiMe1U;MU}W3}vg8|@(@t6?98jyp)As$uie#(v$Ld*4IbOkePo$v5s-+?XSH?m zp~`xe`iO*Eyt{@?C_00D&+%A6@PpqR^p))Yx$6I7U#ex zWfnzW^8{9=S$7fBa<7b{ZZfX#K2+UpJvQdyK+o5XZW5CF)j|&%^2h9G&HnLtxu-0$ z0F9Ft_0Y|DkahErFTjhOF}OcVOQjoiwUx19ss~Xmk&OSgu0VwHHSNazD7YZ1xsxa3C)Uqz2Q?Ew7b=So@r!1dvbOmBC5V7 zlRk7XKf_ zefk!QN(l)D??3ggYyQJVN-CG7r>@7s)cQNwW!?sTw`v65vPC_^F6EYFmQmNNx71NRf40~wMvY~t>=Ra^3VW-Yby2*m-6aXw z)sYV|9ED<;H-ssJ7NAP}IzP5vE{JJbzUT_C+v!ACgNL{Yz$*1PGN2m1OY7(e`LT6}aj9#_Hj7`w49 zg#4c_lQ%nGfy{%bN zVdoEbUnNpkS7wF$Jm<6#)bc6VN2$e_Y|VgGO63M!ulJ2jr+oU2S;+58x^9hu%Z*WI z4NrnBE~5yBKmA6mUOdW&P;yPjI*hr)hgRoBe<@Kt_7h09OaqB8@y|%;2Tp7xi149e zQjwKsn+q+D)-BSJlFz{I%dOu=E-u*BP-LFuf9TwbaxL}g;Rb~))=yx1yh=8wLsMYI z)I8y^JAkAmwsU5E-)VRIRU&7Grk(D^n%nCVK^uFH!h`JIs#8na2^?C1o+T@F(zmTw!;FOyLtzp84=cb7dIITS0hrKB%ct1Ghu^oe9EBp%p$k)Jp= zPOM#a`D)L|*T?=29s9IzHoAS5u)Y$cUM^@8Y53`TL@wz$u|c`71?Zn}YF4KCA)e11dE<@_MW7das}nw z$px?PwO##c_S)!zd0%A#W#%4s3VW=+3U<*$ca)^Orcnqwo90Q+jDfr9=7~k z5%Xf0lVXA{*t4a{>vp^E&#S(+Q}=qP%fpVr#LqZeHhm$hFo&GY9JTDNjlDA`T?4jp z``UZzBK1KVbc=z7jl~&C{(qd2H1<4mvK;JhAB0stsCU}@8la3pA5G4RE`4X5 zhaN_Kf8O6iI{l(GpU>9wWtIwTIy}x%B^T~~@@tffec7*gwaYG94}$!2i1`#YcCQ!s zg&mQbk{Ioaspq5p0bUpp+;pB=lST56(c7#1auKHN7@Ta&X>q-_&%x$Uc!3FmEk>|L zdyC0+(D~FP&SD&y&0F&m%}^%O?^b!AB)-(&gL~Li!)3iiCN#MCK+^}{b` zAXpZ;KFf&ipa5k&qVMDCY4b4H-6{}^{Z(xD+KoLnp?d$C|G+{mHz)DkWV=eia=3hJ zsPQZJkhC*$lGF7DpRYT54K5DE6pV_4LqoaQ@amQ+lLEPB=*3ReQd|GhQt2O|rwJ%i z$mk1|?%X|6lCC<&^WmCRY89p%G1QFx4fAy=U;%5bPd>3w)^$+Y*+nFTUx2^$*BIaK zFhVHAswLQ0{B%a>aZ+crbVJm>Q8mT6%(mC@+^Layi2kPbcm<{If~t#ib!cfLciT3m zMEQ$JT7w(~IB+LOZqSgp_{`ooM?*BEWa``4 z()wW$d=W6S^nS^}gX%ZzXI3M)QEa3l@wjSnbyM((q0z1frAql>lJIG@+u*0;!{tcw za^3dd3rBC__t@A0m}tyfJzSMEy#DAYc7`Mj}t~@e5Gb0!C~e>ew|Ac}ntdNCd@kkK?ZPafe4n&e?a$g4Yk8hMs;mipXL6cEeEc za>&OjBUW!9e#Bm3Jn-`TpO-I9ht}gO3l>k;?=~*_#*PdY*rnwL@4ux0DR|m??Dnt+ zpHH*1Qw2I*{lVUz{`thK_-&E%VGj!rg(i9V8Jjj4x01smiV7e^e(Axc-p@VT7#IBj z_j6`ppRMrQi90lMTWC4j+P65{7zx>CNw^d6WAct7K(8~8dJ?g%Vvn00^O-HeZ>W(t z>!vo#>(Gt`Ltc}|<&+au3+;CJAyrY0+CJ)q_r+hY)Jxdu4&@^$J4aoX-StXEj%s2N zQ`-KCM~tO?LJpa;JA2$e1-L;LDBfsjx4;JlHMKGf5?ANqTSDL``-PIjTg5O|kZ#o* z4*%7+?kCR~?#M9d=wWmk3x36Ps0q1Rya)&zByCq)E2WB=`M8xnt>2o|puFcZDC)g5 z7>XXg_;N@HT$5*5AWqMPZv4GDLf9IsqqVgGUVIJ)2wpe+gV;R&sN8^VD~@w6+C=Z)Sqj@g(iPq%vNii$;6ddIKWj`Yidjc=p!6te%6v st+O!#-_+I1!Oazr5Z|su|GmQd4~fbDmWadK6Yvs1U0DZFrDzfUU$y{dI{*Lx literal 0 HcmV?d00001 diff --git a/quickstarts/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/quickstarts/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..4fd28ab91faf8f1d447adddcb294086389895ea3 GIT binary patch literal 14123 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�SUcVLGeX` zmkvth+2(fNmzVcASqFn-2+e@?u2d6tN;U$g>7BdU+a|phSR?pLj%QSiwTbc=!uQXs z^hK+Auv2;m853{aKaR^IS@kOryPi<<@X7no*pKX&n{?0r#Hhd*KEw&@)h%Cnci z$oDIa$zgvHp{p{>iCr5Wa9k!mCK?;#aJHa)gkM#YlZwvwte=Mv%yVtwL$Na z=!VYt?rq<;`o^6BqLoXkrRrQD8Sc0nZacX*ofuxQBw0VW>nrdC0;}_ z;AY2;)b;I$URiPyCF{`ouzqh6-Bq*1cXiH#@<--wPR30;&9L3l5qmzyCCKOHU%$k= z3y<30xj?U_&~+g^v(Qc~Q9LI3N@yIiDQsz>dpHf}0=dFg1BA+BrUnn-gC%#EzUXBw zkD}nmUnP< z@5!5ZOk74KUT8C({`;d%+1%^(>8hm#N%#2))8~DW>2-a=>+oc;2&!h*EX`X3y2teI zgMGgFt+Dm|*(^^>puu8tlmr2&JFL^Db|vF+N0}U9H3*Z6N0mbX#aUoKL}NN_>geZM zp%Ibd;&Fu*Z_C4sDXyGgz2_!jYiFdobOY65B`iyLN3WBc(mNx(19se8zm&^FhxWG{ zud2uS^=oaH6?em28@`Rf9GLs|jf3Si`}d$nX`k02x%ad4_o3dbcZtDTm62-59vhgN zNQkHUwUm6aNK~e8k{lFQh*-q$hsKsL|I@@UG7Rx!L0)u;1{`*eW_p;MyM6^cC>2}9 zupi{&IpRL6PE;^>I=G!Z+_r4D)0^Jt;j{EIs8%4@`&q4|#OBTA{8YxICzpPG%bp%y zyPM;Boss+Fww|foD?!~Ay;$+h^WCNM&_nlC!sl)>>pkIK;Bu$L(|*bx-B(gy%k-Mt zvLcE-*kPtsviE)Clpfk(uHF9WDn5(+Gpu+G$##zT2yTZp4J9<1%=w?wrId-o+ zcOhelBW}dmtikTphdzHjoNMXcuH6G7n+CP zhKDyr;k~a_ea@D3pZs$kzGBbJzbLak5_X(7xP0Nen|^=n{C2S!vy*{B7c|QV<=tPf zQ=gHhlY$}8Ii9L`$1Rr(3dsg?f8JUCH{kud7`9@%lxg>{-wIU;-vbE^+Uy#m>*(_H za~B#3fKKdFF%i5zdZrqopa$m(1a@6>4;S4RZe)b%Vb0_2!sTtC8^$9f_hAd#@3F7&v#kXL>oZ*{$HDJI1yn=-|!x#NmQNG@<2K{fr>WLjgZmBq3*btg}3*)Ob9tBd-m~$MkK8Yj2CL zjI@7)2xajed6|;w0HUSNbNAvQ_yT{v*k-yfj}^mobT7!FMkJJzQ9-33;hrm zuqco=E3NA(L+X8G^DVEICc=GoGOf-Ug{8@`~>A@ z1Lg;W>DcGun|b!O;)Gg{NeLJ7dgXyTeI7PCI$t(yPF4lz!s#iE&N9}3ltP-_aw`k& zYn*l7+Z`TR_oMwmOrCGj>Seoqy9n?Y7)FncUddsBrp|7jkq zPP`;X7G*iA=JwNiLJyybB%8^@V;|-W3^s7vUGI2|TEE+}`3&ms$^LmvkD!70_8Nx< z1|+9sy3g~iv#?CgMJrtJlL{wJ5Qnugjv`%)biuoda%%mJxbx(9Fi4i1seD(NhRrWU zMBTp)ctGtMn+x9b?mzVRq?+*T*S4=J3#?^uK23cMSby3Du}zCYJl8S%rM}O?5YD2N zIkJQqIGwCFJ@+Y^zHP=a5yH?*q)G81*u%s!M;TDCelZ&)t9)Y~L>QMoqHxT}h5GpX zw#?CKHX1tk8yXA=>D(WK^5qPr+tR>5Yc390z|`tl+PTl_S;n%2uw6@jqDbE zR@pYS&q+uTr;J5KfdX3U{QSTOpliUV4-)th3yxv(%7;38VosK686`Lp1NDVZ>8ev( znMtp_uBq`?lZ5WE4|33~rNf=%s4!z&2-KPNqIO(z80G=95thiafdH3PyAiK@!K#yc zXnlnnse*7=H}lwP&mqckK|;oeP^J@xSv4iovWNakV!6zns!P?a(ec|JIVQa>>oRA` z0AWl&Jgz~`|Y~F;F_uarf6RSC(rw`&dFggH*c%jMXoKd?r1&V^?F4}lsJb&hxM!fka z+h|w+B{EAJt|X@62#&*yFQ|YFbm6U}HI@m)-C%Y$9Ps}F5+ZrcRS%Kw5m!PKijT*1 zTI42VB8V7<5cM;`4ea#w`FVL1)1>5*lJ4%Tu^WS{QR2j9rbS2ie>=}9D?8ZTU}iB9 z@fMLDl|-=T3gAO^nZ)1T%-kf(rWv&OI6*om#9w=u$o||)9v6czBa&|H@fjimGJ{2@ zU4K%Exj&z%6ldPlA0$6Y>O~0m@S8^ggN=J7L|MAM)wiAE4a|Uw%IK!wL2py<;j&Hg z&*^aJ4H_+Je2xRt^fznNa3h~~kRwDyHEYwp@oK+4E|L|u7H#f<9`4dKFE^48>Z8>4 z_QWpdv1g2W$(<|*gQ;N&MxBRs*>}ct~lt9wznLj@(K1I8sbMmuA#wzJv5q=havDm^{0g7np=(Kdy z6Jc4j<3Z^H>Eh)<`YC$C()d1(ZB-7w zSTfIVl|tUJ-GRhE>zI1&Q{TG=^nrwh zlQ|C`W76r7JBU8caQv!BC-D#Ps!s#m6%=tTm%&qX#c)t0b<4`47f+NRmQM=SO#*$P zohlYZ4}3(~?##bYC%@$@$X`G!{OTaza*VPiit2-Y^pR^6`(-(i2g_$a4J_>^qDHrI zQ%j77476U$PKChw`gq=0AmQTv)*Z8G&G&6f)?c)BCbt+2j=<*c1`rUKaU&6Z?a2f5 z|I4LP#hw=6O_bl63zaDJhsMo})=@Qt^WMAsr(EPF-^a|sqqX@Ad ztLj*#Q>|2TewsN6IZmc zI3ZKZf4NyfIW{ys#nRruki@Lco7^d7*neWW-Zu~Totw&R(~6?i>0?j6Sv+qyK`}n1 z^V&Ji5oonC0&doqaRdxLd!2u-F;V%G<$k2na?l2!|Yn(PGa^P@RKAmCr3bL18^|;_?hz zjMuddu|NUUQYB|XnN4Qr)!@+M`7gD%#gK1LZ08S@Co&{-^a_(@49o5`SeJN<7w&a) zB-s%1D0WEr*L;565l9?C-R6)prcDN=s+?X5y+y^<3%#yjrEup-e=lxw=gFP+$R~lD zhHI&uj5a_*3Fdw!zx~!$S*AmF&lQsH)79&@o5o!o-Q5w$jrw=*oiMG_M+-?s(pl;#pA7mtAVSLq>)4b z_#xnQc%IpO@np#LI<5M}tM~qWa3$#R4_llNx=eoHY41ADDxecpFx2qZbaIEeMl&*b ziD9X|)Q$@H4_;}z?PlJp$Wvixoggybmv^Bkl!&D3u^}N5Abmsv-G`sOeuFh;ti~Ihs zCBxpmZn`~DSfN&i;e_21(DeQ4^UHku6ZSo^$67bxoviGSD+6QoaRGzai)RJGHA@fnLN=bV*1IPL(PG3H$Z5xTYLZSgcfGMl^=0Fi+@ z`M$TV7Ph>JWA)#1@D)&mlBQ;S8LpiVs!dFMO<1saQhH-q0s9Z1@3t#IUbD#`@P$i=JvePqDk@6I7B7tT?_agN#=VZlHbL^KO0 zXLvd!379K;wd-j12$R)qBqv*doV z#{&qI$}u+uWb8N;Q-%7?6bC(#d{r}hWBLfuMjlmLHZvXV{0$=bPa%Hz2PG!8Ap?;9 zuhmtV!dLF2im`}7DPG{wZ}*Blx{FT%eL=Co2E7ZZfv}qR^iw2gx3I0t^_)a7J0ao( zS3J(Payf8E(tbA~_A^}!=!BXa-jmMX+2emEVOpRd5t@?!vnS<+7HYzFexe#$myvgJ z)lvD3H1eGsB6pkTqPV8)Pui1<7Z)UTGv&njoBh)(Q4b`g0E?zI_4^FQnn-CTUINx6 z((>-EIqZmgqUzDn7jJAr2K{>eOyipE9k{e$;GF>!AW6Dj)%|yAqM9;LZ=QbG8NKUS z#ztszk$Ks1##$cx$+<`K!}^n=BX}wonZ`rV20ajZ(rSna!stSo@;0|x@2Ld*cL9~jg}A^0c&08BO%0OkWi{a2U$ zaXRV$!#_@TWyAb${6EG+U6lC`K{Ae{jf|m^c_a0$4c}33H7< zsCfTFl{a%Wwp0`QXw=%l%*GnP!ofN#J^NpW{9iok{|Aqx7`y!k58ylahghYEp8x*> D)1K8J literal 0 HcmV?d00001 diff --git a/quickstarts/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/quickstarts/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..1ee055dd3d9c76ced3be5d2c6cfd84f7351178c8 GIT binary patch literal 16635 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 KRxM%_^nU;X)OVi% literal 0 HcmV?d00001 diff --git a/quickstarts/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/quickstarts/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 0000000..0bedcf2 --- /dev/null +++ b/quickstarts/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "LaunchImage.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/quickstarts/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/quickstarts/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/quickstarts/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/quickstarts/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/quickstarts/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/quickstarts/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/quickstarts/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/quickstarts/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 0000000..89c2725 --- /dev/null +++ b/quickstarts/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# Launch Screen Assets + +You can customize the launch screen with your own desired assets by replacing the image files in this directory. + +You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/quickstarts/flutter/ios/Runner/Base.lproj/LaunchScreen.storyboard b/quickstarts/flutter/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..f2e259c --- /dev/null +++ b/quickstarts/flutter/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/quickstarts/flutter/ios/Runner/Base.lproj/Main.storyboard b/quickstarts/flutter/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 0000000..f3c2851 --- /dev/null +++ b/quickstarts/flutter/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/quickstarts/flutter/ios/Runner/Info.plist b/quickstarts/flutter/ios/Runner/Info.plist new file mode 100644 index 0000000..26fe2bb --- /dev/null +++ b/quickstarts/flutter/ios/Runner/Info.plist @@ -0,0 +1,75 @@ + + + + + CADisableMinimumFrameDurationOnPhone + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Quickstart + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + flutter_quickstart + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneClassName + UIWindowScene + UISceneConfigurationName + flutter + UISceneDelegateClassName + $(PRODUCT_MODULE_NAME).SceneDelegate + UISceneStoryboardFile + Main + + + + + UIApplicationSupportsIndirectInputEvents + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + + + diff --git a/quickstarts/flutter/ios/Runner/Runner-Bridging-Header.h b/quickstarts/flutter/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 0000000..308a2a5 --- /dev/null +++ b/quickstarts/flutter/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/quickstarts/flutter/ios/Runner/Runner.entitlements b/quickstarts/flutter/ios/Runner/Runner.entitlements new file mode 100644 index 0000000..6ba0b71 --- /dev/null +++ b/quickstarts/flutter/ios/Runner/Runner.entitlements @@ -0,0 +1,10 @@ + + + + + com.apple.developer.associated-domains + + webcredentials:your-thunderid-domain.example + + + diff --git a/quickstarts/flutter/ios/Runner/SceneDelegate.swift b/quickstarts/flutter/ios/Runner/SceneDelegate.swift new file mode 100644 index 0000000..b9ce8ea --- /dev/null +++ b/quickstarts/flutter/ios/Runner/SceneDelegate.swift @@ -0,0 +1,6 @@ +import Flutter +import UIKit + +class SceneDelegate: FlutterSceneDelegate { + +} diff --git a/quickstarts/flutter/ios/RunnerTests/RunnerTests.swift b/quickstarts/flutter/ios/RunnerTests/RunnerTests.swift new file mode 100644 index 0000000..86a7c3b --- /dev/null +++ b/quickstarts/flutter/ios/RunnerTests/RunnerTests.swift @@ -0,0 +1,12 @@ +import Flutter +import UIKit +import XCTest + +class RunnerTests: XCTestCase { + + func testExample() { + // If you add code to the Runner application, consider adding tests here. + // See https://developer.apple.com/documentation/xctest for more information about using XCTest. + } + +} diff --git a/quickstarts/flutter/lib/app.dart b/quickstarts/flutter/lib/app.dart new file mode 100644 index 0000000..0b5631a --- /dev/null +++ b/quickstarts/flutter/lib/app.dart @@ -0,0 +1,63 @@ +// Copyright 2026 The ThunderID Authors +// SPDX-License-Identifier: Apache-2.0 + +import 'package:flutter/material.dart'; +import 'package:thunderid_flutter/thunderid_flutter.dart'; +import 'screens/auth_screen.dart'; +import 'screens/home_screen.dart'; + +class QuickstartApp extends StatelessWidget { + const QuickstartApp({super.key}); + + @override + Widget build(BuildContext context) { + return MaterialApp( + title: 'ThunderID Quickstart', + theme: ThemeData( + colorSchemeSeed: const Color(0xFF3688FF), + useMaterial3: true, + ), + home: const _RootScreen(), + ); + } +} + +class _RootScreen extends StatelessWidget { + const _RootScreen(); + + @override + Widget build(BuildContext context) { + final thunder = ThunderIDProvider.of(context); + + if (thunder.isLoading) { + return const Scaffold( + body: Center( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + CircularProgressIndicator(), + SizedBox(height: 12), + Text('Starting ThunderID…'), + ], + ), + ), + ); + } + + if (thunder.error != null) { + return Scaffold( + body: Center( + child: Padding( + padding: const EdgeInsets.all(24), + child: Text( + 'Configuration error: ${thunder.error}\n\nCheck your .env values.', + textAlign: TextAlign.center, + ), + ), + ), + ); + } + + return thunder.isSignedIn ? const HomeScreen() : const AuthScreen(); + } +} diff --git a/quickstarts/flutter/lib/main.dart b/quickstarts/flutter/lib/main.dart new file mode 100644 index 0000000..a852e44 --- /dev/null +++ b/quickstarts/flutter/lib/main.dart @@ -0,0 +1,30 @@ +// Copyright 2026 The ThunderID Authors +// SPDX-License-Identifier: Apache-2.0 + +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_dotenv/flutter_dotenv.dart'; +import 'package:thunderid_flutter/thunderid_flutter.dart'; +import 'app.dart'; + +void main() async { + WidgetsFlutterBinding.ensureInitialized(); + await dotenv.load(); + runApp( + ThunderIDProvider( + config: ThunderIDConfig( + baseUrl: dotenv.env['THUNDERID_BASE_URL']!, + applicationId: dotenv.env['THUNDERID_APP_ID'], + scopes: const ['openid', 'profile', 'email'], + attestationEnabled: + dotenv.env['THUNDERID_ATTESTATION_ENABLED']?.toLowerCase() == 'true', + cloudProjectNumber: + int.tryParse(dotenv.env['THUNDERID_CLOUD_PROJECT_NUMBER'] ?? ''), + // Local ThunderID instances serve a self-signed certificate, which Android + // rejects. Debug builds only; release builds keep strict TLS. + allowInsecureConnections: kDebugMode, + ), + child: const QuickstartApp(), + ), + ); +} diff --git a/quickstarts/flutter/lib/screens/auth_screen.dart b/quickstarts/flutter/lib/screens/auth_screen.dart new file mode 100644 index 0000000..e3b24b8 --- /dev/null +++ b/quickstarts/flutter/lib/screens/auth_screen.dart @@ -0,0 +1,328 @@ +// Copyright 2026 The ThunderID Authors +// SPDX-License-Identifier: Apache-2.0 + +import 'package:flutter/material.dart'; +import 'package:flutter_dotenv/flutter_dotenv.dart'; +import 'package:thunderid_flutter/thunderid_flutter.dart'; + +class AuthScreen extends StatefulWidget { + const AuthScreen({super.key}); + + @override + State createState() => _AuthScreenState(); +} + +class _AuthScreenState extends State { + static const _blue = Color(0xFF3688FF); + static const _muted = Color(0xFF5A7085); + static const _darkBg = Color(0xFF080f1c); + static const _lightBg = Color(0xFFF7F9FC); + + static const _featureTags = ['OAuth 2.0', 'PKCE', 'JWT', 'MFA', 'SSO']; + + void _showSheet(BuildContext context, String mode) { + showModalBottomSheet( + context: context, + isScrollControlled: true, + backgroundColor: Colors.transparent, + builder: (_) => _AuthSheet(initialMode: mode), + ); + } + + @override + Widget build(BuildContext context) { + final brightness = Theme.of(context).brightness; + final isDark = brightness == Brightness.dark; + final bgColor = isDark ? _darkBg : _lightBg; + final textColor = isDark ? Colors.white : const Color(0xFF05213F); + + const logoHeight = 72.0; + const logoWidth = logoHeight * (207 / 257); + + return Scaffold( + backgroundColor: bgColor, + body: Stack( + children: [ + SafeArea( + child: Column( + children: [ + // ── Identity section ──────────────────────────────────────── + Expanded( + child: Center( + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 28), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + CustomPaint( + painter: _TdMarkPainter(dark: isDark), + size: const Size(logoWidth, logoHeight), + ), + const SizedBox(height: 28), + Text( + 'Authentication for developers.', + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 28, + fontWeight: FontWeight.bold, + letterSpacing: -1.4, + color: textColor, + height: 1.2, + ), + ), + const SizedBox(height: 12), + const Text( + 'OAuth 2.0, PKCE, MFA, and JWT - out of the box in minutes.', + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 15, + color: _muted, + height: 1.5, + ), + ), + const SizedBox(height: 20), + SizedBox( + height: 36, + child: SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + children: _featureTags.map((tag) { + return Padding( + padding: const EdgeInsets.only(right: 8), + child: Container( + padding: const EdgeInsets.symmetric( + horizontal: 12, vertical: 6), + decoration: BoxDecoration( + border: Border.all( + color: _blue.withValues(alpha: 0.4), + ), + borderRadius: BorderRadius.circular(20), + ), + child: Text( + tag, + style: const TextStyle( + fontSize: 12, + color: _blue, + fontWeight: FontWeight.w500, + ), + ), + ), + ); + }).toList(), + ), + ), + ), + ], + ), + ), + ), + ), + + // ── Bottom CTAs ───────────────────────────────────────────── + Padding( + padding: const EdgeInsets.fromLTRB(24, 0, 24, 48), + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + ElevatedButton.icon( + onPressed: () => _showSheet(context, 'signup'), + icon: const Icon(Icons.arrow_forward, size: 18), + label: const Text('Get started'), + style: ElevatedButton.styleFrom( + backgroundColor: _blue, + foregroundColor: Colors.white, + minimumSize: const Size.fromHeight(52), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12), + ), + textStyle: const TextStyle( + fontSize: 16, + fontWeight: FontWeight.w600, + ), + ), + ), + const SizedBox(height: 12), + OutlinedButton( + onPressed: () => _showSheet(context, 'login'), + style: OutlinedButton.styleFrom( + foregroundColor: _blue, + side: const BorderSide(color: _blue), + minimumSize: const Size.fromHeight(52), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12), + ), + textStyle: const TextStyle( + fontSize: 16, + fontWeight: FontWeight.w600, + ), + ), + child: const Text('Sign in'), + ), + ], + ), + ), + ], + ), + ), + ], + ), + ); + } +} + +// ───────────────────────────────────────────────────────────────────────────── +// Auth bottom sheet +// ───────────────────────────────────────────────────────────────────────────── + +class _AuthSheet extends StatefulWidget { + final String initialMode; + const _AuthSheet({required this.initialMode}); + + @override + State<_AuthSheet> createState() => _AuthSheetState(); +} + +class _AuthSheetState extends State<_AuthSheet> { + late String _mode; + + @override + void initState() { + super.initState(); + _mode = widget.initialMode; + } + + @override + Widget build(BuildContext context) { + final applicationId = dotenv.env['THUNDERID_APP_ID'] ?? ''; + final brightness = Theme.of(context).brightness; + final isDark = brightness == Brightness.dark; + final sheetBg = isDark ? const Color(0xFF0d1627) : Colors.white; + + return DraggableScrollableSheet( + initialChildSize: 0.85, + minChildSize: 0.5, + maxChildSize: 0.95, + expand: false, + builder: (ctx, scrollController) { + return Container( + decoration: BoxDecoration( + color: sheetBg, + borderRadius: const BorderRadius.vertical(top: Radius.circular(20)), + ), + child: Column( + children: [ + const SizedBox(height: 12), + Container( + width: 36, + height: 4, + decoration: BoxDecoration( + color: Colors.grey.withValues(alpha: 0.3), + borderRadius: BorderRadius.circular(2), + ), + ), + const SizedBox(height: 8), + Expanded( + child: SingleChildScrollView( + controller: scrollController, + padding: const EdgeInsets.fromLTRB(24, 8, 24, 32), + child: _buildSheetContent(ctx, applicationId), + ), + ), + ], + ), + ); + }, + ); + } + + Widget _buildSheetContent(BuildContext context, String applicationId) { + // The bottom sheet is pushed via the Navigator, so it doesn't automatically dismiss + // just because the app's root widget swaps from AuthScreen to HomeScreen once signed in β€” + // it must be popped explicitly once the flow completes, or it's left stuck showing its + // final "complete" spinner on top of the (already rendered) home screen underneath. + switch (_mode) { + case 'login': + return SignIn( + applicationId: applicationId, + onSuccess: (_) => Navigator.of(context).pop(), + ); + case 'signup': + return SignUp( + applicationId: applicationId, + onSuccess: () => Navigator.of(context).pop(), + ); + default: + return const SizedBox.shrink(); + } + } +} + +// ───────────────────────────────────────────────────────────────────────────── +// ThunderID logo mark painter +// ───────────────────────────────────────────────────────────────────────────── + +class _TdMarkPainter extends CustomPainter { + final bool dark; + const _TdMarkPainter({required this.dark}); + + @override + void paint(Canvas canvas, Size size) { + final scale = size.height / 257; + + canvas.save(); + canvas.scale(scale, scale); + + // Path 1 β€” dark fill (onSurface color) + final darkPaint = Paint() + ..color = dark ? Colors.white : const Color(0xFF05213F) + ..style = PaintingStyle.fill; + + final path1 = Path() + ..moveTo(55.4763, 26.4391) + ..lineTo(58.8866, 0) + ..lineTo(0, 0) + ..lineTo(0, 26.4391) + ..close(); + + canvas.drawPath(path1, darkPaint); + + // Path 2 & 3 β€” blue fill + final bluePaint = Paint() + ..color = const Color(0xFF3688FF) + ..style = PaintingStyle.fill; + + final path2 = Path() + ..moveTo(39.8438, 147.407) + ..lineTo(49.5455, 72.2839) + ..lineTo(0, 72.2839) + ..lineTo(0, 256.743) + ..lineTo(60.5602, 256.743) + ..lineTo(80.048, 147.407) + ..lineTo(39.8438, 147.407) + ..close(); + + canvas.drawPath(path2, bluePaint); + + final path3 = Path() + ..moveTo(192.42, 59.361) + ..cubicTo(182.782, 40.2307, 168.929, 25.5705, 150.903, 15.3381) + ..cubicTo(145.501, 12.2662, 139.761, 9.6605, 133.703, 7.5208) + ..lineTo(115.401, 103.702) + ..lineTo(159.757, 103.702) + ..lineTo(76.2987, 256.743) + ..lineTo(83.3735, 256.743) + ..cubicTo(109.449, 256.743, 131.69, 251.574, 150.14, 241.236) + ..cubicTo(168.569, 230.897, 182.634, 216.131, 192.356, 196.959) + ..cubicTo(202.058, 177.765, 206.909, 154.8, 206.909, 128.043) + ..cubicTo(206.909, 101.286, 202.079, 78.5123, 192.441, 59.3821) + ..lineTo(192.42, 59.361) + ..close(); + + canvas.drawPath(path3, bluePaint); + + canvas.restore(); + } + + @override + bool shouldRepaint(_TdMarkPainter oldDelegate) => oldDelegate.dark != dark; +} diff --git a/quickstarts/flutter/lib/screens/home_screen.dart b/quickstarts/flutter/lib/screens/home_screen.dart new file mode 100644 index 0000000..ec7f8d7 --- /dev/null +++ b/quickstarts/flutter/lib/screens/home_screen.dart @@ -0,0 +1,1066 @@ +// Copyright 2026 The ThunderID Authors +// SPDX-License-Identifier: Apache-2.0 + +import 'dart:async'; +import 'dart:convert'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:thunderid_flutter/thunderid_flutter.dart'; +import 'package:url_launcher/url_launcher.dart'; + +class HomeScreen extends StatefulWidget { + const HomeScreen({super.key}); + + @override + State createState() => _HomeScreenState(); +} + +class _HomeScreenState extends State { + String _screen = 'home'; + + @override + Widget build(BuildContext context) { + switch (_screen) { + case 'profile': + return _ProfileScreen(onBack: () => setState(() => _screen = 'home')); + case 'token': + return _TokenScreen(onBack: () => setState(() => _screen = 'home')); + default: + return _HomeTabScreen( + onNavigate: (screen) => setState(() => _screen = screen), + ); + } + } +} + +// ───────────────────────────────────────────────────────────────────────────── +// Design constants +// ───────────────────────────────────────────────────────────────────────────── + +const _kBlue = Color(0xFF3688FF); +const _kGreen = Color(0xFF2FBD6B); +const _kRed = Color(0xFFD95757); +const _kMuted = Color(0xFF5A7085); +const _kTextDark = Color(0xFF05213F); +const _kCodeBg = Color(0xFF0b1120); + +// ───────────────────────────────────────────────────────────────────────────── +// Home tab +// ───────────────────────────────────────────────────────────────────────────── + +/// Converts a raw claim value (typically a JSON number bridged from the +/// platform channel) into whole seconds-since-epoch, or `null` if the claim +/// is absent or not numeric. +int? _epochSecondsFromClaim(dynamic value) { + if (value is num) return value.toInt(); + return null; +} + +/// Formats a unix-seconds timestamp as a local `h:mm AM/PM` time string. +String _formatLocalTime(int? epochSeconds) { + if (epochSeconds == null) return 'β€”'; + final dt = DateTime.fromMillisecondsSinceEpoch(epochSeconds * 1000); + var hour12 = dt.hour % 12; + if (hour12 == 0) hour12 = 12; + final minute = dt.minute.toString().padLeft(2, '0'); + final period = dt.hour >= 12 ? 'PM' : 'AM'; + return '$hour12:$minute $period'; +} + +/// Formats the number of whole seconds remaining until session expiry. +/// Returns `β€”` once the claim is unavailable or the session has expired. +String _formatCountdown(int? secondsLeft) { + if (secondsLeft == null || secondsLeft <= 0) return 'β€”'; + if (secondsLeft < 3600) { + final minutes = secondsLeft ~/ 60; + final seconds = secondsLeft % 60; + return '${minutes}m ${seconds}s'; + } + final hours = secondsLeft ~/ 3600; + final minutes = (secondsLeft % 3600) ~/ 60; + return '${hours}h ${minutes}m'; +} + +/// Returns a time-of-day-aware greeting, e.g. "Good afternoon, Alex.". +String _greeting(String name) { + final hour = DateTime.now().hour; + final String timeOfDay; + if (hour < 12) { + timeOfDay = 'morning'; + } else if (hour < 17) { + timeOfDay = 'afternoon'; + } else { + timeOfDay = 'evening'; + } + return 'Good $timeOfDay, $name.'; +} + +const List _kWeekdayNames = [ + 'Monday', + 'Tuesday', + 'Wednesday', + 'Thursday', + 'Friday', + 'Saturday', + 'Sunday', +]; + +const List _kMonthNames = [ + 'January', + 'February', + 'March', + 'April', + 'May', + 'June', + 'July', + 'August', + 'September', + 'October', + 'November', + 'December', +]; + +/// Formats today's date as e.g. "FRIDAY, JULY 31". +String _dateLabel() { + final now = DateTime.now(); + final weekday = _kWeekdayNames[now.weekday - 1]; + final month = _kMonthNames[now.month - 1]; + return '$weekday, $month ${now.day}'.toUpperCase(); +} + +class _HomeTabScreen extends StatefulWidget { + final void Function(String) onNavigate; + const _HomeTabScreen({required this.onNavigate}); + + @override + State<_HomeTabScreen> createState() => _HomeTabScreenState(); +} + +class _HomeTabScreenState extends State<_HomeTabScreen> { + Timer? _ticker; + int _nowSeconds = DateTime.now().millisecondsSinceEpoch ~/ 1000; + + @override + void initState() { + super.initState(); + _ticker = Timer.periodic(const Duration(seconds: 1), (_) { + if (mounted) { + setState(() { + _nowSeconds = DateTime.now().millisecondsSinceEpoch ~/ 1000; + }); + } + }); + } + + @override + void dispose() { + _ticker?.cancel(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final thunder = ThunderIDProvider.of(context); + final user = thunder.user; + final givenName = user?['given_name'] as String?; + final emailPrefix = user?.email?.split('@').first; + final greetingName = (givenName != null && givenName.isNotEmpty) + ? givenName + : (emailPrefix != null && emailPrefix.isNotEmpty) + ? emailPrefix + : 'there'; + final authTime = _epochSecondsFromClaim(user?['auth_time']); + final exp = _epochSecondsFromClaim(user?['exp']); + final secondsLeft = exp != null ? exp - _nowSeconds : null; + final organisation = thunder.widget.config.organizationHandle ?? 'Default'; + + return Scaffold( + body: SingleChildScrollView( + padding: + const EdgeInsets.only(top: 72, left: 20, right: 20, bottom: 48), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // ── Hero: avatar + (date/session row, greeting row) ───────────── + Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + const UserAvatar(size: 52), + const SizedBox(width: 14), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Text( + _dateLabel(), + style: const TextStyle( + fontSize: 12, + fontWeight: FontWeight.bold, + color: _kMuted, + letterSpacing: 1.0, + ), + ), + const SizedBox(width: 6), + Container( + width: 3, + height: 3, + decoration: BoxDecoration( + color: _kMuted.withValues(alpha: 0.4), + shape: BoxShape.circle, + ), + ), + const SizedBox(width: 6), + Container( + width: 6, + height: 6, + decoration: const BoxDecoration( + color: _kGreen, + shape: BoxShape.circle, + ), + ), + const SizedBox(width: 5), + const Text( + 'Session active', + style: TextStyle( + fontSize: 12, + color: _kGreen, + fontWeight: FontWeight.w500, + ), + ), + ], + ), + const SizedBox(height: 4), + Text( + _greeting(greetingName), + style: const TextStyle( + fontSize: 18, + fontWeight: FontWeight.bold, + color: _kTextDark, + ), + ), + ], + ), + ), + ], + ), + + const SizedBox(height: 20), + const Divider(), + const SizedBox(height: 16), + + // ── Stats row ────────────────────────────────────────────────── + IntrinsicHeight( + child: Row( + children: [ + _StatCell( + label: 'Signed in at', value: _formatLocalTime(authTime)), + const VerticalDivider(width: 32), + _StatCell( + label: 'Session expires in', + value: _formatCountdown(secondsLeft)), + const VerticalDivider(width: 32), + _StatCell(label: 'Organisation', value: organisation), + ], + ), + ), + + const SizedBox(height: 28), + + // ── What's next ──────────────────────────────────────────────── + Text( + 'WHAT\'S NEXT', + style: TextStyle( + fontSize: 10, + fontWeight: FontWeight.bold, + letterSpacing: 1.0, + color: Theme.of(context).colorScheme.onSurfaceVariant, + ), + ), + const SizedBox(height: 4), + + const _StepRow( + number: '01', + title: 'Explore use cases', + subtitle: + 'See what you can build β€” auth flows for web, mobile, APIs, and agents.', + href: 'https://thunderid.dev/docs/next/use-cases/overview/', + ), + const _StepRow( + number: '02', + title: 'Learn about flows', + subtitle: + 'Understand how authorization code, PKCE, client credentials, and ' + 'device flows work.', + href: + 'https://thunderid.dev/docs/next/guides/flows/what-are-flows/', + ), + const _StepRow( + number: '03', + title: 'Style your experience', + subtitle: + 'Customize the login UI, branding, and email templates to match ' + 'your product.', + href: 'https://thunderid.dev/docs/next/guides/design/overview/', + ), + const _StepRow( + number: '04', + title: 'Explore SDK APIs', + subtitle: + 'Full Flutter SDK reference β€” widgets, hooks, and configuration options.', + href: 'https://thunderid.dev/docs/next/sdks/flutter/overview/', + ), + + const SizedBox(height: 8), + + // ── Action list ──────────────────────────────────────────────── + const Divider(), + _ActionRow( + icon: Icons.person_outline, + label: 'Manage Account', + onTap: () => widget.onNavigate('profile'), + ), + const Divider(), + _ActionRow( + icon: Icons.key_outlined, + label: 'Token debug', + onTap: () => widget.onNavigate('token'), + ), + const Divider(), + + // ── Sign out ─────────────────────────────────────────────────── + BaseSignOutButton( + builder: (ctx, isLoading) => InkWell( + onTap: null, + child: Padding( + padding: const EdgeInsets.symmetric(vertical: 14), + child: Row( + children: [ + isLoading + ? const SizedBox( + width: 20, + height: 20, + child: CircularProgressIndicator( + strokeWidth: 2, + color: _kRed, + ), + ) + : const Icon(Icons.logout, color: _kRed, size: 20), + const SizedBox(width: 14), + const Text( + 'Sign out', + style: TextStyle( + fontSize: 15, + color: _kRed, + fontWeight: FontWeight.w500, + ), + ), + ], + ), + ), + ), + ), + const Divider(), + ], + ), + ), + ); + } +} + +class _StatCell extends StatelessWidget { + final String label; + final String value; + const _StatCell({required this.label, required this.value}); + + @override + Widget build(BuildContext context) { + return Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + value, + style: const TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, + color: _kTextDark, + ), + ), + const SizedBox(height: 2), + Text( + label, + style: const TextStyle(fontSize: 12, color: _kMuted), + ), + ], + ), + ); + } +} + +class _StepRow extends StatelessWidget { + final String number; + final String title; + final String subtitle; + final String href; + const _StepRow({ + required this.number, + required this.title, + required this.subtitle, + required this.href, + }); + + Future _open() async { + final uri = Uri.tryParse(href); + if (uri == null) return; + await launchUrl(uri, mode: LaunchMode.externalApplication); + } + + @override + Widget build(BuildContext context) { + return Column( + children: [ + const Divider(), + InkWell( + onTap: _open, + child: Padding( + padding: const EdgeInsets.symmetric(vertical: 12), + child: Row( + children: [ + Text( + number, + style: const TextStyle( + fontSize: 13, + fontWeight: FontWeight.bold, + color: _kBlue, + fontFamily: 'monospace', + ), + ), + const SizedBox(width: 16), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + title, + style: const TextStyle( + fontSize: 15, + fontWeight: FontWeight.w600, + color: _kTextDark, + ), + ), + const SizedBox(height: 2), + Text( + subtitle, + style: const TextStyle(fontSize: 13, color: _kMuted), + ), + ], + ), + ), + const Icon(Icons.chevron_right, color: _kMuted, size: 20), + ], + ), + ), + ), + ], + ); + } +} + +class _ActionRow extends StatelessWidget { + final IconData icon; + final String label; + final VoidCallback onTap; + const _ActionRow({ + required this.icon, + required this.label, + required this.onTap, + }); + + @override + Widget build(BuildContext context) { + return InkWell( + onTap: onTap, + child: Padding( + padding: const EdgeInsets.symmetric(vertical: 14), + child: Row( + children: [ + Icon(icon, size: 20, color: _kMuted), + const SizedBox(width: 14), + Expanded( + child: Text( + label, + style: const TextStyle( + fontSize: 15, + color: _kTextDark, + fontWeight: FontWeight.w500, + ), + ), + ), + const Icon(Icons.chevron_right, color: _kMuted, size: 20), + ], + ), + ), + ); + } +} + +// ───────────────────────────────────────────────────────────────────────────── +// Profile screen +// ───────────────────────────────────────────────────────────────────────────── + +/// Manage Account hub: a back link, then one navigation row per section. Each row pushes a +/// section screen holding the actual SDK component - the styled `UserProfile` and +/// `ChangeCredential` widgets carry their own presentation (see `internal/account_style.dart` +/// in the SDK), so neither this screen nor `_AccountSectionScreen` hand-roll any of it. +class _ProfileScreen extends StatelessWidget { + final VoidCallback onBack; + const _ProfileScreen({required this.onBack}); + + @override + Widget build(BuildContext context) { + return Scaffold( + body: SafeArea( + child: SingleChildScrollView( + padding: const EdgeInsets.symmetric(horizontal: 20), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const SizedBox(height: 16), + _BackChevron(label: 'Home', onTap: onBack), + const SizedBox(height: 8), + const Text( + 'Manage Account', + style: TextStyle(fontSize: 26, fontWeight: FontWeight.bold, color: _kTextDark), + ), + const SizedBox(height: 20), + _AccountSettingsRow( + icon: Icons.person_outline, + label: 'Personal info', + onTap: () => _openSection( + context, + 'Personal info', + UserProfile( + onSaved: () => ScaffoldMessenger.of(context).showSnackBar( + const SnackBar(content: Text('Profile saved')), + ), + ), + ), + ), + _AccountSettingsRow( + icon: Icons.shield_outlined, + label: 'Security', + onTap: () => _openSection(context, 'Security', const ChangeCredential()), + ), + ], + ), + ), + ), + ); + } + + void _openSection(BuildContext context, String title, Widget child) { + Navigator.of(context).push( + MaterialPageRoute( + builder: (context) => _AccountSectionScreen(title: title, child: child), + ), + ); + } +} + +class _AccountSettingsRow extends StatelessWidget { + final IconData icon; + final String label; + final VoidCallback onTap; + + const _AccountSettingsRow({required this.icon, required this.label, required this.onTap}); + + @override + Widget build(BuildContext context) { + return InkWell( + onTap: onTap, + child: Padding( + padding: const EdgeInsets.symmetric(vertical: 16), + child: Row( + children: [ + Icon(icon, color: _kTextDark, size: 22), + const SizedBox(width: 16), + Expanded(child: Text(label, style: const TextStyle(fontSize: 16, color: _kTextDark))), + const Icon(Icons.chevron_right, color: _kMuted, size: 20), + ], + ), + ), + ); + } +} + +class _AccountSectionScreen extends StatelessWidget { + final String title; + final Widget child; + + const _AccountSectionScreen({required this.title, required this.child}); + + @override + Widget build(BuildContext context) { + return Scaffold( + body: SafeArea( + child: SingleChildScrollView( + padding: const EdgeInsets.symmetric(horizontal: 20), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const SizedBox(height: 16), + _BackChevron(label: 'Manage Account', onTap: () => Navigator.of(context).pop()), + const SizedBox(height: 8), + Text( + title, + style: const TextStyle(fontSize: 22, fontWeight: FontWeight.bold, color: _kTextDark), + ), + const SizedBox(height: 20), + child, + ], + ), + ), + ), + ); + } +} + +/// Back control used by every screen nested under the home tab: a chevron followed by the name +/// of the screen it returns to, matching the Android/iOS SDKs' "β€Ή Home" convention. +/// +/// It carries a fixed Semantics id rather than relying on [label] text for E2E targeting, since +/// that text differs per screen. One shared id is unambiguous here: exactly one of these is ever +/// on screen at a time, since each is a different screen's own back control in a single +/// push/pop chain, never siblings in the same view. +class _BackChevron extends StatelessWidget { + final String label; + final VoidCallback onTap; + const _BackChevron({required this.label, required this.onTap}); + + @override + Widget build(BuildContext context) { + return Semantics( + identifier: 'thunderid-nav-back', + // The chevron glyph carries its own built-in padding, so the tap target's box left edge + // doesn't line up with the text below it. Shifting the whole control left compensates, + // rather than a negative Padding, which Flutter rejects. + child: Transform.translate( + offset: const Offset(-6, 0), + child: InkWell( + key: const Key('thunderid-nav-back'), + onTap: onTap, + borderRadius: BorderRadius.circular(8), + child: Padding( + padding: const EdgeInsets.only(top: 6, bottom: 6, right: 8), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + const Icon(Icons.chevron_left, color: _kBlue, size: 26), + const SizedBox(width: 2), + Text( + label, + style: const TextStyle( + color: _kBlue, + fontSize: 15, + fontWeight: FontWeight.w500, + ), + ), + ], + ), + ), + ), + ), + ); + } +} + +// ───────────────────────────────────────────────────────────────────────────── +// Token debug screen +// ───────────────────────────────────────────────────────────────────────────── + +class _TokenScreen extends StatefulWidget { + final VoidCallback onBack; + const _TokenScreen({required this.onBack}); + + @override + State<_TokenScreen> createState() => _TokenScreenState(); +} + +class _TokenScreenState extends State<_TokenScreen> { + String? _token; + String _payload = '{}'; + bool _loading = true; + String? _error; + + @override + void didChangeDependencies() { + super.didChangeDependencies(); + if (_loading) { + _loadToken(); + } + } + + Future _loadToken() async { + final thunder = ThunderIDProvider.of(context); + try { + final tok = await thunder.client.getAccessToken(); + if (!mounted) return; + setState(() { + _token = tok; + _payload = _decodePayload(tok); + _loading = false; + }); + } catch (e) { + if (!mounted) return; + setState(() { + _error = e.toString(); + _loading = false; + }); + } + } + + String _decodePayload(String token) { + try { + final parts = token.split('.'); + if (parts.length != 3) return '{}'; + final padded = parts[1].padRight((parts[1].length + 3) ~/ 4 * 4, '='); + return utf8.decode(base64Url.decode(padded)); + } catch (_) { + return '{}'; + } + } + + Widget _buildExpiryBadge() { + try { + final map = jsonDecode(_payload) as Map; + final exp = map['exp']; + if (exp == null) return const SizedBox.shrink(); + final expSecs = (exp as num).toInt(); + final nowSecs = DateTime.now().millisecondsSinceEpoch ~/ 1000; + final diffSecs = expSecs - nowSecs; + if (diffSecs <= 0) { + return const _Badge(label: 'Expired', color: _kRed); + } + final mins = (diffSecs / 60).ceil(); + return _Badge(label: '$mins min', color: _kGreen); + } catch (_) { + return const SizedBox.shrink(); + } + } + + String _issuer() { + try { + final map = jsonDecode(_payload) as Map; + return (map['iss'] as String?) ?? 'β€”'; + } catch (_) { + return 'β€”'; + } + } + + String _scopes() { + try { + final map = jsonDecode(_payload) as Map; + final scp = map['scp'] ?? map['scope']; + if (scp == null) return 'β€”'; + if (scp is List) return scp.join(', '); + return scp.toString(); + } catch (_) { + return 'β€”'; + } + } + + @override + Widget build(BuildContext context) { + return Scaffold( + body: SafeArea( + child: SingleChildScrollView( + padding: const EdgeInsets.symmetric(horizontal: 20), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // ── Back button ────────────────────────────────────────────── + const SizedBox(height: 16), + _BackChevron(label: 'Home', onTap: widget.onBack), + + const SizedBox(height: 8), + + // ── Title row ──────────────────────────────────────────────── + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Token debug', + style: TextStyle( + fontSize: 22, + fontWeight: FontWeight.bold, + color: _kTextDark, + ), + ), + SizedBox(height: 2), + Text( + 'Access token and claims', + style: TextStyle(fontSize: 13, color: _kMuted), + ), + ], + ), + ), + if (!_loading && _token != null) _buildExpiryBadge(), + ], + ), + + const SizedBox(height: 20), + + if (_loading) + const Center( + child: Padding( + padding: EdgeInsets.all(40), + child: CircularProgressIndicator(color: _kBlue), + ), + ) + else if (_error != null) + Text( + 'Error: $_error', + style: const TextStyle(color: _kRed, fontSize: 13), + ) + else ...[ + // ── JWT token display ──────────────────────────────────── + Container( + width: double.infinity, + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: _kCodeBg, + borderRadius: BorderRadius.circular(10), + ), + child: _token != null + ? _buildJwtRichText(_token!) + : const SizedBox.shrink(), + ), + + const SizedBox(height: 8), + + // ── Copy button ────────────────────────────────────────── + Align( + alignment: Alignment.centerRight, + child: TextButton.icon( + onPressed: () async { + if (_token != null) { + await Clipboard.setData(ClipboardData(text: _token!)); + if (context.mounted) { + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar( + content: Text('Token copied to clipboard'), + duration: Duration(seconds: 2), + ), + ); + } + } + }, + icon: const Icon(Icons.copy, size: 14, color: _kMuted), + label: const Text( + 'Copy', + style: TextStyle(fontSize: 13, color: _kMuted), + ), + ), + ), + + const SizedBox(height: 16), + + // ── JWT Payload section ────────────────────────────────── + const Text( + 'JWT PAYLOAD', + style: TextStyle( + fontSize: 10, + fontWeight: FontWeight.bold, + letterSpacing: 1.0, + color: _kMuted, + ), + ), + const SizedBox(height: 8), + Container( + width: double.infinity, + padding: const EdgeInsets.all(14), + decoration: BoxDecoration( + color: _kCodeBg, + borderRadius: BorderRadius.circular(10), + ), + child: SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Text( + _prettyJson(_payload), + style: const TextStyle( + fontFamily: 'monospace', + fontSize: 12, + color: Color(0xFF79c0ff), + height: 1.5, + ), + ), + ), + ), + + const SizedBox(height: 20), + + // ── Metadata rows ──────────────────────────────────────── + const Text( + 'METADATA', + style: TextStyle( + fontSize: 10, + fontWeight: FontWeight.bold, + letterSpacing: 1.0, + color: _kMuted, + ), + ), + const SizedBox(height: 8), + _MetaRow(label: 'Issuer', value: _issuer()), + const Divider(), + _MetaRow(label: 'Scopes', value: _scopes()), + const Divider(), + ], + + const SizedBox(height: 40), + ], + ), + ), + ), + ); + } + + Widget _buildJwtRichText(String token) { + final parts = token.split('.'); + if (parts.length != 3) { + return Text( + token, + style: const TextStyle( + fontFamily: 'monospace', + fontSize: 11, + color: Colors.white70, + ), + ); + } + return RichText( + text: TextSpan( + children: [ + TextSpan( + text: parts[0], + style: const TextStyle( + fontFamily: 'monospace', + fontSize: 11, + color: Color(0xFFff7b72), + ), + ), + const TextSpan( + text: '.', + style: TextStyle( + fontFamily: 'monospace', + fontSize: 11, + color: Color(0xFF8b949e), + ), + ), + TextSpan( + text: parts[1], + style: const TextStyle( + fontFamily: 'monospace', + fontSize: 11, + color: Color(0xFF79c0ff), + ), + ), + const TextSpan( + text: '.', + style: TextStyle( + fontFamily: 'monospace', + fontSize: 11, + color: Color(0xFF8b949e), + ), + ), + TextSpan( + text: parts[2], + style: const TextStyle( + fontFamily: 'monospace', + fontSize: 11, + color: Color(0xFF3fb950), + ), + ), + ], + ), + ); + } + + String _prettyJson(String raw) { + try { + final obj = jsonDecode(raw); + const encoder = JsonEncoder.withIndent(' '); + return encoder.convert(obj); + } catch (_) { + return raw; + } + } +} + +class _Badge extends StatelessWidget { + final String label; + final Color color; + const _Badge({required this.label, required this.color}); + + @override + Widget build(BuildContext context) { + return Container( + padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 4), + decoration: BoxDecoration( + color: color.withValues(alpha: 0.12), + borderRadius: BorderRadius.circular(12), + border: Border.all(color: color.withValues(alpha: 0.3)), + ), + child: Text( + label, + style: TextStyle( + fontSize: 12, + color: color, + fontWeight: FontWeight.w600, + ), + ), + ); + } +} + +class _MetaRow extends StatelessWidget { + final String label; + final String value; + const _MetaRow({required this.label, required this.value}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.symmetric(vertical: 10), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox( + width: 80, + child: Text( + label, + style: const TextStyle( + fontSize: 13, + color: _kMuted, + fontWeight: FontWeight.w500, + ), + ), + ), + Expanded( + child: Text( + value, + style: const TextStyle( + fontSize: 13, + color: _kTextDark, + ), + ), + ), + ], + ), + ); + } +} diff --git a/quickstarts/flutter/lib/screens/profile_screen.dart b/quickstarts/flutter/lib/screens/profile_screen.dart new file mode 100644 index 0000000..bb57109 --- /dev/null +++ b/quickstarts/flutter/lib/screens/profile_screen.dart @@ -0,0 +1,29 @@ +// Copyright 2026 The ThunderID Authors +// SPDX-License-Identifier: Apache-2.0 + +import 'package:flutter/material.dart'; +import 'package:thunderid_flutter/thunderid_flutter.dart'; + +class ProfileScreen extends StatelessWidget { + const ProfileScreen({super.key}); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text('Edit Profile'), + centerTitle: false, + ), + body: SafeArea( + child: SingleChildScrollView( + padding: const EdgeInsets.all(24), + child: UserProfile( + onSaved: () => ScaffoldMessenger.of(context).showSnackBar( + const SnackBar(content: Text('Profile saved')), + ), + ), + ), + ), + ); + } +} diff --git a/quickstarts/flutter/pubspec.yaml b/quickstarts/flutter/pubspec.yaml new file mode 100644 index 0000000..bc397d8 --- /dev/null +++ b/quickstarts/flutter/pubspec.yaml @@ -0,0 +1,25 @@ +name: flutter_quickstart +description: ThunderID Flutter B2C sample β€” demonstrates sign-in, profile display, and sign-out. +version: 0.0.0+1 +publish_to: none + +environment: + sdk: ">=3.2.0 <4.0.0" + flutter: ">=3.16.0" + +dependencies: + flutter: + sdk: flutter + thunderid_flutter: ^1.2.0 + flutter_dotenv: ^5.1.0 + url_launcher: ^6.2.5 + +dev_dependencies: + flutter_test: + sdk: flutter + flutter_lints: ^3.0.0 + +flutter: + uses-material-design: true + assets: + - .env diff --git a/quickstarts/flutter/test/widget_test.dart b/quickstarts/flutter/test/widget_test.dart new file mode 100644 index 0000000..f2829ed --- /dev/null +++ b/quickstarts/flutter/test/widget_test.dart @@ -0,0 +1,48 @@ +// Copyright 2026 The ThunderID Authors +// SPDX-License-Identifier: Apache-2.0 + +import 'package:flutter_test/flutter_test.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:thunderid_flutter/thunderid_flutter.dart'; + +void main() { + TestWidgetsFlutterBinding.ensureInitialized(); + + setUp(() { + TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger + .setMockMethodCallHandler( + const MethodChannel('io.thunder/sdk'), + (call) async { + switch (call.method) { + case 'initialize': + return true; + case 'isSignedIn': + return false; + default: + return null; + } + }, + ); + }); + + tearDown(() { + TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger + .setMockMethodCallHandler(const MethodChannel('io.thunder/sdk'), null); + }); + + testWidgets('shows loading indicator while initializing', (tester) async { + await tester.pumpWidget( + const ThunderIDProvider( + config: ThunderIDConfig( + baseUrl: 'https://localhost:8090', + clientId: 'test', + ), + child: MaterialApp(home: Scaffold(body: Text('App'))), + ), + ); + // First frame: should show the child (ThunderIDProvider manages loading internally) + await tester.pump(); + expect(find.byType(MaterialApp), findsOneWidget); + }); +} diff --git a/quickstarts/flutter/thunderid-config/thunderid-config.yaml b/quickstarts/flutter/thunderid-config/thunderid-config.yaml new file mode 100644 index 0000000..950c5fe --- /dev/null +++ b/quickstarts/flutter/thunderid-config/thunderid-config.yaml @@ -0,0 +1,35 @@ +--- +resource_type: application +# Application used exclusively by the Flutter Quickstart E2E suite. It has no OAuth profile: the +# mobile SDKs authenticate app-natively via the Flow Execution API, so the sample app needs only +# the base URL and this application ID. +# +# The ID is fixed so the sample's Config.plist and the Maestro flows can be committed against a +# known value instead of discovering it at run time. +id: 019e5b10-1001-7a2b-9c3d-4e5f60718293 +ouHandle: default +name: Mobile Quickstart E2E App +description: Application for the ThunderID mobile SDK quickstart E2E suites +type: mobile +# A mobile application must normally prove its binary identity via platform attestation before it +# may initiate a flow directly, otherwise /flow/execute fails with FES-1016. Apple App Attest is +# unavailable in the iOS Simulator and Play Integrity requires real Play Services, so neither can +# be satisfied on the emulated devices this suite drives. devMode skips that check. +# +# Test-only. Never enable this on a real tenant: it removes the guarantee that the client +# initiating a flow is the genuine, unmodified app. +# +# NOTE: POST /import currently drops this block silently (it reports success, then stores +# attestation: null), so the Flutter SDK E2E suite (tests/e2e/run-e2e.sh in +# thunder-id/flutter-sdks) re-applies it over PUT /applications/{id}. Once the import path +# preserves it, that extra step can go. +attestation: + devMode: true +authFlowHandle: default-flow +# The suite registers a fresh user through the UI rather than relying on a seeded account, so +# self-service registration has to be enabled for this application. +registrationFlowHandle: default-flow +isRegistrationFlowEnabled: true +signOutFlowHandle: default-flow +allowedUserTypes: + - Person diff --git a/quickstarts/ios/.gitignore b/quickstarts/ios/.gitignore new file mode 100644 index 0000000..650dc8a --- /dev/null +++ b/quickstarts/ios/.gitignore @@ -0,0 +1,68 @@ +# Xcode +# +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + +## User settings +xcuserdata/ + +## Obj-C/Swift specific +*.hmap + +## App packaging +*.ipa +*.dSYM.zip +*.dSYM + +## Playgrounds +timeline.xctimeline +playground.xcworkspace + +# Swift Package Manager +# +# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. +# Packages/ +# Package.pins +# Package.resolved +# *.xcodeproj +# +# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata +# hence it is not needed unless you have added a package configuration file to your project +# .swiftpm + +.build/ + +# CocoaPods +# +# We recommend against adding the Pods directory to your .gitignore. However +# you should judge for yourself, the pros and cons are mentioned at: +# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control +# +# Pods/ +# +# Add this line if you want to avoid checking in source code from the Xcode workspace +# *.xcworkspace + +# Carthage +# +# Add this line if you want to avoid checking in source code from Carthage dependencies. +# Carthage/Checkouts + +Carthage/Build/ + +# fastlane +# +# It is recommended to not store the screenshots in the git repo. +# Instead, use fastlane to re-generate the screenshots whenever they are needed. +# For more information about the recommended setup visit: +# https://docs.fastlane.tools/best-practices/source-control/#source-control + +fastlane/report.xml +fastlane/Preview.html +fastlane/screenshots/**/*.png +fastlane/test_output + +# OS generated files +.DS_Store + +# Local config (use Config.plist.example as template) +Sources/Config.plist diff --git a/quickstarts/ios/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata b/quickstarts/ios/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/quickstarts/ios/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/quickstarts/ios/.swiftpm/xcode/xcshareddata/xcschemes/Quickstart.xcscheme b/quickstarts/ios/.swiftpm/xcode/xcshareddata/xcschemes/Quickstart.xcscheme new file mode 100644 index 0000000..3a6ec35 --- /dev/null +++ b/quickstarts/ios/.swiftpm/xcode/xcshareddata/xcschemes/Quickstart.xcscheme @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/quickstarts/ios/Info.plist b/quickstarts/ios/Info.plist new file mode 100644 index 0000000..a82c0e5 --- /dev/null +++ b/quickstarts/ios/Info.plist @@ -0,0 +1,58 @@ + + + + + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleName + Quickstart + CFBundleDisplayName + Quickstart + CFBundlePackageType + APPL + LSRequiresIPhoneOS + + CFBundleShortVersionString + $(MARKETING_VERSION) + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + + UIApplicationSupportsIndirectInputEvents + + UILaunchScreen + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + CFBundleURLTypes + + + CFBundleURLSchemes + + dev.thunderid.Quickstart + + + + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + + + diff --git a/quickstarts/ios/Package.resolved b/quickstarts/ios/Package.resolved new file mode 100644 index 0000000..7ab754a --- /dev/null +++ b/quickstarts/ios/Package.resolved @@ -0,0 +1,14 @@ +{ + "pins" : [ + { + "identity" : "ios-sdks", + "kind" : "remoteSourceControl", + "location" : "https://github.com/thunder-id/ios-sdks", + "state" : { + "revision" : "9145551e7e712d24cd7d6a44d74f2f4c79742788", + "version" : "1.4.0" + } + } + ], + "version" : 2 +} diff --git a/quickstarts/ios/Package.swift b/quickstarts/ios/Package.swift new file mode 100644 index 0000000..5b39d25 --- /dev/null +++ b/quickstarts/ios/Package.swift @@ -0,0 +1,22 @@ +// swift-tools-version: 5.9 +// Copyright 2026 The ThunderID Authors +// SPDX-License-Identifier: Apache-2.0 +import PackageDescription + +let appTarget: Target = .executableTarget( + name: "Quickstart", + dependencies: [ + .product(name: "ThunderIDSwiftUI", package: "ios-sdks") + ], + path: "Sources", + resources: [.process("Config.plist")] +) + +let package = Package( + name: "Quickstart", + platforms: [.iOS(.v16), .macOS(.v13)], + dependencies: [ + .package(url: "https://github.com/thunder-id/ios-sdks", from: "1.4.0") + ], + targets: [appTarget] +) diff --git a/quickstarts/ios/Quickstart.xcodeproj/project.pbxproj b/quickstarts/ios/Quickstart.xcodeproj/project.pbxproj new file mode 100644 index 0000000..c2ad1d2 --- /dev/null +++ b/quickstarts/ios/Quickstart.xcodeproj/project.pbxproj @@ -0,0 +1,352 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 77; + objects = { + +/* Begin PBXBuildFile section */ + DEADBEEF000000000011DEAD /* ThunderIDSwiftUI in Frameworks */ = {isa = PBXBuildFile; productRef = DEADBEEF000000000010DEAD /* ThunderIDSwiftUI */; }; + DEADBEEF000000000012DEAD /* Sources/Config.plist in Resources */ = {isa = PBXBuildFile; fileRef = DEADBEEF000000000013DEAD /* Sources/Config.plist */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + DEADBEEF000000000002DEAD /* Quickstart.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Quickstart.app; sourceTree = BUILT_PRODUCTS_DIR; }; + DEADBEEF000000000013DEAD /* Sources/Config.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Sources/Config.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFileSystemSynchronizedRootGroup section */ + DEADBEEF000000000005DEAD /* Sources */ = { + isa = PBXFileSystemSynchronizedRootGroup; + path = Sources; + sourceTree = ""; + }; +/* End PBXFileSystemSynchronizedRootGroup section */ + +/* Begin PBXFrameworksBuildPhase section */ + DEADBEEF000000000007DEAD /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + DEADBEEF000000000011DEAD /* ThunderIDSwiftUI in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + DEADBEEF000000000003DEAD = { + isa = PBXGroup; + children = ( + DEADBEEF000000000005DEAD /* Sources */, + DEADBEEF000000000013DEAD /* Sources/Config.plist */, + DEADBEEF000000000004DEAD /* Products */, + ); + sourceTree = ""; + }; + DEADBEEF000000000004DEAD /* Products */ = { + isa = PBXGroup; + children = ( + DEADBEEF000000000002DEAD /* Quickstart.app */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + DEADBEEF000000000001DEAD /* Quickstart */ = { + isa = PBXNativeTarget; + buildConfigurationList = DEADBEEF00000000000ADEAD /* Build configuration list for PBXNativeTarget "Quickstart" */; + buildPhases = ( + DEADBEEF000000000006DEAD /* Sources */, + DEADBEEF000000000007DEAD /* Frameworks */, + DEADBEEF000000000008DEAD /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + fileSystemSynchronizedGroups = ( + DEADBEEF000000000005DEAD /* Sources */, + ); + name = Quickstart; + packageProductDependencies = ( + DEADBEEF000000000010DEAD /* ThunderIDSwiftUI */, + ); + productName = Quickstart; + productReference = DEADBEEF000000000002DEAD /* Quickstart.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + DEADBEEF000000000000DEAD /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 2600; + LastUpgradeCheck = 2620; + TargetAttributes = { + DEADBEEF000000000001DEAD = { + CreatedOnToolsVersion = 26.0; + }; + }; + }; + buildConfigurationList = DEADBEEF000000000009DEAD /* Build configuration list for PBXProject "Quickstart" */; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = DEADBEEF000000000003DEAD; + minimizedProjectReferenceProxies = 1; + packageReferences = ( + DEADBEEF00000000000FDEAD /* XCRemoteSwiftPackageReference "ios-sdks" */, + ); + preferredProjectObjectVersion = 77; + productRefGroup = DEADBEEF000000000004DEAD /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + DEADBEEF000000000001DEAD /* Quickstart */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + DEADBEEF000000000008DEAD /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DEADBEEF000000000012DEAD /* Sources/Config.plist in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + DEADBEEF000000000006DEAD /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + DEADBEEF00000000000BDEAD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = 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_DOCUMENTATION_COMMENTS = YES; + 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_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + 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 = 16.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + DEADBEEF00000000000CDEAD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = 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_DOCUMENTATION_COMMENTS = YES; + 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_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + 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 = 16.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + DEADBEEF00000000000DDEAD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_ENTITLEMENTS = Sources/Quickstart.entitlements; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = ""; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 0.0.0; + PRODUCT_BUNDLE_IDENTIFIER = dev.thunderid.Quickstart; + PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + DEADBEEF00000000000EDEAD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_ENTITLEMENTS = Sources/Quickstart.entitlements; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = ""; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 0.0.0; + PRODUCT_BUNDLE_IDENTIFIER = dev.thunderid.Quickstart; + PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + DEADBEEF000000000009DEAD /* Build configuration list for PBXProject "Quickstart" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DEADBEEF00000000000BDEAD /* Debug */, + DEADBEEF00000000000CDEAD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + DEADBEEF00000000000ADEAD /* Build configuration list for PBXNativeTarget "Quickstart" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DEADBEEF00000000000DDEAD /* Debug */, + DEADBEEF00000000000EDEAD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCRemoteSwiftPackageReference section */ + DEADBEEF00000000000FDEAD /* XCRemoteSwiftPackageReference "ios-sdks" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/thunder-id/ios-sdks"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 1.4.0; + }; + }; +/* End XCRemoteSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + DEADBEEF000000000010DEAD /* ThunderIDSwiftUI */ = { + isa = XCSwiftPackageProductDependency; + package = DEADBEEF00000000000FDEAD /* XCRemoteSwiftPackageReference "ios-sdks" */; + productName = ThunderIDSwiftUI; + }; +/* End XCSwiftPackageProductDependency section */ + }; + rootObject = DEADBEEF000000000000DEAD /* Project object */; +} diff --git a/quickstarts/ios/Quickstart.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/quickstarts/ios/Quickstart.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/quickstarts/ios/Quickstart.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/quickstarts/ios/Quickstart.xcodeproj/xcshareddata/xcschemes/Quickstart.xcscheme b/quickstarts/ios/Quickstart.xcodeproj/xcshareddata/xcschemes/Quickstart.xcscheme new file mode 100644 index 0000000..8e5efbc --- /dev/null +++ b/quickstarts/ios/Quickstart.xcodeproj/xcshareddata/xcschemes/Quickstart.xcscheme @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/quickstarts/ios/README.md b/quickstarts/ios/README.md new file mode 100644 index 0000000..ef4e94d --- /dev/null +++ b/quickstarts/ios/README.md @@ -0,0 +1,41 @@ +# ThunderID iOS Quickstart + +ThunderID iOS Quickstart demonstrates the full authentication lifecycle using the `ThunderID iOS` SDK. + +**Flow demonstrated:** +1. App opens β†’ unauthenticated state (sign-in screen) +2. User initiates sign-in / sign-up β†’ SDK starts app-native Flow Execution +3. User completes the flow +4. Sign-in β†’ authenticated state with profile information, token debugging, and sign-out button. + Sign-up creates the account but does not start a session, so it returns to the landing screen + and the new credentials have to be used to sign in. +5. User taps Sign Out β†’ session terminated, returns to sign-in screen + +The app depends on the published [ThunderID iOS SDK](https://github.com/thunder-id/ios-sdks) +release through Swift Package Manager, so it builds on its own without a checkout of the SDK. + +## Get the Sample + +```bash +git clone https://github.com/thunder-id/samples.git +cd samples/quickstarts/ios +cp Sources/Config.plist.example Sources/Config.plist +``` + +Set `THUNDERID_BASE_URL` and `THUNDERID_APPLICATION_ID` in `Sources/Config.plist`, then open +`Quickstart.xcodeproj` in Xcode and run the `Quickstart` scheme on a simulator or device. +`Sources/Config.plist` is listed in `.gitignore`, so your local values are not committed. + +## Setup & Run + +See [Try the iOS Sample App](https://thunderid.dev/docs/v1.0.x/sdks/ios/guides/try-the-sample-app) +in the iOS SDK docs for prerequisites, configuration, attestation, passkeys, and run instructions. + +## Where Things Are + +| Path | What it is | +|------|------------| +| `Sources/` | The SwiftUI app and `Config.plist.example` | +| `Quickstart.xcodeproj` | Xcode project, with the SDK as a remote Swift package | +| `Package.swift` | The same app as a Swift package | +| `thunderid-config/thunderid-config.yaml` | The application the [iOS SDK E2E suite](https://github.com/thunder-id/ios-sdks/tree/main/Tests/e2e) imports into ThunderID before it drives this sample | diff --git a/quickstarts/ios/Sources/App.swift b/quickstarts/ios/Sources/App.swift new file mode 100644 index 0000000..0e6bc94 --- /dev/null +++ b/quickstarts/ios/Sources/App.swift @@ -0,0 +1,34 @@ +// Copyright 2026 The ThunderID Authors +// SPDX-License-Identifier: Apache-2.0 + +import SwiftUI +import ThunderIDSwiftUI + +@main +struct ThunderIDB2CApp: App { + private let config: ThunderIDConfig = { + guard let url = Bundle.main.url(forResource: "Config", withExtension: "plist"), + let dict = NSDictionary(contentsOf: url) as? [String: String] else { + fatalError( + "Config.plist not found β€” copy Config.plist.example to Sources/Config.plist and fill in your values" + ) + } + let attestationEnabled = (dict["THUNDERID_ATTESTATION_ENABLED"] ?? "").lowercased() == "true" + let attestationProvider = AppAttestTokenProvider() + return ThunderIDConfig( + baseUrl: dict["THUNDERID_BASE_URL"] ?? "", + scopes: ["openid", "profile", "email"], + applicationId: dict["THUNDERID_APPLICATION_ID"], + attestationEnabled: attestationEnabled, + attestationTokenProvider: attestationEnabled ? attestationProvider.requestToken : nil + ) + }() + + var body: some Scene { + WindowGroup { + RootView() + .thunderIDProvider(config: config) + .tint(Color(red: 0.212, green: 0.533, blue: 1.0)) + } + } +} diff --git a/quickstarts/ios/Sources/AppAttestTokenProvider.swift b/quickstarts/ios/Sources/AppAttestTokenProvider.swift new file mode 100644 index 0000000..db0f530 --- /dev/null +++ b/quickstarts/ios/Sources/AppAttestTokenProvider.swift @@ -0,0 +1,49 @@ +// Copyright 2026 The ThunderID Authors +// SPDX-License-Identifier: Apache-2.0 + +import CryptoKit +import DeviceCheck +import Foundation + +/// Errors surfaced by ``AppAttestTokenProvider``. +enum AppAttestError: LocalizedError { + case unsupported + + var errorDescription: String? { + switch self { + case .unsupported: + return "App Attest is unavailable here β€” it requires a physical device with a Secure Enclave." + } + } +} + +/// Mints Apple App Attest tokens for `ThunderIDConfig.attestationTokenProvider`. +/// Requires a physical device and the App Attest entitlement. The challenge should +/// come from the server in production; this sample generates it locally. +final class AppAttestTokenProvider { + private let service = DCAppAttestService.shared + + /// Returns the base64-encoded App Attest attestation object, which is what the + /// `Attestation-Token` header carries. + /// + /// A key can be attested only once, and the server verifies a fresh attestation object on every + /// flow initiation, so this generates a new key per call rather than reusing a stored one. + func requestToken() async throws -> String { + guard service.isSupported else { throw AppAttestError.unsupported } + let keyId = try await service.generateKey() + let clientDataHash = Data(SHA256.hash(data: makeChallenge())) + let attestation = try await service.attestKey(keyId, clientDataHash: clientDataHash) + return attestation.base64EncodedString() + } + + /// Generates a random 32-byte challenge. + private func makeChallenge() -> Data { + var bytes = [UInt8](repeating: 0, count: 32) + let status = SecRandomCopyBytes(kSecRandomDefault, bytes.count, &bytes) + guard status == errSecSuccess else { + var generator = SystemRandomNumberGenerator() + return Data((0..=TI)o4fq!($S_uh{ny|+MsfbtIn&oUz()(?#k4tuWdNSm*ij|IcSEig(p3~JYm)oA(lOJ7} z5Zp@CubK=wT*&oFI=1-+fC)kGbzPI*W|-Y7kEz@;^@q4-pRinwwUZvox9`xDoB{@J zvAZq-rwrPclxt>-sO#9<0a7FA_>haUoZ4!8fJHA?N9HA;G~sR8 z`PuEm1K$|%;niX3&0(IJX-DSOA@9u>vye#x8?IZ*wY(LSlmAx8@a6W!7Uaq$ z+YtxZ3OU|&$vpdUdxa?Hyot#D?Qj)v``Aaiuf*r(hxYARr$AFz%Xw|^wU!>3KN`;KhpGRhO?BG{n-L=LWMXXRwG( zyvV!74P$TCTr~D2ZVI*%=ChZt!fvz9ZnnB^R$1gQX8bHSEVm*-w>WJV*^#)ee?pK| zu9H&b)BLx2U0ibi&MAkV6aTQBH{(aQv?V@?w|hU#gm3$&f~iAp5^I9;aB>?#w{x{} zw<;^=c{P$(J`-mHm@$de^Vq)ikekD+m5>f#Q&;VI7iM`x7I+a8at;u%FouJqau@qZl&IoTb%*$+{=HoJCP*BImDf?WBX+%`4b?5*7NPufAc zG^W z8DyR$9!a4bl<74tVw?4#+)&zg5BFU%x7ymHnJ)I!Uca$0y6^o7!qDp(^KKFQcmL9I z&R)m{JAVc0b4nloCFFU1=xs_&Kf zWZ%EzK4UP1SsDG$poaK9LbzuqQ~|f5bj*UZG>NYcmy%H{0$GofO5S@wlde;3y)XvlA@N)VIsffcgO(oLI4yP?Q4mxby zBfK!AOmwOvD7-%nFiqj%8?a(ou@XcHM_^21cz=CgMT<%o)2hcF1)dKNf>KSR-dw9O zmWyyRf}bszK%GW zzfSff%lvHF;ihN?z9td_WS?a_ueHai^Ns>e;}P%1Ms3k|NvgUHGR{{U?+e)p?#C)V zpVJ>&bDL%IE6j)((Mc~B_$;Wqz!9Fktftk4#lHJASP042)(qpEgK^HyMI!h1Y)2c4 z`lkz6Yzcq#K9tc^&jlMwH#SxYU67kD6HR8uIw7(T3BdN`Ivh4rC*&u8QoVj! zK+R8IdqWA7x{0P(qFlvrD_S=qdp#_dvxj(;rsqi5$X5r?#j0bKKc#KHc0`(SmwVZj ziWf>Vq{>C=9imY39YP*ja>=H!-u_Tt5L-bDtyBEzl=WL44p~)($A6Xz0i_LBNWy2> zwiv73=;w*yu1Q>&Y_8d`!POHA{;KLJkG+hFiWx@qc}kK?`ogZ=jTa%1`C(!}?Z9?iAPVx^4onY`=XI;{syALgK@et4;_y+5AL zln+|M{IH-ul1bRqx#Dv#&~29ZGU`Ye@PmWV5@MD-&H*P87dT1nFU+=h&_|klGNy4u z!J+~aey|tCBuPB9;SM!Bv?pXT@_F`)yd2u=Lq!Rvj+CxhK2-U5!6s*P>$l}APf99C#D@Lj%@#f}WFd=Qmo z&dRm@)unb}YU$Uz^tlX+id)}u1iC}QN%Yk2w&V6BM1-D}EXcW1^fZdm=eCj0xuw_rMA z{7ZF2O*IeZubaWy@UOE{Rc)6E5#dirXcJ5!8hcWv=dsFA4i3R>YTSxqqUoj+TNNq3u3NrOoJ1rI3Z4l>(_uw(p@7N2Colcq&bF01siy z!QXQ$Cplm}{|Mx&!a*|c%7&|?(AD?jyKUMUyJS*9MgouWUg&0jqw?WmEphXgx_3B| z6TNJJsjqGbIDEVHWnHQ2Jh0$tM{LIi_r|BRy9U_ga}J#nFwnz6;j z=%)*-a=E`b+Y)lE&Ph8>>ok9JhM4cq^jW^O@hHlek+P1d^6Jm- z6sVb`(!*aOy!0D`2(|#C+WA${HF^8#12T`h@F3w(&IJ%iT|JPD-O0jItzOnn4d(Pe zV-(mZeUv!YLPsN1ii;+O#HaY0X(ct*p%JV3XW#K>3EUJHJ?XF^7{nHlYJE%5KAYk= z{O_o|mHliV;ptfnpid~#t(L75Gvk;xL;jlS$$ibd7LGqOm-GDK*mTpAJ}eg%AGd^E zrp{=wfF1n9JCkc_%QxsDsIjI0?2;BYbLwB-VSK7?jgh|Yc{6kR^?X0hqSsGoQUTj{ z>eqIYSMxQ%k1>j2#amTaMGz)BEH!%Iq|bRn(BN};swewgYsxNXQG;eKSqCrv&2h9g zBG-w1_=_O6V*$9U6;kA@@%JaGr`{=_(s(Q~vY8D_-d(;sx}OjqLWoRgd6u6@Mr!Rx z{tWjqL-tLHqqp4a;SlqLsE7564Y;TJ6DJ#m+GP+5Q~4b_^#3 z8$VgBg60kk{R9lOOtUzsAm@Cxe$ovW)}m}4?=`UouNe?aprzJzDoue^v;b?axp(0Qht>34bwg>R)6B!hqD2Gg z*V(2zGKyt=>x2p0VS2@PU?V0y&g+pdILuS zrhJn4hv1X(*zj4Zh6&z;-0fo0p%mNtY+;+87?|o*saL&J-SUsDe4BYpv{JToN9^A? zc|&E;M#-=v#;oid>XW6uP&_m{4!}>@^Lxi=Pvc05Z=Sm5Mxg7TC>G-L^p6CD!Gd3N z%!JR2-{H=!*<{_enF|gX;JvE--&Ioj;_RD8)L+NlZ3ocFjJ_DD`iw8pYgg2&=}-3# z2is5aRj5EM&&36b#osgnLF0D2JrYX%`FxuAQqZPBZlf$;z=^(sE-?6_u|_0-d6Ybu?#s?#MiH3vNs z?>ilfq=ZwMS|H5zmmx$A9?n)zathwtiXH5Ml*fnhtu z10mnbIh%dB%mnkIkzaBRl8uF9;Z<>*+lrqiTxUjdp8!oB9w&&?QJaPtFcy8eq|eqB z7I{>aib9_Q+-(C?TG1*s4aA7$%FW5KFNU=hCA*3-i!ZhYy6o&vhLJNx1je{8ZN-g& zS_dNuB`^+2yFsKW8@?3GWhPJ6eFleLtQJ}WACC|>?^ByM~*UJ}@PHy}~4U!sX z@#Su>zD}0|Zr!R37*Q+t1lX4qN8uv*$-gjTNJRac)~IwCD^c?%^Z>E z*`D{eSxQoRgH4&dtVdqdEV0j#n58`ICa~xvFNxp9|Cj{& zHubP~*tiqi-?u?hp4e57L0^1lETEJMcsTB5leosOl|V2vyctNm86SE6N>gtPYKq#= z(qqbk?Ib1CI5UPVnPo~9b$UE_JCg^e87;H@`sCbH^+iaSN$F|!Pp^yy{8{SrROk$? ziH;{l+xHuRUYs+a2($EqUM2J@0+UFG5 zJ2ny7)sU1Gw~-iBX9AOkHldB52M-GGp@PiqqZj4c?`v23pfpZT?$(d|?SzB{Cb#g5 zfP)@3<)y9#%Ic=$kPoGpRzr#=iP zcCwL`Gm(huTWD)z%Ayl41ZL_Ek=NB0{R4+%TFPV}(}FDr!~dfNAPlf!r!s=e%#~su zznke4WdAzcfX1n>#FlJrAClq5tiCZ0jK$f;RpoZloId}lu-YaVPCiZlM(TT+9Pp`FI)dxOIOQXQNifb%3XNUEAZ%f!lu3j+N`57(5 z(agiayz@MyEmFx19HP`#<6Nr>u>e`yAkkAnFc%2|F3rmHrMSZUDC6UMPG$RTA|=*@ zB?PO0pS*IzV0NcgRvWH}5BVL(#0mO9c;e>MVb3(CvMaP%JVCj}Y4unmkE#yMV}vhN z`lFTVYn+8{p%-PAnNj4j$MhZ} zW~Lx%9x>O^X=Nk1IIFoQx7}K~OJ>M+oky18Y=r!*<%W+^BMRO|y>#T=FopJq9a%-bgprgX9XWH!#ut0`sK31wv9@x<}UN zv-LZmtzpiP$K@Tn8n5}7QE{;4xko1e{|lQK0DY0YHBD`bRX9u?lXG(JJQ`80Ks46d zzi#BXT%gDzQcgu$xUTeZI}FA?y8@5V8;D1lH`h1|DthRaOQ(fqAt?pj;p;ROI&!X3 z4XTln+R_9t*+$R$`S-H;OYQq=ojVg64ii2xKZ^L^vKn8$BwxS+@h|dCm?MBiSLJUI zocffkqCW+LHtbjk*Z-kV^Xk-yQvv78QY8nL7TKdeZmR8CT_!XgA$j#Kzdc(sYIac^ zs;G{~UnBhLC)!fqhVgsn(Gr}_H)RhJGf?_;`t27(e6v{VSO?_W=Xi^y(K6+;n-3#j zr!t7~EfCON;4U}xFJ5LDt`x^kNJ%lA3^78k6+uoJ5!t31qY0`@`*k!=C~A#uIOfn{ zDZDZfz9^A#k$I~W$sRLRweq|{cpZ$if+ZR`A(_fO8cuf@ma+qqQmQ?2)VQHG8v8Cg zSwH$JFG>d+jr}A5b1BCqJCBNj4Vd{K6}!zC?O z>eyh%?Gr*c9{R%6lx)w+_Jjxijabvhv&|jbFZ{jbIlB0-Cn5EF*>V^2Eild>AX}60 z(&0YP?}(~gwSaahpxCm-q%&<&-=84yWZyF_oLu9 z&^ulJ&@ocl)Ir8iH3Jz4FOg%ri4=8l$pGB99x!B)Xh7Vw4y`AYYIr01Po+v;7&=gP zX3F=vl_nZOs^>7r||5K(?=gD$Z zkt|F6sjBmvMRDK+9In@|CeyAf#F4JSTgnOMPA^w#Omm8*axb?RoiTt@br^Y0qST-OO(Nvei^(>mT4553Y zX4uKu5vk|oCg(A;ej*3&@xE&B`EyIvMd@j&hLAAl+&iUQD3|u$L2}jDwNYOnVZss^MGg#8_(;{s74a@Np`$24?s(oT{^r3(bmZKxJ2JY2z z0EKPqE8uS<{ruXh`d$HVwaq-=T(s`2KBJwBbdlpQNAn8YFqGtJw&^aBb~YL5et}88 z)itbMan>BTA-Igc+1g#ygqIv5It80PWRjW6Yc+Ykrl^j7s)N_#^y2Yy3&kD@+~J5( z{8{ds0_bRi2Pcumhm=TkV+S@GL!sk%1yc2Hr%|6G#9to!M+Jig{5s6TqS5IgJNUNj zf~Weei6RfFl^TLO{EMdhk+zh4mNEWDaA)3rpMZY*At8a7&%61+g(?w!XYW#kJ=%n! z8#kpZ&CpDe+7+=4`A_fk20wFFq?)|N6|J(t4znf~^V+D8dXcN{eZ!#$FSZ!Y7vvw* zLuV{i*FeR-6Aww4URjZR4+p&3aUi$WJXc)Tdc=qCEl(5mq&hv%X$^)yEoC`n>3XL;vwuis0UK2?v(W{pp9ro3PHLEJZ}pl&M-= z@@3*xxREt34%;-TFW&GxrC&OVi9AisS0Yw+7e$}h%t=n8UI8PqXEp>FT$=n?9>H(a zSp_?NwHt(IsfpI*AgOY%+$2__Bqu~T^0}oRXY#*7C9Ig8tV#j2&eiz|H~~!FgysVA zr3^h^I+nSSHu_e+RYY`dosHVb9kUoc-83{R*IeyuY15beDbkSl!vF;%Shqvf^fp;= zvSpBX+);w-5>Xe=UmogBj@9a`2F!i-$tlb zMsJj-)uug~VE!f4gPZ>7qHN}pT%zG@qhs2u-r81;&^yHZ;APN@sodqiuQmHyf}x4^ zb!8ip9?T|g*7ogmK&fuJ)8LyFp!Jn;ZPqECk4&oZb#zRGY3>iyL9K(wq|v^Vdy8KJ z=HfiekXy66eh@E&V_BBeh5j&LcaPQNd=F!aKalvFcd}(aLj}2l?AH3!;0UGsN`_+K zu?Z!kMXAIkIbF&bBZ)!c%3R?HN%@I7U{hncF4gb^@)>$y84nK4r7F+JvAK~$vZleY^Yz74dOgg>+xIfig zhM#dlu)_T6%psm#1^5jot9?wM-Q8#F}Y(GC5k>w$t`eV%)-W1lp}bL$707~(9R-La`Lzy%BhtgR$Z@Ue5uew>@zwE zF4NKQympWXq-lbTYJ|M5##5g>T0fpJI;0f*4MK`M)9u;T<`jl2TP7TNDg*W?k$QO0 zTM(dYmc%YdgC0o8#6Yqh#N>s1!FYHRF+zR#v)y2ct-_jmVl{trAL;HGjK7JMi4EqA z1aj`jwr(|UF#^k-mVuLJJwLq=nDq9BlcZK;%a`!2p9Sblc*nL*M&6;wN!Un{GNmrA z@ba#ws+hOpd<1P&`Q=CUMQhMQU>2L>HONYM5|`^5#|MWsMzMPAqs>N4jQ&&4PgB-SWqsy!R_5fwG}v z+K1^5P&2VSE~!ErD5|(QIfJQbpBJ#xCD8OF4ry$Gs=0l9Czx^&a`yuKGpwB{k+ZJu z>2OLEDPL{_MBAU(CfWSc@Ig&b?aTyTuO~DMaspDTlp=@Zro|$wt}IiXgm=?ZCgh_4 zPLcgqgoUyrZQJz1;4mFNW@+yrTc)v@dWnTNr2rA$`SIS>uQ<(WNvcGz33A(x$tj9e z&R-&%Rh+H2-?Y!uKo%c9d48|wSg7|^ALg>+<{;^h2`MSk|KK}ulP{JhzYBaduVhl4j{c)Y)NH1-pdp@tJ>{8W#)H-8 zIsBq*q>+WdsPc@mL|?Gq|Zb0xp>k>7a{H6`P^GNRP~Bl*3S7QK%B$KU&p zES9WMi;agFMpmt_3Yx;|B?81wScAC!h8-R0Y1uNx%(_RVd_4L(PJTaBi7nlccLO87 zm(V^AQh-(rY0)myRyw7810QmfoB8_-=&z5Le&;Uj{v*5Y?e$oBdpB+xXsy|glQ!ao zzc6M1=NK0sv!S6b{EC48Fx+lLsf7&U{_&xZ(hgU+QN@Wk*M(2X4tht5cL8+IAbtK> zJTn($(8j5+!9@qljjvLGWuW?M=~wliva0E!oN~4jq1TMQnCSm#0q=wody=f?x#NQY zkGW&mi+P#wXtD3L<0y?-hql(vsvmo?lb|&SG;C%&S8_m^9CITN+SP|k=i_wU1Kz~a z#OvKg!aT9?zQBYtyFM8ntuY z}-Ee~*maT^0LFH^gifN&0a3A@*%8_4*dZPU=cj@PMHlv+y@~ zNvy93tX+YVnH2ny-O#FvO&1SL^5)oxZ+LFo;bDp*r&xa3dTpLMs}V4XR&%_UvNgzK zbT!vJ+MX1v6G`V`X|EqhAKgDbt!j@+_ZL1?S5LCO&$U~{E%5wu%A@VXnIUZZ zL!B?#r&Q*mzkRRBvXsyJynOd{sEMPnOP+P6Ot7k3o7yrK&G3`fA;{;PK=;HII#Rp% zzq6`-kVJNFLjuF~w>pW84-MTLz~3o5tf||oX2RS}dux#9Ll?d;T@h9PO+Wtk9NNl9xK@BUU6d&l?~mKQ^x8%&YW#v zq_QhdQr{6vZOxz@1~;$WND;ijsziAnrw@aggt-2Is+o&%5AFxRHX?LdL=08D8 zBH{lxnChydU(OSnFFu^0N?KiLm+&A@lB=8ibg|+mjJ4se4zw7D6h{-eFg4A#wRzF6 z)lanVay2%7GJ6o#SFFd+*2L%j>_V?Z)iv!}%)x;44%N&0k_29*AGsSdHiwf^B2T(03Gu2_LDhdj z)qg?N{{>X}x<}%a7rxv^?$e|Y9Xs3|Um?Lc{MDr&$cdw6Inq{u0?scu9trUO z0aQ73j3zzMEwiPgvkgz*H*qT5YQz6S*K;Dyk$?`U*jWt|HOy z5EOYq@LBR?T`oZ+w&xq&@i3 ze=M~2ms|fPFx+3S<UyCCUB6!46zQshYb}- zpH=G@D_m=mSQO9=KD5q&lgYRtmwVB@XkoZ0~XWJ@@Xj>u1o*F3^qfXtw5cF3mI7@ zoniB1NH*t_b4Cm^H5S>tpXJR4E7dRkvcM$V0N@*c#YcyX^Tb7@@?r?Vw|7vfm+{yB38 zDi}$F(Dw`efyJI*(77GeVOu4yNVfUL;o4CZ;88s>5t7&Gl5r)2DW z0kzZcDmT(w-CKBSwZuoA@6F9q<@t$E2hs@9tJ>h)FQ*w9Wxn+d}YjbktPya;uu3l(5>;Q%&`fe1}b)b-- z`n{OjcidwKwN|Fj!|UXeKV&57@P(@>j6YX=DoTw9vG@hEqs)`$jGg#3RVCd|Bj~uf z*UJMA*#Y2c_%0>Zr@uU7#ybk~#_NyH6)kD^A6mSDBP4k)>ahXt{}dl@q;y40Eqig5 zQIpyzgAN_Tag-fbz&^^yT21w_dTRCZc(D%UAJ_uznaK~gv9LVi6Loo0keHPb*{wZhH@kD@(mh^z*{b9wKKgK&LZH%XWSMgC};(hm* z(M6JGT>XV5uUTSLJGK7^pvOgC^+5xM7gn&!AoDZ~-+~yM_4JIg9kzg`7+22pYXbof z3_lnlmR36j^sQ+p?NpfX;TuA|=2c37{U)<~AMcRp&^k=q zc+2RIMj+z-trJRv3yPaTJz)M4s7len>1^zyXuTR>${zNW8jM*%dMj(2-bqLe@r%Ex zXbQ4EqCfm_I z+5*ik;Z4MIJicr)%wXf2)QMLgR#xXLQAHtcjh2H~+Ch23z&X&Z}&pZB_HqWVUP9*}P&VEGvx~hm6mt3}pDAq;wue>KTz)rEP zNU+bgDg-{VQ*e9X4K>3{+Uk!KNrPF7Tbh`bc8=ZqYvn~QH0e_<$ET)am0g05v0!-O zhj+gk?3p?KEaANy<;})ms7n7wAwSIlaWgw?pu+`2@fIo&=FjK|02jhzGidHh(HUN= zmk5MS(jjUXI|LtNtMR?j%f39`%S}k|(au_FGr@d_8i{Y2ZDe?0 zg?Vwrt0>!7M36E*SE!(2N}nEvH=YH#(u=!o>$lqH+&HPeC=$;)bGop2(A1xlRCs+Z z2LMivJXKCYc;##Z?ecw2&ykvLEq_eCi(RGP^v&abQ)EuZ{ye_d&mr`%Y8PW|V=@|; z)mTK4fXeOs?K(+`Hyb7BIpWesieO!jf9{NLy_3vK6cI5EIZ#@iR7hcd9b|q#`2u}q z#kf3Yw1Vu$?OGXHl7qiEtwsxfdXa%Y!~;o{jr}Vd$R!@mc)91785w6E*_D`I;UA$# z2NE|*6yusQ#D`I z-As4WBCSm)R^y}`wo}tqx3(wevtD2eH?GKv7s=o(Ck^ONmpuV&x1HSt!HK zDM4x?mLF}i+vl69yrs?@Ok5}6D?Vaq%m>lqc`7sYR{Vj~P z{{`}jatyfih#{7JKRzL-qAw2ns3s`lUB8&1tXAhERpUHuxS5q z#ur@@F#27r1V%>r4Wx=EBI*SqZE}}urAA(Ir#C&3 zjjqx}=EFMnP$5Eon{k^ZgL{+B9INtb(-W^o6?Qosx_0NY{h&vL0nZ-uAiGiz8bS6f z7u`|kHd(R*X~&71udVkgIR1#j_~Cg!)XO${v6seM*`I4-al`{Usi$68oU$B7&5kj9 z*3!?FZQNS`evvCx*QVQgG0^QWARjkVuE(gR|gv z4o1Y8hU;9_Bjv!9dopL1LZPNLsKs{Sx%)8|X9!@nzZtWXSAoAQf0+JSQ{H^HL~MEw zcF7A>jFmsgGHB-pzZr>Qqa6yKY-}PbS*}CN57ct4wA!QhrwgKY`qpcc4bTBxwd=v< zU`2sPBXovz z_J(|q*pj8!5(-I}?m47H556onJw2D94uP5%%O95L#ow(yCzWhsdFZil8D9?mbc{N% z2BJbZ^WN2Zpj+J#jyetp>kOu{1~#PVZ#Ic%6bmc08HF~J4}b9X7e!J->nm7WGQ-F5 zJ9lK1kfd%h=Q;}RvkjGiP12k`bIz<`n9TOsD=NhSj2liH#72$i(q(>(X1ozi&hSu~u7G7}k=EJY2$sy;_K3v`E&_yrAFmcrIofuW9`o7#aB7z(GN#6ZM-kTwW5 z;iI+TG3wKI>3&e64Z=zl<_5-o$vB#t;Uz;PKWyDJjzjz(K+4thYuU!Vw(mi2TG0sf z+`X0yd{(IUXVV1qn;Zk8G(Hk>!T67M5*{l#mK#Bp3v}QWvC=2xsah zxB`Ih^)2Gv+>2g;l2T!bZ-eb~YMhOUCPs|VV=)Pa>m6Qrm$Qc2rNx2B{zx~Z({D^; zg*5DkSHIq7zv41Ns#t7MUK!A)d-c$beVW(|9A&SmmA7hfCCdDpH_VOg)E1=fLms4Vxu{Tz=$0&A%LEp zoXoG1p4{TC$aQfu9~`_74mN{#mq$(x=T~K2?2#wtypm7_bv5Ri8%Y+Q15&)rkDJrk z25}_Nn>XtoOOE%kd^7+O4DO-NKSN4xxtj1n-7nQylpjL0y{lbu{EzIg;l3lyDfi2&R`t* zvKvPA8})h$n83UwRfkg*3K)F=)B71IFdwTag{dXVFy)e8IvmoJy&o|C!mSD>pL`uvm%v-tdC-pZFB%DjrE$*k{Q`RG+esHv-jsyAVQ}u{GCk&=MD@y^VR8iswYmRSJaOb!vrQ z0#<5ke9H_fJN3ag>XUi6XjA`EYslb_EMLc1C0fohSxkzt9Ui@(bH%!q2*w?1SrJB3 zLt1{}$%m4_L z2xs_AeiUEiGs5Sjj7+bd>T_rz`?Z)8dkzK}I)trCDtN=YtdwUlDFqB`<5(D?_vAn)k2b!aSoQEAAE zc{OkQ3BObnGsS@y9=%P9U4&{5{pqGRl-mD-(cbiw%vzl8gxv3*_vZ#5d5lE5nAd5- z@DVQ!AOXt_q;`9 zUK?HHes7i=-;eUI!l|v_>UOIE6x(HMMORiDZCBEpsA~%4=3{w}?ZztCJ&C zp;nOVaLd|GKbEDAfh6;?a*g0~3C2UbUV2bW+CeO<0QpcSzdQ%xTww!`s>vrc|BR-a zHWcj*jNtrQQX5wQe?Pa?FmY8>n*YObAQHvPRrO`lC8crwW%U1Q zNVkFs23?3N_c|~bi*T9NE7$XNQDpY!bQL` zKK=nuf(&!6?&U=c0c3^r6W<<=psK`VHW*FjXsYNcCGujru>*N}XxJEqTr+4-T$S{@+4WO98>k;f|V|spvxf5+V#GLk@=K!SiBY%lOho+F*kmZ-| z$o7M6vE!(5R@EJ z;q2i%UALC|*?G(jkDk^EwYZo~>oGR{+v4MY@Y9(L9zRJ4YfnDfNzDKOAObNxR0ePw z(!$CG;iP8sWY!Z%PMBcSO7)2P7~Udt#HPE0Pe~oqY)wa+fvc??ThT&B{d_eB8ed0Z zSenQaS<5)kTv{rkL@QxD-@T?%y{Mh%=B#Rs0TbWgFOJ+FZ`o#H9WKf_SI0vBddkCN z6#V41Xq79*fWkX^(V9+f*>0>&_N8@`$(-4alxZIs z)oY8AMCgLU6^QY|8uDkA^kz!!FDedk8pS%;CW{bbE1lQT~ZR^ThKk>q3d5zeBRrQ>|MiI;O`6G#cyhD$$Q3l zF=N620Ese%rF022*H;r%^o6;8=v&^0dzH&+NtfK6Wg?SO(;s?LHw-4_)BY4B;CFYR zzw3k5fKl3am8eMZj{BYe(E{q*38;d;gYuqfi+*7#+vpNd>Ah!AU=T#ci^d&|b58;A z4)+t{VlC-v{=3D^e-snX7%nrZikD=B9FLN1~zk-=<%Hrt03bs4*e)Zl2LQ?KW!Ga?_S36cy`&+i2 z;n>s>4ZbhQrX5mPsAqaJFZ&GqB8XK4-+Uq`xZ97+pTmAH&ekJxb7*NLJ**- zPTGr%=@NCpf9IV0pT64rco(`E;elgxe7dqfZWuHOAw*JMyp2lzcu8dQKt+!UK_`hf zdwA|@QHoIb>>Kc&uI?GJBCE1>yr=a zV#Y%Z$^rS=q8aQ8HD~fMRk6(*bDa^Hq^Hz9&c)}NHAy0~nNf6_9&FRuC0~c$>`Z;0 z-JUiA2SbnU18@oJ0abLwYVp+2t*i6GRLCc7xgdbB!1I25JS)H&@I6GpfOxsB7yzZ7 z_9MK(M{w&p@ZUplp`o#SG7>Wq9_heah*tchCGG$ni-FgK`Kjcf3b`-HM=Dw}Ej|7= zZYM>gVj$};7Nmy2a_)%H#hKbHy{)W(*G_l~TC2&j$PHM#(oA!vb-eL(6HwBuF038Z zy%gFhtt+B-&Z#AtH-|+Ln^E{eL|s_5Wxzsw~-S{1V~!UYye1`Gua$ z?caC0$fU0&U2mH{`iq`2YT136Dv+5c(Mv3P1|p5ackpreq$8|PJ7qs@&$jGOFv_st z>c7FL{|2M}{~V0Ui>ktZM^NdqGDbgc2FHKr`^DR*1kqPz0$tC0*J+5_cjjgV@u5@U zE}@_6fCm*!uA3DH!S;vA&dX!%SV!O*b51{Huw`~>CG`seqoTB{r+ApEPFfXfcGSsGO3@|uQ8KP! z+S@%Jd2ur@kYhG2U^rkj@@Z;l?p#WMH8$69UCQRZlus0d)#(|k54Fdm4SKEie!H8$ z2;1CTXcT0MI)7WnwW4O}&YRWdKfXQclH19BoJ__Ws5=^FWwK-&zO*u!Gc&d~NUOs& zhNj)(iO+T63n|1d!pF1{!}g2pggr1vq3-|+m1amPsHQXy?g%QT~^8sA1uwJdL<+o;2DJk6}tb1 zmlu(0-UE;@@!+!^U5}CBR4T`vd}bpbXJ{$h8(D6*te{zRy#)0Q36w!xd{`8-+#L78 zOo>m;hs!e^TAny^)4L7+U(y z)YV*2$Rkb>cuGi%px3$}zosu--kLSdvQpt`iImL+RS~h%f!Sg|%Jlw6{uZ?x5;82oo|Jb5T$}xDZ zJs}d=Q^%>eHd`J=onvau&t@r`BhQwWX`_=7A@{Phc&UVL--sX?0i4x&b=!!Ke>p7Y z26nn>DX-l&L-gP|RYTtS_8G3a95iP*YTYvt#rZvSojV>YzYRDo6)qE_rB$!;S4%yf z?+byz!_Y<~WPWp|{fs*D%<~5;IX1U>h~o@guI15C@nv`SSiMHwvOGT426HwBq=l~> zPL8`f{Vr@ocfN9%SEdMjyL%u`+LVMK4i!_bQV_)p`c(WX#%wAlSrU<{!CG_W(CO2& zsr?*hm%Ntt8tZ9J^>)+Npu8`TuU`uYNx|iC_aVkC|Be0~MzSs2iBLF&eH!O3?QH2% zZviN(ax17OK8EJ({&8V?3ZKx6YTLB|k#OfF8%6(g7+XLvLpPNfA4UDJ&6o*g(mX$> z4_DKtX$R{N{fpoKpjWRreH?KL=Q7WvwsBH27i-%KidrdmCoVV@vTB~N{>k(irc!jvrG@1CRlqJ^!sbWzYAV&f!R(nnW>uhFYa%;TWkF47jz-bq@s zr+B@ygbi_~q0Xz8{Gyqyjvg}I%PmHNdQl($G}XeNo^c52PE?E@M?Df4#=?i{D=c}e z93gs9$BfC4n)^J&QsZO<%oChJ-`uidKVI$38o@N98Cu0^Ei{<48Z%i5T}S0TLJnKq zZ*1w@RX9vcwU=k3X1KhHpokW?rooNDX+pi6cXmm?Rx7rY_!I~KJtX>*)-Lce_2xn9 zf{}nN2$+;!yH9p;H;Q8G9UxG6+$L6A$5gU%E2g7F!FVyHM#n?`T-N#}$w1dtEmer@ zY#}V^6de}95J$&bn8AStMdC4d$;(>_2N^DI4;KFb(4Y|vlbpLg1i4i=|I7seVYShR52dE=e z=H$KCVp4Y!t~$@kL}0YV6NrQftD~O>cbNWhHa`>wq7arG=ClEh1{jFTLJ#kv&>2Js zdM;|H>fOOsO&NrFP_t$eJNx5<3)QF7XbS1RtJGLLiXe{suKVdsVG`fj=mm; zO>(YL*)CLpr#evLgYHu|W0wNQ-Edo$=~1n1hK*F>TeHR2q+l;WQ6s*lJ$r1NVq7|5 z2p@>eJh1fYxA0PF_6ROm2F6JOe%>5@%FiF0npC$a44bVY#dP>Tu<2qywXuD_CF;Z3 zS@hfSyRTo-m~K*`S$c~?A9|7J>>=qPkl6m!+w*FMv#pGCw&n1oyo+YEK8>H3h(55` z_hP7eq5eCqFyeLc2?wbtNCRT0pJ?-&MDYo*wyFn(!v$1?QsPAOx5t&feNAfXGQw;M zEUS7_yY;e8M`tmaixc9RHCm33|E{(*>YO^S0o&3o-#f7SK}B`u?+L*)92?OLG!K4X z!n4~Ic~2_4;B|#nSbkG6RwB^>wq(XZnIQOzr~E#6_qzyp%Zk}{*q#KhnMr1U! zJ_KbVaG15fy5kjD1)t28ZA;3?YMcs+62v*2s|ecT%-WMQi36LOiBeSV>fWXXw66<4V#LIv$;K8TYb z*8v>$WyS|5HHR5qJBMYxHr|9cux$zm!{JRGk43mI*(l4Uf<1_Y6x+^p4KPT`%7Ahl zCb}+tWt^#lWNigBtqaVvIGNCFA>k;p%|tf|#wy*RIqv{I-uh#5>Te&305B@P)GbTo z9PGuuMO(!k+~7gzr@0@HlkqkUl!s5efxQ?s-_k;dCzz~?jBW{wU_Y%oKh61dO{kK8sHwYGKcJ#xMANbA5R~B86IM5#P5_T zSlA%E`E9d=q+AnTu>yuQzAb71Tzu(+ri&?SAH>wpixE7D`?4~Y)UB`zF_V(FDpclr z&bJe@M01G=C~Jkw!XVaTNw)22^$&@^Sr|JQLbKH=-ggMB;+9QYTHV-=`u@;qIBL>& zmf5?Dp5wWufQ1%tmhm*xjHu+^T^y4(5j9oT=T9v!`adY8?h{EQe+GZW9U%!1%Ez%& z?*g8Fx-yW#SE*(?HeTYAjjB)A1D`L%n0O}83uV4r7n1C?vpnWiHB<>!dZgKP<_|dO ze*SACN`9U_nMJ$a!%s7$krEAiI%t`RcUzf3+(th60UJPGMa0;ID>ORZN5;vV-z|<| z>oB~dkgEzz%z{E)OekbO2P-_BnmX}uX%p+!-fsh*%a>valpvee^M>J86CKuOCei(% zxCPm6jCl0DUJSW`nb*D_kL50SVfINi#$rQ;2%>xCdv=z63>Kc0n&9`I!gm1DOVt- z?zsH`BsZ2+{{a&r4Es&aAUtC7nMZ#<);gF*nBh z7<2E#bOI@weoQ_2k(Oq!`t8yvsxtB>ANGU}BWccW(UOfY|9fqbso<_);$$w90M?=<1Z=4y))YrbyH#<~YTB=;slY~~v zi2KO`uCPh!qzk!d4c!bPKuKOo44YdM5Gk~U^cV$cZE)ej^;&Di4vW9M;Ax9`_k{#t-1f=}gj-;%;wSHHX%Ylko9u+4OKXX8h=d8u)qZDYc zLSyOuaU&9)A<1ctGvul~R4;&wlFuNN89hR=yd@>YJ+okpUskcs4{O=xk0h2K_PkM0 z+`(9DWj;Spzs3kp%^rQc`Ym#p!E0)S;$V2ao3#8P(q~5;KNG9&bN(-NUu7R>52Z*3 z-xQsFqO}@!D^)UM#8_P152p3~pyy=4rKrvgHu5j40IuoOd}l}NSP*sLcEW90r2dIr z3u;QjLSyr{l}>cJf#ch$`nbTC3U`xf)AMAWe;F#FDq7aO-Dx#`nkqjI!Gh4Y88GMa3>yI=vU|5$~RIS4IUd2DA67=GVBn!)MvaHKD8&NWIHdos3N6e*2KV%G; ziDy=0Oc(LEilE<>ee+vzhV|iK=W>pgR zVG)HO3YlY^Vpx&P-7w0 zv8(BcbqKa5CSot0ld^3!!F?=K6NHZJZ9e>Z)0tx56#h=fm1m4)B&h6FR&bqe3x8tP zIbzOUMTF*zr2Ub_(JAOZVN^J1svG7oh19$cJ&jsfeHr?AA+fEbfFu?;&u2ryf7<*M zO|og_c*Yo*MERrjWvKtx<@diXzyF`Q{IH0WqLqoq+DA;J`gmJ=6mW@ZI_7f(tfyXn z6d|?|U(kpb_c89Yr$Wpi!U>ZW4}TvYe22sXra5i(hbrLgpDU@|=E-%fpMVtq7l$XM z0JZcl8!4QBY@`fQis>uz?-}89^|pJdJAti?@B=(XM3JcOoK31$EFym8`8WW9*Hm+d^7=oL0D)(A@(gZ+F|5W%@ ze}5Hf#s$Y!zX|Ex(Bc?$Vc!ZI^x&cwd84&Y>||5;NAO{)6X$u*q}fk@U%~|DuSKXcU)S1_PgCQmuRHz;8yv z41H164yUsfeK`s$eU{40&js>YUf9cr-ukUjQRq0_q<8MsIprUu+YA^74y}C$s?o>i zG%4v&rHprES@Pv`ejdPL4LaEJ9Ts+2`qkP!srXnvb$aOA$&_ku5GZ5vanF~!Wi_=_ zrnABhtCLHrCT!t+$&iHmFL08W;*S`FwKADFE$;{Mdy7@1~L7zg_j) z%q_&C{pWSG4^iEwqw65a62AD7@Dy|XHnm=_yEWo>-xhvRqC8M%WW2@o9Z@X{235uF z!g=}~{$@E-S$vzO&S4TTCtDsWu2c3w$*LAH*AnIZUm1ysEG zykl>Pjoh@gRQ|u1lFk)aobLZ=Wvivj$G56TP;B(@k z>?`TuV4wa5#`X!5eRKS29+OVSul185Dyv=td*o*n&o2_>O5Nbe_a|9O zRh$mQ`m`hq1O$qvX&L9)mY_L$(ghe8UN6}d?vf{-jbPAMxDzu{(#eM_@h$1Gu5+ll z;odTEQDHqSI-%L_W|C6 z~L{>|98_`k-!|26jge{1Z+E~bbo zRGt#2(`&(=I-Ono_GRn0Q|T|^zp+LY+JO=cNIrd6d+zFhX?{5cWhg)IaqfGIu1s(s zP>3~P=cHeSquZ@GXgR+pRNuEXTywgEAX_grqxA8iPW{qsvehp&d^$EfW~m1T)L}CA zKUt}{T()=2dO?7L>n~y7jDc83wjCA8<5k>U`hepnEd$4eH#}?j)R2<5;94J)rd2zw zO|D{UE@CGNcH5I4z-?~#eD8$c@0)Nn&C>_9tZ?1g7kdbUscrxU3EoBzOje!2)s&aJ z*yWeD(IGEq z?HV8(d^VGt5qJH?DWb&we8GA~J60Ez>T*B%2??l)ti+Sy+xBM9qp|Rrrs3UZ8NYUlRp{#pJcG&iF4pf1mC#6ALm|w#K``KOTPJ#0l=j zGrl&a)e$5NBld)Zr)=DFvmO-GXg>3L9CE)M7xY@I9#>ezP@cx=OAV!g>+n!dwv624 z*_DmeTLip94j}S*_qHqpguK=9#D5AYq4-(5$C_&M`^)-t!a{VbSB6L=?+%1eN9_AbBg)Hb}Haokl$|| zt^0_}cwC3tgqbcnvFG}JPymH>2(C046CV$I(MDmsxyEU$B^>526uYX~YEct)#GNON zyNx){atK^2N90{WDt`ZA&i$rU?EsCrTv~yFrB(eumR5qQotH~1Gnus(%DO1AoYx1j zV}WI_XRLYkE|*q<1nq^$7n4@P!yr{b17K;z_|K)4TAz+Gt<3F(1;U&V5pc4LfNFrA z4c>d0=!^|VW{6-~b_w^WX5ByOshOYjl;kBnrSX+WaxUD*7whvQ{TH9#7Gkv{3Dv7~ zxK~K}BE8agQZEI##}}~4SL$UmF_V|nt-9%b9p8rw@cFskDFRk6Sf8KS{B#BM^PfJy z$w>^2$4PQ$h!!)-AaY9pP>zemV10gDfBO8sry+KvNEM|FtSdG+l#tuxq!+n^_ivN3 zHRW$fCR!YwgZ{HqD(cJH$pE0S*Lr z0Pk-xL%q?AF|PvL92c{z%~vE7a{;aSz246Y83GUNX=1f?9*TE7jB;^lxe0~D(EAt5 zabC3U%2zhG&q;gDQ=9296rUl{cY))+J#CTr@we_4B;Rh*uct)QH{*X`4&P3G0Gc(C zOIy_k?*#*Ck+dqt08f$=Dh&FWV)P*g7k=YKp%Wa+P$D(zIHu|Z2 z_P0z>NZd!``I+Y>^YzMUiqe_x7I7pJ#L)B|%?cUdg5M2r9T`{_tkGzDJd#_JXMXA& z6`V3oidq2f^I*Hr2%P1MXq=r*Es9HBeAC_KaSTQD!BKo=g!%S>S;%Oe{n$G2e2-Pu z;yGacdq59*pYIV*N7o*16rH&_YdXg<&6+NL6C&|3(?*jdO>^$Q;i;TUcxszQ8VUm7 zDT6=ZDVOqjx$N-Ba=eLxv8Jrmu^#i6cRGFI@ku+)vsr61Ug zp@&gQ+5+q9TV^J+C%7j)6ZhDXeWQ|D!*HZtxV6-99=}~2uCt``Amk}ty3bP%fWGvn zfr3uM!qAC40@+@+vq#v&zMT4~2egM&$G6w8&#nfyNdF!?D-wl<>v#pDORldlGt{Cxg2`RU96ADU!6m9#@zeN!hNez0*Q z4CbkJ7rr$4HCE`I8vfr*evBq$2C652NKORbMe1xMv;1lD%ZUhG#OKwD16)|Z&Psk> zMh^G^EwNd?0Q7zo7?Wo_K8#;AUZ1{qy(U7%<+~`5ervFHKcp?Sp&qnEfm=hlh4Ib~ zUczmB`-R6UPz>m;uU(}1gQM8ZD?)C|k#_x-2KFQte3+ngquoMeoy=2Gp%@ltkWUtLt*ur&wR zdUG9%Oz8p0R5kcgh#Az5Js66{D?%6&>qZlI-os(hD!|p1LWCP@QTTK{r+T zST7O{seAkP+(GCA4iyp+W@P?N6bpa&Ml}g=W)HzH+Fo6p%0|}Ga&lsj9y%?Va)&e+E~scLIpZTI5g}`JM6XE$9H)~6rcFz;*~f~r zEs@U4Ul@y5l80_N(k;=PjS_;-Wd@&ZpV;&IAUD4lxdO{S$Z@mex%$YHT1hM6tET~DIW(X$b(=yH6luOI)nwl&)#NhgC3YrMtG{c}4?a48%CeuGjJ)Tlv5|)^<$>uCO%2>T9Vc9Vj*{ zgrZ#TT41ST3VIRJ57+l(dKfh}#eWU49#`DcE>MPb_!;}Iep9nJdmhQSfydXf5715P zuO|R{YQHJQnddgIc14@3xal5CTWJ`R_%wf3oEAz=yGqy?y%8IGA^MY^@@P!`ap-;- zvU(fWPhYv(S>qTcy+6dbNZ04A%`A2``Uc^LKj|ro;(Zp4S&mT2YS}kkSEZ!x;1UPDC@GHanEx!emmHX2pZwE%JV0LcT3hX8kgNR41t z?{XiUh>&ij>_V!l-PX#fvekxwgfHc<9|DEuq|g`erAwoicRPi-Ikm$t7` znCZu&N?(4=(()LGZ2}FYRvi$ru%uvtF}|3QwF6mgXKk;EaFos)FbxP%QyM&fA^Ac6 zDOFE>PMzut_&2({)L|hPsV;-Ku_*HQY{xA0U<`N$Z9+xne-1cM_`76u!*lW(xI!yrFxqc?j{3iEgA+*Q6R#a3A<>4Md! zr1bEIT9VY7LpH4FBcahkwGKH`eOZKWNn4|>*HUPmvP(P%mHh2>_hmrhSEsMtRW$Dm zT>JbENc_fqi(&Qe!brt6c3&l-eZ?WF20d|!rN{fZZs-nvzWQp@wSh@4Habw^P1=&> z_hf{uSsZ?Yy<+4$`NY!G(yO+;nISq5D(-R&wO@lzg%Jd|pobZZm?FX#tM2Dv=d zMHu*C0>+a9<^C08C7;?b?Qrhn{9;$($!rceDh`F z3SNC{VMe8t_J<7@gRNI((;x`istSW3;*WOR>D6@}xa>_0|L9E}LP*WSsZ^8fqIi3O zrBzLxtZ8G5qOnOTMDm;`V5#3CDc{Px8PC%8IK4Fcyt%lV1u-ebn__J3pPI#ajD{&G z9k{o2pAS18v1n~gUoNfme=M!?%tZccX;skxe!L&S@FcM7cLVbDqA4T@fVFrN1c2n! zm+BR{e)Pk(JN!a)*^-|dgoPo%HNcn@r{LW~G-57*8Gl}U(aC>EZG4ytXikCPgnP6* zX@c(I!}xzKt#nfoWoHN-2gV2Q9fn%UK{;$Q42r(5ImM12SMs@-e>{4y5xCbcP~#@P zot2{pFjcM*_AAfL*~%4*Fhff80;cEX>BPVcO;PUFS0!h?|5t*5Y{PSBmaA;3HQqmXF7VNJ>l@ZYL;&^l{ zJ*aM0S|F~yTif;Qg(T$Qg%X_g{9T5F<56e=rwbRlzQ6Z<3Cw#T-a=TLgrCBOoCXR3J;0HSz2#ZN zH=}qegqbKkl_;pgbO8v6uU?&UkkOb=>wv1M?a!v+*lR`i#GnLtD>_DK+r$zQAI=3`m+RA74T_y3Vq_!= zUk{$@GAVf#03@jRtD;Wiq&47AsXeu1&zncPDrf-vQ8OX2S0!XP^IUp6{-&YZGjcj3 z=AuA7JE1c9rUS&n4RW#z;wTDxmFFqclwDZ!kqii$DnGX2^D*|KnVgWoG{}5k^mE3^ zj|A29zbB|5(T&&yRXazt#+^Q1wvoOkV+_RfJ1bN`Gf@I~EegL!@H0VGjRF!>hd&ck z!sR=LB^kPx2`UzBg6iy&r6R#RzGSI{es!3e1OE{E)XtB zLGM?SOqma|&t?)N-ksL96jJLp0PY0sjhP5+yIsXCPcpcw_x#XwYj5e~;=XqUT7{>f6o|ISk3{9viN z0G5hkA=q)rnHEaT)0WQ_oKE7o3M-*Y++gS(`P^Cud_C*3$lpDRAO-r8WIZ7( z68MwYrB%XDj4B9=QEesd7A(W#BcHyW5jaL9ymL8bRT$GGUw$wH#q{52$NA(S_M<&@ z_T5Qi?~YeZt<#z!p86Kq5*pm-E7hDGBTHbHqp2F*USj|f~V?Po#$pW(vFZCX0 zcn^gGCu8S?sowz_DA#%yj0_%?sD6#1&dc7&(%k)$|xC+V( zuc+e1GF2yjIoogk(8x|c?JG8S;PWN;65>vDRu!L*sUons?;Ck&KLh+7yRDX`z1=n$ zlpry)$9|eNf5vw7kP>2(!i=u1IrFJ};WUTCTzM1Be&}ue7_H^anoGCr<~uL}kzV(u zHkjU9!ltLFex;`hNO?!oei*AyW(P!8I`yQIm9`N5$ym8H86 zEomf6A$EH#POMN8RCn_Okz>+{TFzrCY~hR>IE-*Y#H7rze|5CF_8nq)6E0Khsly;!p7}#h=@y;!iLabX5{U zeD)El6ynyp)=OR|gxz21Pyg6oC1LkhF@No^QUrup+%FY>pdX4qU8uNXyG{=@XA0O~ zeZcDt{o|n)Nqu9&ttuz|_oV|#B3w7XJJl;`VZ#>`bcic=L{{0)&OraMVYw)?kRr?! zmpnDL0u@78tp<=UEXzRh4{w)C+YkDoELMXbSjrg@0iHi@r#!&(7Yum*NFUetBW;Wa z^gWoYzazMj1oxD@KbDZK#^`%ixrI(lq23`3-blvoB#U7qiF3?sA0jee1*Dmr1*_^< z5)pKaWu{)p2+$8meG0E#f4T16pdH5%C#Mt=7s1UARc#%1t7rvEJw(9(DPnrwyQ9^? zPDnfXvorK~;kd+Pr#O)35;O#$$3fLiI!1B2Gj38h3>Rl327lI>U@b z4w8p079w|oyEf2Th`3B&*i}|NgD1z<(%+XonV0P$)jx?0bOXnX1CL&^)Kw)Cu>wnY z&4@V9a`(QWI#r$rgeJGUhy@2xqN)-Xj~0ibvS=TODn@1oGTsE2`vK!tjkUAly7yur zV4kf~)U%BSm7!fNtM-kpT*cSy!s|apxGxIOA{42jO; zYKIwC+B|Qi9h6j%#UVU@?^PrKJ8v5Zquy28hYn=CZ@8ni4zfviXO)bDX}a05Q98P= zegJ;xG3zZh8>a#h21K1lh)1=Uyx&e38igjk6<>&er<^$Vg}|FRh%muy-m8OZsw|N1 zKrSKJp}b%`MgVqozE3Y5F&LkmVzX^Oq5FI*QBUE#t1JtDmolR%47$-DSK;2_#`Ok% z1?#quiUU8&ow>pZTw8@z5dpum$3veoz&&x~cD`KpZNa5(%2s8iD?MrcAGzNUvkUM( zQAp&u2gQ9j?d*BC9#pVLT$HpnpX^pmyrg<5`4dgNl>Cu|O=Bg0#~5v9i4?5j59oQ& zI_WezPWf?XKY8facH@2isco*u2;)*|S+X^|;i{U{pbnJ% z_I68r3!lnrz0-?BOWSeVC$pW8fwD)C&jUqzCE%ARn+1J7mb|{_eWGBL1KrUlu+wA+O|6yxTo_C! zk+^QGGE95h(iZxPek3l)W$?kk?Ir!7)1&`*e~G`=F={VhueY@h&-PdY?0e1^hT|4m zM?NtxJ6Q%L;acv;6MtmRfBWiUX|50|Hu7tA#e2EBvTvVl@WDx0Fg$bNEGQ1lnyPT8 zxt%{DXA37e$CI4=DfnAoc$X$THyy16zC9m~qy+e5Bbz5cW~#wp^}9^T4*!Fp#@^xJ zc?TRJ%^sSWdMa_%lyFHeI(rrGSLPXD@Ky-S)4j-4`f-A$qFkctW3^xl=83R-JE}uA z`5szPn9n#x3(8g>>w$c!?bpL`1r3Ij706el->=M6FuM2Vxz?{)08%4F`T~L8;WcGt z0pBR`rmT6kmvoHY{Q*{ai2nnu;>ChhVL!ksP~#e|x`gm6#kho_-!e&1JBQ`wralA` zDFa*8<=ad5kKRTerO#jue@g#m`15kaaAZ604hq#eeKM z5t0=Cmh#$<3TybIXw7S2#~S{8$EqrAss1wj@m4lSPd6}fnyA0u(^#kt^O@UIUc?&y zy#6%&)mfCBs`w8Mj3fd^0hrTMz%R4rEFmU&2$vyId!!nur7BDL^fUH@;Dhfr8?i^0 zO*?5BR+fWZA~M~T8He9<*(f1}iFN0^PNQKdf=LRUwD*GD>EG=we?{;ciWI}UOtO=0 z<_g2sRwZLFZUOJR`yHIQVVTl!si}AW2bL)kS8n+W(TWRMV(EayTRbo#CMUEWW zd9vwFWOvqH4dIy?5iy#b%6VIcB&Eu2nf}2#0o<~ixqugC=qG34y2qA9JTDn?`W?HHv3E z^}_^NJk*rq61C3}7)G<8&n@O%CUuPMaz~?47BwSyXU0}HIH>F10oA_@I&C7+Pe4j= z^I>)#8T}{)=g0#8E7hmz;=PH>UuB6~ap?&LExlH6&C`DxJ*te@a0f+yA_8K;L^!CEj{;L#&dAJl5q}m%c zQ!`AIgI7kwM?&cEZLh8C=xp1J3IMByG!da-z`aMwOeu*7rm?1ExDm8%^1v*|i!Z@F zgtwb1vRRAJf|+di9aF435Xib)Mk)5t;BgyF_|+ONjnf}?b-1cC!AwrgBs6iV7TfW7 zpMCYd9idiDOxapott%{zMJL=r)CvkU5xRicf|s5{AtWZ+2GGW?Z|KQU>;a3g^71`c zEV5<@o0}4D7T(3?rcy3*Q-nZns_;i{>YbzMGOIB_DB&(Dz$*L!S;13EogaNWD6uTe1B&*JItnGJ!SD{O? z>Vn}1Sp_59F8VjJ3h&xF8X&8v{v@l0-7W=xuzv{tlrG7tB3lxX{~K9#ju>qRIIfQa z2WfA2iEFVV>VJ||aCM|POS!Y9<#tAf<+Yq(h{egy#g#8bSC3uT8dWC|;df4>zHHq* zrHOnjQ2%C|`SYv(i4&S-l-vmPU`NgCMp#e1Zd7S{bzTjL%7rNY-ed~G#xtRFQa9=n ztZGV7fFD9q!2AY6DFm=K{ zTsb^08RVD-To#TPDq8m~bXBt)-X$#a>sbQ&@aIW|hm4L(D<%vuPTa~gewtvOI=%%k-0-i@`K3%yn{Is_=piFLkK#~49xK?pK= zq&Jj)P_BkLU@)>hg3r5dPrW0%9K-0OP|G*m9;HH05_|l_wc&X68{qQG-N(B8PCT)V zDH5PDwb^rtPe~x=!#9(M`C~XHWylgA-Ut@RRux;=xS*s0+qA3Dg(g>uNf# zDN1HQ-&pO(ATByO3-HY8+&I$(w!{tFQE|Q{R)}Zm)XRfW*|?kHnOMJ`Kg; zWn#*1t8O1&|3?FRsqo(tQ*nySzt@N#MJjEjKy*0G;iK5{YXqT{7g(0eNckI z2f*NE)rp0Y(uzLdC-|0{PE&kBcSPODFe8|jex$jc_Uj#hMAgp0o>6oCNtgP4)Axq1(HQ0e#AE^;KK#Nz87W#JQGP;a!L`W9~MEjH*YvF)k%%d>jE-u68gyZgf)Y51QKGL zwSobUJkB^{$20?C?*-pc+5pu>82Ov5i$B{^|3*;x^#5#2d9$le z(7n^4`m-$stn2=#wp8$swp8+ETMF;8Efu`^S6fQ(lAz+n5>)uz2dHQ2nLL>TEekh} za|_%LaPC8c3JA=vyU0|;FiI1vm%ePtUtk0pxhe8X4iBQ_aWV(CGN>gSGNLoVcUUtY zye~MO8^-x*^$TVe1ni6-%|6tC0KYj7TY-t$&f7H|#5W1HX)gUUMswHGTl6)It@Cn$ zT^6vQWxs0P7>)P2rEqbY*2ry25GX(^&Bpd27_-{RqP5cwPkPBV7ITa>~>M~z2GAT z2Dxg+dt}!5fjFWH`-ny+ne8I^bMjr_vD8O!I{k&<>Qv=i>u_}Ld9U+=n|~7Cal&g4 zesTy*)`w7rew8t2NFd%xJ}ZuumN4InhuG?r(q<%Qo}Lqwxgat&H&Y?BE2;lUpeLRn z%ipEWY3IJEK8S5`#6h5@X5hD4fKaJSqR?xsjOhL7FfTz+G_5h6u*bF}XRE|LMv~1- zvcx7kj_=4OWntVlgL#y_mXgt0v&Qui9DNg3)94hF(jS-l9X2`QS>-9?We`7Z+&?1w z{Bu~v(afcAPrV!g9okAlqP^} zO25EdHOC>3$4JZ%NO1ej1$1J7|FNJV+V1%72NxfKW0vG-nEg^>a2UK|bhfe(>%$yK zQo7o{MR~Eg=QHr;ejBrxjWJ@`iZM)e(T0 z>Pd@jywTyls0O)iSWLLa@tN^O+gDcuMDI0Txfs z6|AEzqL$Pw{;6QLwEHkOf!zsT={LnR{98>^C?<2Pa6~ zHJ0S}n%>9R!i7Ay1ZL<-isyEN-t0X&c-haZN(Log??}C!^}x570VBDYgP+3@vPtI< zw8-1C1j{_X7ri3j6_vSV2$`>QbjhNJJvYu|-btwXJ)CeThd%d%a%1Gu8l$W%n-sqK zQ#)Xi(F(d5o5}f^HMu}#K$xkdQd+|*7+4^obK#QaTGGYglAlezEM;VZK*kvgHmowk zyle_F?3o6`9m%@lMJ^(G^~cSH-^|T=fg6!w}x;imVbBxk7<9)Y#sDZb$?%JKU12OgaBf`)T=fO0_&j=3g{^ zoByKm!&fDzpiZv)rSW_If6@3M{?ho((oIR@7cQLNMZNrg(fHv28b21}IGsz4ALpgU z@7<-w4-yz~sqRC`8T^a7&*ymM-Wu#}WrU|cAdna)d9A8rGk*K3fCLOAAU;jH2-4VV zuXn&(1k`;Bf2sSV{!;hdH%@!boZw!#hf+eHU1Q6SKT@qw!m9iD$gWEMnguY&G2Cb) zI=`t+*=GX~iKb8b-!*WX6}UE>!3X#5(k{Y~RX_CIL+rnR0b z>-?qhYrE9=F}grEB`U|bYm&R{QR7o=O<@U21U~6d| z@sAC)&Y7xJM>HbO@1+y`I`*sHobb*vOYHm1Sjo#gsOF*kuwHsSy)cCh%4q8}&9QhI z?El!L;|%C~=r?ya0vCs#ILB#8{8Q2ffeIWfy>lz?^f4K%K@7DrPCWS*LE=zt#uK{X z6K(LGyr6Kg1uWaG_}Pqfw?)omO%L(KyZ834**Rr;fEf^)N+;)wSJcpkq%%OLg)+K* z5|OcGRibzyf|B*BP#uVU^5WKYb;_uBnfr*?+Wp4=bQWqA9{wmF2s8*jdB&F+s0^;#nU3u@uN(;?uO17+9v68goYqgNN( zBq1muqz&A@@(l<^Q57TE>A1Dy;ZF16io#8bXFKrzFP|RFYk)Um;Lk1)rW{o+*(89% zulh$(%8kK*BP9qCkgOHyF+2OP+d_aa|6XC@SgCQ=y6NT*T*~hfm(ssNvL&}{dV0$v z4k}f>PdhT!V|!LuEl}ifZD`5OF}|`}Z{FA97cSLs{4S^9Ztp$g?{=b~Z~(?V4~#B^ zR0zidxYQ(RQ#tKuit{wz`Kv7_E0#6>+iR235SREh9JTr1uM`2e6mUiOKjKon@(EUL zBu+nZso=1~%1c}dnx(w8c5sPHQC;Fvle+~u%8>2iPfNp2mbK^~EjSfsc*}1{NwE@SW2v1{&(|ESs>~KW(LQtnuX8b=>UN zb+OXU1x%wg4tPN6c$#|O5B#a*yr<4mQsS!q>#cVS2fTdFRu{O1weTrSd)?K@YNf5{ z>7$53^GWTUHy2-%J_cd$`4|#kdn*$s21To#qPOoJlh3ko(&MGC5s<*lcwz_=d=vX-*5wbbxpHao@`?enX5!PIY_` znt54@%$N^$iuKD!59~eC)LG7)3y^QwoW!0do&;0^xKtB>OFenit=k`KgCMDf=2)&# zpwAV+spr2&q>A&Y1~UPL+7SD?Gy5o+H(LwDcbTidrmIi->gja_Rh_pd_{U-X{qym zx}MJEv|xe6*E%K({|N+X`>SP(+q>TM>po98015*1VO(K9n% z6ifZytF4EXwVAhIjn_h17li__u81}@Z60d5S$v5O3`u4Mih(k$R8H&y<}8~Qt_;jQ z^M;ST%b%D$i32XjsjUq$8G!{`HbDh>WQ@c>od^4dRvKnRBUxp#w-LL-PN?6^;+wgQ z2Le>KeGw*|Kw66RRxtaU-^E*r`s}sU8kLdE2aKv|oL*}%GmTRmIS+hadZ(Ow?KdUv zP6JW-dknWF^6tDI)dY5|@I=7PRG^Ic7>A#2zR1xKXat5Z>RV#e8v9emOH#!2>x1V~ zWArd&Y%Jj*F8=|aN5nB>Ii*n`xeEpy&6){0^i}%a99d6bn=%eu z%2)MZ`kfobXuMz+H3PhoeSw-s;=5$I-(iJXt{RtLg=WV2d~7pWbjg5dqtF2evbzmI zyjcf?chB5`3wS4_)oyH=zD8ogoqyxiR3ax z*9}dUlpe=&`w-3svlBmQt@3i_P(YFNLZlpAR|ni^_cMa8Dn*?sY#-gtsIk@nE=%TP z*j%$R{W9L4i+1JFD@d`wNurS>RJvzwh23Nop-)Ua?g!{&3?b?I3G+Dy7CGNguh!ep z8-eI4N-q`a?JgI|D7Y{a0%a1otWBf`sLyl2r+(4Vn0HB}*2e%=8_!w*PC)6#Z#OXI zG&n2oJ?=B#sT>s&JCW_?!NHyblAv0eH5)S5q-wY)xXe5N_l4cq+d!$T(8Oqbn$!D- z`YsG-!RZuYODSt7X)^br)Fs0PqgaI>Fo;NIrnK5nWlB~uuFt>7pSd|~f9-VbnaM$3 z%Bc_vK11w(iZ`I8!VgYlZ8Xe?+Jj*^DJg)H@(>ySf?j?Ub;(JcpMW0iy-JIVzGxdB zTQvaZ{-mTDzTaiu#!^yKe^OGDhfO)HB892*I+fx710^-VXwSSbKKe()=EZ`~`eZy& zI;`L|DW%8fIgbe`*Zp(O5XGx1A{iX~%x#4Yul5c;WZQRjSbr_GO8&DYRpDdyvn5s4 zfLb{oKA72p9kcH9jVfLbHGiW21Q(yP3=<=7bUhm^pvRAC;_9z_yqbCCzHiCKM2h#f zS~G;pje@-Idq7HRGGYj98GeZPm6CEG@gSy2F;=~XSlJk$W{8tq{0df+p-Q^0m?WUC z&#idDL&vL1-U}7{%i6c~)7qB@So`RISo`RO3xHRIw})Ff?CK9_>wY)ir#U+RgCnTt z%KH9MN$IA!u!6Sg4Jn9{fqTtrkk|Z!<@-86t$lT#d))EJWfO(a^`c+aKKn~+-%Lmg z9J;RL`1xEQVOUdq&`t+y?faHlfxP8=oz|{?Xe==4>blF$a}_EF`>yN+|7|HqI1pZB z=OMW_OE&|&fYE6klZUL$n6I~OS6$|#wx$Vw=A$Z^g!#azgao&C8KF82PP!O*)@*tO z=9nCbvS?eWn;tn!4eV>oG;pQF^WE!P7C=|*fnO~*jSeNe*XixRNLVei zNM>A^S{;*d#>OOE(-J1od*q4qUh}wRMVIqB=_ySNU?eY9lv?{794hL-x$=Q6E80P7 z??uIRvf%$i+XsC7`hRG9>!>K(w{83OHV{#e5TvE09O(v;?o>)bY5?hOZbf2f7-~p? z0i>lHq#0s>A*7LJ=(&aVhb)5ULZ`(DtukQxixA(xa zS^9ins|dwk&p?A}>q9RkU|8hZ6@KO*g=&=P_#g=SvgsV1E&;|vK8W_-+QshV&v z>Iyn4u-_ikQ2>zqj&sr)iCMHyq^{EZ_6P?Pr+|$Fy!XEY_f{_zoLBeXzDiZWx{!T9 z7H6Gw`w)L3N6>i{LBDBHS9HN!S_3o^5ub<5aJS+!3#jrcRDq#1{`Gk(=Npa=Wx?Qw zJF014{RLV}_k1aDxP3)`bNf`=8(ZW48*U%@G$JMy&_|K}qmNoO_z!(l^8ZC2bz$(g zKFa6c`l#?<`Y6ziK1v7BM=AcTk1G6^K8oR&J_`FEeN@BC8+{ZOBJ98DqeA}&ebjcp z%nNS|@c*ojx^V54p6dtJTmRp3`*Z=`@8N_+6LgZe;r z22Uz`Mn6J;{(klY;Pxf|Ke&BZH{3q8e{uV!%ZEgN>7zu<(fK;{aiM-&H0vBTYGtmM zGVUe36l5w>kJfFX>_1qRAS77E7v@fA-~M3Yxf*xg@lAeW(@bGe{Fp+{mQ(A1+U-KBU4Dj|L%eh` zemynB%2Q_JHi;ETme;1(qfovfouiY8<31hyHFvDQq_J-7wE3cCg{oX!Y{PSNl8>3f z=s}6K1GLYr2>q#Jp^y5sr=<598CZ7ZZes~GGETZbPfEC4CCWO)Bc47ZCJb9@u$Zo0 z_KpC2QDF8&J^I7FLQZ?tP0}W;h@N$N%OtDhal^HRtp&|Bo1T0w9>#jNNLWC)G?FK{ zQ?b8g`sj+@if?f3tLf6ndoCdi^jJN{PN55}PiT+q6$j9GlDDG%q+)>l$$eE6pC;Zw z^nI>nVG2rqphJnngFf>iMtTcUE&$214@2JN8_5nHUQSx=H6vJ_cm@+9j ziDSKUbKWF;#%Kpj_?Btky554otPMaAeM%OnjqByTf_i?+K+5%z{y<2U zFNrqHE<&9SBVKqOx`K+YyuJ9`D}<{}+31DJUP9kIatqda3S_{|b$m@!&IzTdYZ|+jwNW;|v{7Ds zM`?d*qdKzx(nc}3^}4Y+Gu>ENkhM((E!BUhbYnQCd8kwae-SbO)Yr9eWn^pBa9h%z zha-3I6A0Ff9ID^jT7JQ`#GD|47JR&%OL!{a$ZpioRjH$;X+omHsObHC$ zF7C1k1uEP>K5;rQUuX@e1Oxfcp9xcaRx;l)qVlL`|AMWmki(nZMt)(lPR+eV%t6EP zQ(T^Q($?c;F`HBxIJx6{(5nExGsJ#}k15WQ@TW@C0Ujc@z&Aeeva-)lOI8h*gM%pW~^*PK4=YffM0JCUQT#)N5xb{)~Rq*>c(@ER00(2e#m!chw#TTjwJ zK0MsV5J&ccUriEiX&Dt???HfEA3b2%c-+X%sZSOPSTzRlu88O|{T}0FI9kZR4LM~E z?BFkZSHMOOj++Z!hH83jpwi-sO~;f-iW<0%iONsExaJ3ky;@5KzWU?*j^axJUm+G~ zR_+A^w;3h#&kkM$FER6FOq3z+oXlC=w6Na@h`_BG`3J{4eL?yXimHNWd>zUgGG7Kj z=9BuH%$NKZnUCg%%ts0To=%tw;NFf%wg28hCscC9)U{6x%V%B=RM+=XRos=&j$!9~ z1$$f!6J*l{e*QD&F?P@YXa!QuKa zOaz>~H$#yeW!XCBi5`BqRq_3dJHrfmQ38M)k8;MCt&r1yM>mLNwto)IT?c^XC~M%Y5I3RQ zet5*&K4n4fi{L-pos)+I%Od5A_Jd=!1M(N<*z{sc_&j(HsJ!U!#@hcP^R1Jm(|#4S zb-eS@AX1u+RL)HhyOu`eFEXF-(>$xF<^r6*$$WAvQU4Q}PvRGuPw9rt=YK=ylW_Tm z%$IB-6ee?-nB!jK9$?~O{wz;5@s}-X7_de81~s&fVEl(I>Uz3U`elpq{l^wX{Fg0i z%{NMwsE?F!qb)i)HrA)VL}7}E`pJcF>_{=Y+v|gZg~N108VYnn{#VwM;lQ>4b7>pZ5^<_R@m>`fbuYE)HSLy6i+x^Y8A0yMUokgx069aI}5 z^kQ4vKe5PBr@MqyNP4W6O`Os-~yPj-gw)SaOgn0dvOfy5|&JUX-vN zJeVk2@1*@wYoVTlmX`z;Nn{^HGSyx5#rrge&UU*LneugLlkA{Mr11{TNY4lYhnje`9E6<=e-j$^ga-5VkEbomV|UDONJ(X0 z2KQJKBmMY-e60x`sIl+9GuENL&)gOmK3G={$GiRY5OXI&ybNN8wbQrQBz5z#erYAqo3W4xyl&|v8Ev8yzGY0_j4GMw~|9cAw|ODy4SSC5~FpJG!p`C*v|M>YwD)^%1K!x z(<8~9RHu&WrD*-?U$%X#lw(aniBC%7@b-sx3uLz8%Zr^1;iob-dVjg14*zjQc|}lQ zt1TLV!|8Yb!xiOJ0`y`3?TXrss=jeW@t^)_ zQv^N%TlMErKa;8l01Qzn3w%_HMzf^83=VGvZtLi|V`?#JRT|yuB_oPzAHir7+sdJ7jRbD(@Uwq(8J&thWaz%6sTu{QvYSudRYR49zoTO& z14&rc+XCU@N#(P0h?0>)?bbSW zpf4@UA|Qz>2#94I6^03ZG`ayvu*$A*w2Eoz-3by#XM&;`6Q^*7cJd~hJstRpQX23T^}f?wsZa&P$GN=`=*kyCGl?8Y&>&rkFE?>?A2$yz)eqnl_= z7pJ(Ofe-(QKc9WTrjiydFL)i&t$KeVd@JwCIFbF9LOwQH4*Gcx)8{U0IJn|kz(%z4 zTK{hOz*zkdLopw|#(R9`B3BFcyuM@YgZ^GC=I{+MXq1%xCwc*GH7G?O!z?~3^f{nc z4g|+fJ)cc*&CHG>>;ndE0anH>Knztt^acmlg3av{&8eaMr?<{%XpQjEpJFIcwdO?T z06pPt`0#4AyFXv4NYEsaxxs24B5y!tb1-3V=|)7>Pw z68l>R)eF@9W6ZK1`?_GcyX9L%ZA-x&g-Q>au60nz`-S99m+-yzodAziHJuyup5!%p zPb8iMbl(-wL0$bXI;gt$UFysY@d9k6D~S~T`i^ytclBH5LpC`4+%+m^wqh+5&z~*6 zeSdE$#YVx8KR8?>X5oAjJ>45P16Ep*)1r=E zB^^6Nj8b>jO86*!-R7w-BL;^{VQ~%tOSx+QLhtQi=TIhz#vFi`6gZejwjX$cXe%3= z($vnRY^OHXM|hUV1ADyOv-jHr9J%I4qKM8hmhUL!>qXG84Ln@%E$NqsC(UJt#dR*< zw~1ur`{o;205Ub!2HKubr(%@_XJ`blAe6Fs?pQYo2nW>^+R(>OoqiHI?Y^K!$>a`9=Ay1Qz5 zI7s5M@A*8DY)=jBWVSO>l_$Iy5HYOBA|FiD;q43r z0C_a_QU8hFt18Hw$bpG+@cWu)lHr~yK8S}A`$!#_d!z~x2oE>+FRz z*wu2OxNx%sRR%dm%|URqQ$xMvp%5_*dL`*)>l};tb2>8vNF>Rrq)MQX3;4c#O2h!m zE+ACMDik)CV=uduxNd%WP3jhDFYgW4gjB1$10whQk7y`$MMEhapsq~P1TN06Yr%c| z{*b4$VFRT)=`G@}m__F?DI9g*=*EP_!l)*sI*T_Vx#j-43t(YszEAiVS4ptZT;bw1 zU-oFKG^A@iM=4f!hmvKH?>wd_Q}rn`fs8Ab%&=-aCqcpMJBCIoTdU3%C56^yuhG7G z{7DHh9mmxEfHm1Q6RmXd+Q*{X8{6&RMNk0nwQW(YuTR8oxQ(V{LDu^80~Zh&+m!g0XK-X0xzS`3578 zU_7rOxT;`C6w$|YC7_Yx17^}Ar*y(7JN-x)9`hqI#au>>lHNx8n0`8bTuOR>UM8HNkB_v8J(3H^TrQF7 zg5)D2If5HBAIX%da|%KD^D1gzaU^I(e%-dA_{WNk3Ow1nha1?sj$=1)s7;1PvN+ub zf>keuklVY!{nzW%o`-@mhdgcbauKVAx~#xNs8KNri^YxtcIz06VmSfrwS5qagrEx0 ze~4CRtykR&UwlL6j`mFsbvFqEmK-xH2g`hGF}lFz1IbpWLlr`ZxQ2o!UO{ z0XYg=O;W3Smh0DIIh$yBT)Z5dsPO9dXN>}NcN^88ms5#|?H~Dny`26I!a{U(pjRbl zsIO~{|d00B&hWdcvmIi=1LtD-h2t;PAk_LFSk`VpJiz67- zIbIP@NR0`85^%k62ey`0;39b#HxP&onp$rk;zF5!@+Grh`O*ot@{@m>Oh)t@N)2NJ zjJEc>Nnv(gnF9`{mwNlCi0Ohot%M)hQ8AuuM9=s-n-gJUGn_}|Tg??2I9XKuA$%eD zZ406=^v6D$3mH#0rh{Y-TU{YN-6sn+#^U3jURur8T4S(kEJ4Ks_)b82!ggVH#%Yuw zH$7rfq0&>HmgkJIZo$bQ!(L*4cmU1H`XnSSWaMXC>e&kN`Dr2l?erq}Vg?5i*Ieih zVgz_Q^vcoX3B{f21iH!F7ovuEWyQ-G1a7@`7gW+IPLpKV=5q$>_q^;L@}s0WMv9E- z%g?QTE28iU1$Ih|*UO0z#1^zC{I3o|amAOi_Y&=@GHfnnut)S621$a=#;t-GP{52d zG~zbfXV6;k3&B^fsP}x8W>evWbMWOQ5RkpkC2C*#M4hy77K5Ei%be<~axr09&r9*k z2{m;l`pXHmOW1}1mgMKyL-OVX9Lf5_qacfAaK=pb^1#@V4QVRSo8I<>IJz7hk8N4( z%zNWHrZlK~-bGW6Cc6;tdz*q!Yx&je@=i1xr8hj=0{2tpS$)LXOW2{$x|h?i#QR`M zLN=nIv|JHTDLDIOkLw6pn%udV?YZJTuhOmQsjZ(&_yOBci z{3V6Dv~%$S?k!ip6$^7!hQzQD+s!g<6Z0Mq1ct!IMeA0v)Wn?4PU1p6CJvjBVLU3Z zlgMo?2Zy!b1wbsxVVWuJBhj$7!k~!rW}5q8rBRCCft#Ua01?~rrxePoV63D=kgvnR z_&iThgVWe?2Ik0iH{DM`cJS4wj_EW2a^^iQjC6E9ZNEAKXs~-qt<;UQny3A-3W3MZ zV%LuyB>m$?Ph$vpUrcrWvC2@P=C(crRhS%h)jzW{b<%(W2V%|u^)#cLj@VnPOho`) z<994#o@*MG=1NFBm-$-dkxL+W8AAj)x)g1!FQZ3Zn2^R|IR^)N6rj*Z4o7tI!w3_d zsI#Jc>ny>X&jNK&W)VOK#q%#6RMUUxpalMJI;f_FEf9aqof9as~Z*)+V5$deT zf9s%h|D}Uc{H22;`zB?a6{x3SHorK8Nv`_=D56mf# zbOL~*YCrogQSNg$731C(S}Hd0hZ!tRH~^Po$CQ{(m6!QeYg#@PL#M53!6xF(9nuNPDwuu?#89Tw#Qw;5g``6i>*z1#{cW~5tm@EjSU zC^@s&r&+XFkm9JQUh74>a}M1%wiDz{uOS_Y zK`^jXE-BC;g1(lD1PW>w8K`?wP zxxE?oCX#bWWH}8oGWgVqYndQ7iuwu`0C$wEP0a&@MUg2GPM*D_u~S9!GIf*(%8>RF zYjI@M7#a+WLv4F9`Gs$+FUvRPFa(&VKMM^RQVGWXG%Hz^*gXvofi*~&2ATp+6cOTy zg6ou`sf&Oe zH&5xUHa@-U$~8QV_}unz)hkB+S+?D|S-Lyh$%p(>vduHk2)X6L(|TKUkK|y4gM3pq z8hA&|NTreQdNvuf6v#5ZJ-2;%D~>=+vAt3J8mSjn>AhIvpSSeR@lKBp=Z1fRz!;+` z13M_DcLB0Ok-_j|cz!fAFLrugkZn5E_hjRu4X{3)y;)-Ajpcc@hw|zmQcZLisvTW2 zw#;2Av{u&?NS0ga4&7064L|WnIw(*=hJ=|Iu_ditEedN zeIE-&qoYYIVAtIt;K%X4EBOn9$IM<$Jm#}jrUL`RkFcBr9vE%6b%pk(G#huMWbq9q-%f2!_jr3vEf3x| zlIl5TP`KUZiGiNj$(bKStY6~_ciH0F(W~trM1v+}g_!v*iopYaTA;SLHuyT^Ehaon zPcNUo`#~&%NG=HIQD~T9t-A+G2!o9gC9m!-3kZ1yX%6&cfgM5LabS{s)QeR2s9mlb z&?AlafT`(SJX1bXbwPR$*I-jvC$iprvh+%!-Oj&_EsLEVtmt**yn)=WYjtPH^;}r5 zULw*cSYCOw7nE41$?xt{=VPY5G<{GFi~&UbMC{4a_a*m!A9xx#$#*Hy2N z83A(Dmqvv32O>{x?q&cgsG`*OX9T78O*n@yojRM4ZYCo4btJPy(6&g4wMo~$pf+?` z<7wg*0_XP=Rs#$Xj<0-v%5-DQ5^}4J&ly=iyFSfSGb%A0vJn*=Nn5lCW#g+Q&=*W? z9sdxAT_3{L?TvChC}?W@I*id~r0aM`dyBLDa}`TnM^ZWMk-jUYzP(Jy<5iQfAJd6Xt&%djM2m{XDJXLoM0XS2eF9I+$QRZKFFk~`n z&qlWjUB7DOHE1ea$_}QU0=vgwOq4p05?n2VC7#lK72b)OH0Pr~JEjk|%VZ1LQZ>d5 zAXKWHrE62xj$ZE8mwch%4$Lw+4N$i zj&59`6|2R?of$r#%iR6viqZOahDz7qOKG9T?wR^!L;S{cMBzIn(Y<4}IXGwz#&6Nx z`Z8%w&kdI!(}^yA%%Hh{Cs>?mOtWj=Zj}5)6!Zv|!zA~9yGhduN?`330ry6un+zhQ z^k2s%-NY*;r8v+r089jy3C)ub>BlRCfZUU!1ry6$EzGq{c7ZiJqAWI0jhG5KfXIV^9w#?^yMsbI0nBgkjbjgX5EDu%wT< zKD(X2Q}L1Z(Df#&?4s0MRUEMxQh2oKIAMr#rFU z1Q7255mVTW{b?;T^PFE%3gC+a{NXh3Y@N7zKg)Xq!-8ZC2b2S_A)>v^B};GORow$S zY(<+FFn3NK1uR7HhQ->_Uv~jn&4KIHbCP$0&3k@2?mZ3=%)1-Kqw22Xz&JlLCZ$l| z-T7q!PPV#=B{h$6vMx~J4Q4KDc~Oz8u$kw*?3mS{2Z*4m8c5W>7P%xfQj-5WYg!fu zBCRz%ZKH4{=N~=o86LwRelbun^Isw;0kVRlYY|l8pCTv@B3;MzvNr5Sr)!g1=+cFj z|JZy0L3ZMT!rr)g>5C$~v8`{=QOy-tWMgj{A16>}N`So-)7Al|m7GRf%S~B!;3UZ& zO?dw`M_%|~VGt@by4o(A4FFiVA%iBCI`NA5m>i^J)Kc5HW*7b1S-WPGZFcborQAw{I2Yf zv(3wBTvcD5^rqGXh@dW675^oIB3G$1w*a!IYY|jU#4i!l!Ho!N;~x=J+Ak559NpA^ zil9XPC4%ye++T7+@zCa7y|w^Ta^#f`%xLYT1AJce?8`U8&WC2yHoQ^D%$<^0U6Ggp zn9wlL7X!|VBr@d zE+waLL{LX*^I+?E|Hnc%BB(e(1a+M~-T5Yen7Jxtdyy;lNGc|-WD!#=ZL2^4_M7P7ui)DA`vXd}E02a7`mrDmVhafO@0y8seuvr_<3fJc8y{6VS6lALrN3 z7_u~GITEj#B%Gpy$RWLdyhbqPF z+kR3^iW#G@ojv~7HL;)qx`fn}+D#Lb`q8xil8g?-Hr|D59?D-c1aP z6HpKC&Z}6nx0H9}YV?Kq{Z46TS>Y*Z>Ot8D5?_XHRN0CH3&GftE|MqRPwMS#$i&?4 z?syK`U#v%28LChNG%M7qR&@Vo03>1S7yngRmOkY=yK@o|#bTy!h~7|R#-W$%%9MG% z^SSX;YzM~#@I1k=9Mg(EjjychtwKkWAbH;)F&ctguwk%gf%^)uRMT;oCWFWTi9*Q> za%6B?q1%{f$!Hc_`c{q}>u6hrI+U7BFu0pyFF7{ag%D?GBse$VemRhH;Civqi!#^l z%jl+h3|MhL!UxW6#@XJO5svb636ShDz5i~1g{4$ zRK@s>pmK8$35pQ+>(&e19D)}OKoO{I<(gk~gM%nM<4!e)EpedW+KT&p6@ChFzwp;00~jt_Aap4mo_ch@EokjgCa6i>ya(xbq9LTjB@D+YgE!B zW^HPf)DeU*Vv zia8KOL~O(rz`3;qWq4N`ZP=Cf4w$kHgv8*(19+tA~?qQd^TPY?K2@NL4ihb{IZtUbu;9Vv!XgY1+(exZP@$YMriu;u~2$EOA; z!tkXXP-MC{OdNJyj9nLi7RC3qE{OHzOY3n4!}3GuR>Z%d{*^vG#M)|N!A4Dag(@&7 zklY=SSav+e;w#&FUg^ES-`$U{{~&xZIqd$1OP5G>VZ+}090xcC`Nk3mKFaxMR7S@t zbqSPa5baK9WDMz9YJ{*g;045+`|!A80f^w4PDOX59>Rd>eqi zG_a_9_H#Ig;mRRjiwrq)`z6h^xX26oJmJmTI&Jz37ZXR~+O93pId47LTnvE~G@*x$ zE3Q6R4gP@s0Q>+LyBcR$hm(#)y9$~g_6W@+Ja8hU3}!-{OzH0*5~EJ_JL7ojt9`YG z7ch3%<7}XIc5VSf9r|O(`<~|51CZo;-<4D2@OhAG*!>X`2jP2r?PBLt*?C|N&@y)K zo9wJiemG!}>@YYYS|V2!;q_%&>+4B0Rptd_CTP|_lQK*v?!+)jgGuwXDUpLB`*5eJ)$9#0Xms>@I?Kd?H`X;k zc)PJ)Cz%j9unr@==pvJw0p7D-wkvtJ9~R1Ac66%yFBa^1338?&MrYdcC)R)cLq#Wxb_Lf~~LpUea^d3K8oWIT4qT zH7&ZawZNMi9unZ4v%L!&G2b;kGqoUs(xNwNYlYxdUchkNh&;mCp7OpfBVq_|1HgHtJVB-fe z(}nu4)ZwN-voPVeXenHH-8jp~1_cB+8XIZi^_L@iK6tWuhg6GHnDAT0X_xhlC%8U! zQ3)Ozxe-K3KLgm%w6w+K3Dv`Cu9p(B(<2XK^vuBA6=oojXs#-U(7oGjP+sM+M@RA? zp-E?jvf51i`NpSyz&q_}0$CO)K%_p;4!(fE0b>5S>sZXOn6%sBvHg-Vqx^FMMOQW;mwL)Wka?X; zMFP2$SskF@c#W0>kt-s*jOLpC50c0|GINwJ#b?S*L=x*Ph}y&$YxjAy-%_NS{SM?( zpF4XLQ=a(v?c1QfqfYF1^c5^NRxxwi#QK2NQ*VS%y2iQuj<~OJ!TQ{DnYU&+1btdc zlK{5V%?y{Lg6+~&$5JIdEJ-~mK;;@KD|&<4YtNgL%!U=@>HMC~o2O2pD(bsqgt@>D z?0PC+d@le;KKNC8GD8zs+&z^CUAzkJ=(?#rEd=a*z_T;5k>51MJ7|SV1ue&i8W4Ar z+{9h%DG%0C)l)`hUy%?5=k1x`xen2i1T@cW0TB}UkRT(u%?u{1k020Cz3ggbo#3H1 z;mQw1tpEoW&{mDtSnoORb_AO~h8p{*3JMb!7LE@aR_?k2QG~fULt%Pj#6FYEfOW`s z283!WzQoJwE5@3G6EZBflRxo>FiEWT?UTL1O2$KqW;wWm z9~mSZNkaJXNu~OQG!Hm2oh2MtEo3FdKkST-gsOh@n_1V+L&Cl7%J3sjvfI5-RYAhI zWBvN0udjt@LduDAoiG+{Sp=E2a0R0$%&XMwG#Du0+Jf_g(o7|Ujqbl0f64O42QoI z+#RbH<5Ig6WitQrqGemM!<+`0{CRrhZOtNpGayn`CyxpVpKxeV*plznL@j@?K7FRA z!6SR)g*xHzfZpj0N!`4I)F4Uj3njtJfi+H~?RA*tyD^o_ftG%weZ*qO!Eu(jR5y}5 zYQK*p5D&n_#)la0J_`WZbVP5m9~G_8?WDwOvh1NKuR=qlwH{}&c>XB(vd~ipu=S8W zJNxbC8765(L?RmWAt_oHiMY>YVyoMhKzIoh{&0UnM`t80VL0k1o$#_svdU1h(>?K2 z8AJhlT-Tu(KZzaed;5Ud7KdjHpMC39GfwnjmcM- z_ZE|?)QuF%{+AT0;wF%)CX~V9OY$W9a@u^KWl!w{AC*8t1nH?KNRwBj=w z=)NdNzdN=LsTz6cuVsGBauKxirTIEbU<>0{NR(&1eT)CpY`T6op! zT%;df1P}6B&citAFtl|{TU75g6cw!W92h0BBswo$jyldLdEUkErkXyH8(sV^SlixM|Xy?tY((2|RrFizj?P98NV zX_LJ);n~4!*~^BJkRBVg{r4A1iHW1{KJtXn3ZGsu^{RQiq&^7l=@j5#6D6Q%TbILl zW7m0mQ|2f`X%$cDV5pGTIHU5|+j-u&riQDzz2<`=Ou5~-6~f#k(C^ADP9Hz1XgJJ3 zAF$rP3nE>vSZ_xvTIRFw(ae@EEi4i3=p2cg_Q*z^26>JQC?%1UOmd&BH0m%7CL(Pe z>z>S}@9at?#YpG=br(RaC{e_vb9e_w(Lr57dYx&g#vpR*W1lA#=s(v-iLd6Mn#{kYj>;|; zL&JHT-{7B(9;Lj|1s*nfS}90tJ1UDR?>$$T2NZ1Xs=b;dGfx08tO~(N0Yb?gKBAf3#0LE$!)<^%PrKg2_H|G~%(GcbHmoXJ_!feG)i4%|8Xa$OiWEa?gg6!gM`gS@;$# zwHy@;xw1$X<_g9mfl}Nc^_uf2+cAqF3F>l83g52(REoOsSz6pZjFII*i zdId#(T>aNZD25xR9)S(8)j&Gt%vwG;59wGKL1}37@4oFbF~U8vKAf$5t}S>)%cWI@ zQTxV)#?kbgt-IGPBl1{6vm=4o@}~9_DD@7ecNRFI=cJr#gT_M0EU?KG+~iZ+`c)=b zNNIg$g}~1IpejrXS~A>dJKiLTWGC?LJ63YdFMb_((P5>Bwbrg!Da1ZK*8$b}7My=E zN;|;kCG`%6LNb2zUih4{N%I>!<7;1ig$erQowa_vhGNiq$WTaTRZ2E^P~)1aH||SF z18G#Y4pZQ6_$EQBFX)1|s*OISoQSO}F2y4)4bWy05252FDRRec+>xS>uK^M&!*0xy z8Q3?7oCSHmnTHDXuBlEhY$wj?-lgHaG~m9V-9CV{s2e3vuz!QqL;FT$J*EYvqzTb( z*T4%*?Y8(noVSZqU)ub(J%usz_}gBARJe$cg{$1D)KfFDcXuffLHM9DtI#O&ozun^}3Kp96%uAk1 zaX_Dw%R`72NT|}E9N=n2_P{eXS*`Fxs>GB``XV(yp8OQ)-RqrV2#_~=8W4U*O#_F?Q|(t z05=;C=uUNh<95MLd%-}T(puX)Gv8@*`m<+6lbf(qtIQUcP*I~Y5lQ|sVRVAPx*gaz z8#3(psXzMGG+@C!6JITn!#OJN66;4#{ZSTQjLKLwGe(Ep2K8_&raEYD%Pyh%Zs-`o z#VKPolu_v-;&po(^DPwO*oSSb1K2i|4)##Z;8*!3m{*FS+ zz|`P)%4hVu1hQL%37E9@S68W1rn}zBjSk7s30sQcq^bIMdL?EL%(7^vLUHTt`0tmf z`uuRjx1Pa*1~1mPlujAF3%LEXRaSRfMz*S#g$elD`7}kn! z63h(fJu}^GO~0ayRU>XKp8Uu+%tuNSe;+*=C|JB>s$^K_r8Kbbm_4ibTD@=embr{= zqQxdMJq)6 zM<=lof3fBs22#e$lLXe+`P4v5dT36FOkY}2F{_J-g`VXU zgrz7+sKaxey)4yKaZb z7%W}Oe#%AGwNt4z#O-Zl*!@&Uh%z4kg>25?j5KrlUW~Bk<5nitWhWV5? zEf){Tn)kT?@f)5;G38G0A13G+8M>>`DAiAp02O{t(YL>c@=#HH_+ej8|5CU%y2^Ev zwyc1)eC>&5={kc#zTJmykj1d*jwS>7#}NUA7xdUzMcnn*1t_H@CV7VS`}{)5?{#f zr1Kq;!5x}}#%&W;gGKKkdnR*@n$2CY+)u^la|v)nfx1jhF|O*jUI$H$JB;`2g>+PC#;bfoPfGOG$ zh^I)5jAo^L*vy9?wi&54-tPqe5bYHsMh?l&nB};227xH>yH&ZtTUo+YeY8!g0NDbv zl=iJR;5jA}4jK7JDotKhM7t`5(&wp29(VIj`8Qe*d`a;wU~t<(0Xq_q5Z4{e;{o6w zCj0yKe*gMtG9*^-tj{%|^_8RTm*jytu?we_hV^&n;kXD_J!rC;@mDX@yU|0+v* z3U2FAPQeg(m5gxDb@%_(f+7XzddF-h`30@(q))s`6t;RE?nYTMD?J9~o96jz?ce}o znaI;V{P)s=8`lBVCt3+PM!5hgO<8sVor^Ywt?1}FAfU3)ksq5x?GkBMAkM_$>5cs; z3+DNbp{ge{dP8#(_#e(8u;gP1-muZ!4no|tY^T-12&u3XL%n8+5qW=reJ625f<{x; z?s>&=QS?ww9ND!`iYMr@USs5QmsSpXm#-cuBSmDq2l8TyAs`@#g4+dBwDj1 zkwqX`*8L8Yo~Zo9(t+gM4`31pm(!wM0c1?WLWWlO+m8j z%pP2WX1Bs82c3=95WmTQZKGZ2Pukw)I}N*1CXGK_%~5+D;Wxt}7BbQqA{hC?UcJcm z?g>rGyO8@k`5E*~)yz^tn|*NxtqEg-mx@`f4B{#pAQA<^&RUxavbtP%a^Jw{d8J_45Ia?N7 zynM5M&*Qeu%*oo}nfP}sdxMldMhQy%v(a>9-m8+**HzF;7h+Q-L0Z0HUYmrzXv+~a zQ{>5Bze38dDwOFD&QSWOH^~%t)Dl`AMfP;2oMSQ6tu6`XdW2K8C_{;_0<-ywIp#sN z*~0q|wy`(v<3HdljSFhj3R<22{LG{YpCh;0GSDr6?t4~INP7Iov1MIGZ1}gh zs)7YuwSz||3;7s@&FXsmO|VCQ=t5V>X8~g1nA&+O0Rw>9n+#{JYe&JvuDw809c>tQC!M@>$UssS1lZIya`y!LoVssMyJAt&HrG>`vhtt!B3*ZCp@o zap;{~D!MuYXVZGLOtzDoK9EMu)jjdeQ4(Bjm$q<79(uGx;zL!P5e6F``?{6inm(K5 zqAJFrr6=IQ8A}=lw>LM`VxDwm&*1PV2?&cjhEze|CxGF}O>lMoN5ngJDMMOKUR@7C zzd9vfI)y80x~;r`2yfFFD)5WMjKGTX(8If4ySA}nZpg{*@3a~N1AmC%`NUxC`$N~CFC&P4V{mZ>j-BHGL6dbkqddHQOWq- zs)<^RM8u8+|NFJ#iL0*%j1bLVaLahMN3^^`qo+`4Y*~$F*J)=h)RKP|ALBYCY4}jI zO@=F0ute|J`rXG|8p@*5z}V!_qpsmdJolRIZmy&ef&-=4W7AM6_+|5*Z-kT8{`b&~ zS8<_ktXDD3DIXoExQ3P9mBV*cfm=Mo3Z>Sf3Or6y_A|3Pausp01Vm@gK1M@A=@6%I zI<1OdAFjUs-OekM8Pj*2NvjO(f_$oTbyd%-tp)|!#5U4s#Jgd7rx3Ldi)>EK{_`eR zhGYO{==#N2refHK@*STTQ;jN+OF@BL>T_k4ZEj=K(o&1_^Kb}&+AEt*<&!^^Edt~n zMnSOzlsqAMr>ajYLwt)1cj)n{2V;8075ZB?V`X=q;(Q~u^p_K_g)khMr-af?*v|_C z@6Bz;Y)pTww;o9EM9^m^xTZIu2Cv&tbE8c=t@G`G^np#U3O4W9GFF|mMh7nqqr@*~ zY4dsC+*QHyx7vwY_A+vgjrjZKZxfIf)k5j2$^CwI%n6M7j=<4Y5d9bgs6(~1ifLch zp;j`LqGhh@P(h6^S%Er~%1s?g$kP!obpA6DbX+W#Kxr@d6@qnSL-IF%nRx)Vr$@XP z{`ITEelzBC!0p7q%9Em763QxjJfJVH{nvmM_89+(EbtAT73ZB^NFMzSkM@O0?T1CG z&M14cBxS)_o{WWJaB$q%x1PKF17J~WM`w@|!+UqUH<}$?PjEuP2e7KQ!j4`OT}B>1 zs(|Avqcdz|0gizO4KzaeJ=baufn4{YaJdd;mFVeGSUo;%mBA+g!d{}Dx)C6E+A%6y z@x?TZE|GItJ%0zaE@phXhZ0Z-8YKhdPRtD}5|FCmG{G{~3Ea#LU(_**C<@wX6vdL< z(@jZl1d0EUSUET!d7VvB$8*71sFk-~BZ6HuCl+t|=5C@d-hrl-vCnjOm=0kcGJhUd%roa!*!^y^e9*sZNEL?kQaW8-yD zHA#d=4~sDza8HjDelC~ZS*Vs8s$BLtL%4T-N@nGz9hJ;mVK$%bT>MI38UgV39AT_G zL`-(20uq@UswT|?48WzL)LyR6y8O8W>v-z|_CfLj{Q?45cGqU?d&@MAf><%RnU@Luu_31>{|m>TJZS& zc21R&;#lijbUsw9d;~9H7Zs+@m%)V9iAY_Uk|^-&-9)xZxBVuV=vSeZ8q0j*mMOIW zQ%Q{n2)o~#)^S^U!s4=Q2gSOGUpXD&;2C7b2$m-SEh+BMnPbEAr{qF3m)3a!R0x&k z^?e0T$8$F4UAG@OV_beA@}C4-a#KgKSFzjW{(vNU7@9^T&$d!J+81vCx3f#h@pWsk zCkTnsctn?Gi0mEayWrk+EzGP{1Ee%?&ijH;aT^Z#vNb8xOQ?j zC!aMh7*_kZvSq#9x{j)TtLwSTiXilf9E?jyPZ8bRf+rstwN>l+MMA({WzHS>@A|L_SdupXR{CqqPcppH;0DCXS%_kQn9XME1L!LlPkiikJio(Uzm-%F1 zO5dP$V1C_~qA1&hKsG8YI08nwjXFtfU+@^Iuj+AfNqGe*`_SWOCA*r6<9AwY>1LY} zA9Yy{?R&4FO@_KM9QLiz@|JANbS_lYt4i#g48PmE>JE8>v48ed6VwmvZ;=ELyMb~$ zGl;9qe>eXP(m}3Bp5QE6&>_Uhgr#(M|Ac`9aO z*W64kBK>6t-;S<=wUGbbh~U+ny3l5_#1c@KG73K271Qz+D4)Y22&a3?)8Q~_{k5Mc ztb}u5Gm(UT&ye6-v&(y=PF9{o3w*+eJ}?AV?9U2Bh~6(mMz! zU69^EdM6fI2t9NNNS7|XgS0>>p-Tr1y@{ch0Q!?KP8+tAlkK_0q1H_1-R;KDWZtM`6{lU4qCNor6B zF@2|s5t5b0eh7}G3Z8dY|IEtH)M+p7;sKe>@Qyt1>p~5aeVFysF@nZPSA5b1ySr`Sv63B+(g<=5wp2DpM$S8*BzRuR@7Y8?L z(`BFk9gxb*)%x;yji-741{)R2pMVsc8d(OES2T0grz(ztfX!mM8UIHMRy%8;=N5tT zdR`3C^wtl#Ve^u;6rHH}Lj!J2c@NgA1^C8a?&Y{O`Gc!)SXQ00b|z4*{X%Hm_*Z_V zY`~Mwmp*G^boInLib$4Ji9J`u9-G%S*#6<~Eno5X5OrY}QX@t5vW;BVGw84Qdu>Y| z0Q%La;HZ07>0$Fe8ZFn%y^YGSE?6FUHwr^d5uzIT4zr}T;)~>C5yHSRlnq@?1HI0U z00aEJpqw}ybYI1~OY(pYucFF_JGbR7tC_g{v$#CM}qqQLxTE0lASnaO7bfi9C(Tfycx{k**UAhsll7T;d0{g z7YJE&esn6ys3yZJ-Z*Pf-(6j%K z^u!S5;A2Guh2)}Agn}`8=AnuAWcg=RL{nS$zMG}8qr^e2!oYx}7g+v@8w>ZhzP_HR z^shE2v1LWZ+5S}56|p+YHK{OQzurwe@b$QEI(br8%GS~55n|}-=ao66qpfH9q>+A4 zU3Acm$DUPRKlO=bjRob*jtaZnt!UMfgCJA{G{i-t^kv0`qF(#f*Yw?_Ne~F;y@0VU zoWS=tbKwH&oRWY#r_c0CW`F9ON>dbc1T?>jn3rNl-@OFtoX{y&t1dvDQx}02Q0D}^ zIi?(HtWp8;&6J^nD`8)L0sYC1JZdz9*RT~2RTO-Gh;Kv)J|Mt{ve z$UUrO?QUI+!-S@YSh|;rBb$G2E}heXAwP-pjwN*fEURlzT@xY(FW^+R+LFx?!8%KK%Z<0CcZF%$h6q`2O$<>zVx!(0YxFgQqJZ3rAw+)_hUA;kQ7S+G5=U#U>?j=llJTkftOmB z^Zi;x4JiYyQ_Xl98AQ+O$G_rH*sFMylG7jRo;Z`uJ;_}R*|hX^H6-#JbW1z4Bb1w=AOM6wQLs~XsjrGT9B7xEP?w}@+$o>m*INR zOb2b@_u@vz3E`GKyz=COocu(hhiVt4JS+vIrAOI3vKq}=ZfG36Maf6Xt7z1tkS_e) zW+lcST7p>XVjr%Hq7tJN-wX;NH?(cj9d^W&^}Ug9Vhr)QtXAd3XnPJmt-c0zj4WBX zOdaGKO;{# zLtCxA&dv+_ey42#Mgin}6nE`sHh~we>+{&4rMxIV(it~K6_UB}2z)!&)khmHrWnPh z8Jt)oE|1_J$tc@GpWKEIbrSb%eR9h0MV98?EmK zW__Jfw18k#qszOdF?LPWv=;}o7gYJl217{*KOKR>`J~-30%mi{6qkoZ)Q*tsN@drRSwxhHKD`JbM#9C)e<{5)*ttk<0v5uFi3x(mLSEFQa+ zkrO!6p9Ks?G(gW=@t(j_BD*7WAthIa*=M5P`o5%-_s;5L?zcp zXf!&a2Snj?NROO3B34!RB>zP(b5Kkb9XL7`{LfuL!cEcwFeTSw2JbC;K*n;cY*b5A zvh?KG9PYDYSIsG+nD|I96z`|)HfHKOT$UrGrP-3?tLlB4r056}<8g=ZMs9|eE%mQR zuOJtGk)%h!@=Prcv*2&ACn`~bic&yE%F>PC85MVgo6Lyx_0TkI4hY6~$pw_+u6{E& zd5yApY!R7!&qKxot@@MyY{8sTjCDGxH))^plzhfTCvT}C`K5&|+(;Edx>C5_QQMv7vhpDIyQSgbK1Ors-{5|S$GuqeP- z6FxjDy?64oMi5m@`8&vgk-!F^@Eyuda&sRzhm4Z?bN|w-7UUb#+3Dx(T@kDASsR;W zb=kerCpT+W<^6cxTEVvjl$7p))O#PQMl)QG=qQFczRzNg2Fz&TZ>aUVE932B9FSSf z_ei#_?VaEH100^PZsGO2Rr5A3T+Rw!)$4zfQrsDSKvIh4>7Op9^pOfKy?f=K@E8K} zasoNAIXGbYA{xkG!X+WDh15G^pY-|sAW;&oSx5A(+uviavWGd;_N?iISyeO17zs(1 zy;W4TAv|!*wydqf2*kdPQKpps8h7^KYW({91p|vFtF@@geor2ytK$l%a+BH>e&&YLhz3yHWJw-%Be|%#P6g|x!*}W27 zDvmcUMneAh^*EYGE4r8L)I@8#+QW%nWprW;ZG8c2Kz;x&FUg$gNEHRN7K)mb?Z=eV+IU%u@+#*S*;I`` zp|~$`3R5hyWTHwvm3<-J_|TTB_g$X04*(&b64w<-4ZSq)2tIsS0O7L@SX19-DX^is zch;6r!z#VWo4=d? zTDWb#OmRD@>;dK%u_OssQ$XfW3()p71r-=Blm?UZHRWI+7I4T+O){xV<_4#kqe|pZ z!0K_|M?(&VWqFauZ|0aj%+aWxvkJU9ByJ*;d42wl76mCs)3+uO@HL-UezD?HGhZEB ziAKr0j>P?FvgQu&NvC6%`I>~pZ`cfx`CXav&6}>EmM?_c@j%?xB_aerEJ|5RhlBFJ zm7x}K=U=|8zztQTT^rNWdBJM(N_Q*1)5I}~IyV(r@^cmHT;%ZVn;S4zJJ>ijP5955 za5Ph)zr21I*&UV3ynamKI;03rs|f5+pS#OE*(HZPWbfF5hS2Aeud2E_ROsaw$sF=* z0ogSl%O$5uyA(MPs?d_LKYB&m&+Tx@SkMF=#seHH2KGQo3KcGKa;yaxEB|Q&VFA_} zdY(HBM1@Ga!Gz&)L7E@7Q&EdHc7IiD04XUE8Ja6SN=ZB?^hTD;w>#h=yV_mptCSRD zR30Pw5OAXlOQ9p9&A+`mboYDr=BRYi3|c&PDn*y25H-$&>s0v6nSjkI{on~BUE z=sEXIT|=L7+SnOZRctG_Vz~Apq`1Ud(1{viKPm!RX?MMqHEwu7fl~F~$jgVMb^;Gz zck9*>MIp7;>WcP+FYDcIBIysI7SxC-yo_X(eL$5mU!&l$*!3FgE~7bWH82var*8-D z*+oHsopAcBv(w07phu{rexpU&6`Fm0pYkNnNhjNCL&tBFrm{ivtJ{T|ilejFI3C!C z_9&0f?00Bo>*l)ZYujKfQOGQvk$B(FSLVl=tA7>3Ro0{5ZSb2BI~VG*-Gk4P-AQdP z*v2=t$^-jYb@kQw98DLYuSBU%K$NP6HQzgxa>+ibX?bYDiRvV!kTLEN8mAEo)_4lm zu_>xd2~u>R^4(L$s-wcO2qM;oPWN8FboWYY`>%e-LLktZkBLO0(d?rU1LaMHfC|h zCprhYoQ`C7%-$@jGRow!q(W0Zhs?3XW4Nf^3QXcBhI)Y1e~pS>g`|-Fv;m8Ni~?Bw zpqnum8dWtuz}%giuLJzUo#meZD_aCm24U9pj;DJ)xYAWGf5f`(bG$}R-i^n>SRL|;IemrnL##pZOvGPqu}EXL&?fF) zY7LFlwII;T(r4-F`i`QF<`f2Tzq2#8!PO&$gc5NE37<(GM2IudN=R5=G7-1dU2@9H z8IWJF5?SL^>^4XtQqZ^G>9$=jL8M_;wr{S9 znW_LEt10&)x^7gj%kl-^t$rdQ2NO?vCdb_9mX99fTPI2V$OW9>IiUkFKxzsDp!z~7 zD0-!5DxPXgi!()V_|phMMHx{es3x2VcS2}=jkkyxm7;dn4Tg_;(!I3T4}Og#D`AL9 zFC1yfn*Uxbz7$4#FMJ%VQo))W9v{k$jJ^5=#HKV)zfcS&G<*UC|BruIeR$y0pjg)C zBpn=Jw&>*a!?qg1-+mw=r3 zUHjZDHpCZ3{9^HO;VNyv{1(yLX+CAJ5}-zDXu9OQYw&39f*bH(Nm5*Iv8s2C@yuy- z!6gCk=qGKgybG9@u)WW4g$oXIkJi|=oY10!mr@)!TriABi^9xt@A!@t3C+X)r`eko z<<|KQ&7g+sc^@dB63WnJak^~zidxAM;HkTNHk8tT+wksi8yQWefWGEHMp3evJPodkNf4yzGnN(K~w!A$>riPOQlg^;STkYqe zs79ds$?#8Ps_To)SIu|d`_tp!7Cu}Fm*Hk@BCoX0X*eTK)#Mc-Du%0hV!$I+2o1;6 zn4-i?E#L8`^R#il*L<(Ru}dE78ON${yCzB})v#wu{yMce+LVbvWD3;knhPPy%)C zh{{{MuPAVzhjZ1>mU~IBi9|1Lu~K544IRC5*>)Mb+L5ZiE)hUub@P=(_lwY5aAl#J&+w@&EeqJx-}*b+Az zCFO1v?r-|EIDnRqeSUE`R*Zm+`>yV5cA83&1ozOQiZ?thJy>_Bj99gf@sFMe6t^Y~ z|GPY;_D7z2dfxjVdFuZ}o@$Bp9!Lz=>!0o9Kvr!ysW^t0Ep(CI^m`gz-9mHs6`Ozb zi#;$#$=<-w9lzN7qN~7XRs`06f4d(^vb`Kqaof|ji<*f_x!5sswQlZZCI_X3P1c+M zpUO%X(_7{v%6~#Cl30UMnT0bU8n(<9m`ubQ^3#kQO(OTC)4E2Z>d4h>w_7Xk)}hcY z^9L#j;_`KtRMX83xo%n@4w4M1^jpGvqWo;u9;k-;!by_e-v`Of54mp;yWO#L)7)1; zhz9n^^5*@!$||A@HmVmgLT|Rz>18bsm%95(JE^65E4veULX=FTGT;5NtGCx>GCih! zL;>>y1UMkml1;26;IsbDMVksl%3r*?HOZptzY9JsWjmW%dfmuGr8Je>I$W`PECb@4 zCZLzG^w=#vX34?GUXT6fE&u|*oq$e+UD|5e>8Jw-qmP{Oj(so=)QqtT1C!I+S&+&r zR!9LDB(x945gj}r4NEGIz;XqgAtW~f1Sbf7+NaK+(BV-yI9JJFCGDyXBw?ra(%lvbBofu*Nd;x+tlM2{ z#~l65PksRI{Fz9#e z){}?A0Mi4Jxy^yOl0Tu!)~8tVM2|52<*6r^12rj`{&^Ouav7no_Mu~6?-tix6-WV| z{eKilC4H683r~x?$BMI@(06A%fMp}z_e=2of+Jt=LwkZR+DXE?P2Ged4^*(xW{LA( zj;tQWw8YjAgn+gD6j480v^4ipzyYFlmjZvCTD05y!6gq58Kkv3dsL{v#=O7XWprw! z^Enqj2NLHAd0ov}E01g^wrp`adA#09d(NK*YHHqO^b#$y?b_Dydbl@kJjX2Khbo!X zO_>utZQT6soavHUz24<_T(8yg<{mShj6Cq|9Ody=Q@Yndmw^y@#j{ME6MK7u8{f$- zjUO|sxaQ!HYas3!4xy19r$HUpi3!Z^qsPJ-{99J?2ryS)YYzyWYpO)0fa3f9<8`$k ze!0UZvtMXpQcfD53PZw?DfzT47p4zijC`Zz=c#P9LEFti+2nUrB;AsJaKT~J>_Sgy+%1#dcF(zcO6dMnnUHlHsk&1dzdp&S57yP9eJy#s zmFz>Td9s211#RZKiGr=Qq}8g5DVFJh5yq8joJ@93&+5f~a@_25&=gy4#KU;l$B^&@@($4PoU4V?yu}mI$PlrVr&mLN*z=3evolS_!wv@Um1p)B?wfZkcBD#^9fs!xb%X zj@!N3W@gSO@$z4vdzF1k9>1AMs=0eqZP~wV4HIX*Y;2SCZPLj+RC+!VTL>ny^G{|2 zLRY;agH{Povy;SRQL&}MZfI|=_R&urcyk>pcgaR@=xx@lf@`eL8ym#dA{kl~^loN9 zfxUIM@!M6Mow~kDQ_r8CL`8pV?y{yt?`R&a=2*KuM9B_Bs%FfGu#jh0mNXxni)h?4b_& zC5g$_XCV4Po$|ux%ZLcsv%VUD#H9B|-8&XfU~eVOo1m1eAv$XV@b<~_u!@&@0C4u` z6a#V@FfWkvm1EkE|F?oEdzTEUbJK54*qtD+M1r8FYJ^78cZ~w?ev< zfs?|)jn{^0EVry+#@4ESF*gDN=wIOA6_Ire8a;yNtdaa*1I(G7^=cBep_CV*HmC@R z;eMsreOQC^%(28I;7{W?g+iN?0ncT*EFLu*o4y1Jmc%e)jXLS}ouqoOXY^tRmrMz{ zX~1nBzb(1cTEK-J+x29uu|wldxEiZQ`(u^_lw2tbJ4dJdfJZ1*ZQx#c()j=htXk$q10MN$jq;soOu5{qQii+Ce%t<} zmBT55w!E+A9~3`S4J+Q7)OwDXcw_D_D@Q^nvf!=-OrTz*sD_mJ14a3p7HR$7nLS-w zB%F&X%tFgHRA8IW5m+-%#H3LbLr2F}2WfTuC4IaNe9Q;;i4dA$vyt{W4MH6998?-c z_m8D9V37|=_#NSIVwGdb+I1i*mfE68&K5sLRrN#>7v$n%CT?#(YhZY|%l{``rUmMF0aDqAr}K z(?!2KzPze2fC*#+7IFj0TlAG?$%*~Q&}sDfLE8MHK3p+S(nn0Jt89%k5b$E3JRh zvZj?f3Lr$@@|M>!&xQlMg@Ufgw$`sD{SQ$GO5i+xt1Wt+bJEge-yK!g=h+pmIu9cg zr)3MFpf5(93yZw2_sJ{aI~#K26k6%0G(q9gT4|6%XJr1gR>j+tHtm}>v@H)v+g?u;HXNCn=co^r^W%y?AS|XT!y*Y zX3lrlCv5!@Bq|rru5CD`+&`~X=?}Z47@&C7fwLWOn(7_I(M)unkAoqjQaD8NoOc?b zqi~w%vBRY`bH5PHL{W=onxgu=7|+hq#f->7lWK>pkB{R)|Av*ph`mpkFV%kh{lC zZ8vIqVPy3*qZhq&(5wDO8GBFcDtvI&O(n$gx-6&ug25dPGqf<>ixq}U#kre#FE053R$8zHXw;_$|tVE$V}|6 z7x4&CQRsyn4iAB9s;b~urI<#)-#2UruN(V*M5#Q zmk%t_L?HHhliON0HZ4Tfd#CEG5M2)ZU4cSn*iQps{se**Q@q;5gx`9D)J4uo?ppaH&nq^Ge?_k%$z=+^~ihqX7fh| zzFgU{#)y=;k+21YkFxB}_-&fM1pdfwz-<(GrT;b;KH-0?XQc)kt2?ECx|*!UY-9bN zo6+73H)#z>Zy$@j8XZpKS)5x`07tIw)X42m)`syIz)n7?E5I*x?+-=LccDxJ8(pa# zP)>gN$3fVpPASp)&pBX>FkrJ zI$ZlE4|e$6;>qcqi1RA+bFB33aLXT=40@fpBbq04%QOTySDJA5VT@qJz#Y# z0DH$>3?S|}a9Ox2_ZeGHG424oiVG>_qLOfGtwn7=Ukw45<&y^4Z%gF(r| zNYG$}kU+9dSaIc38CsdXPA7d*pvI~za}oof0ry7KhO+?#hD55)Hu_JERjfpeJ`kJ( zYOLC`1SlLL4wo!mvvi6pklnhnj&Pb;At5y~Y#L4~BPq_gIyk7}A0_vzI*~c^YM`l^ z>L;&9OJjl;cK~9G0{gLXaixuJ70-R&%w`u0+&GNIl(nFR82Lb8rrPU~TKh3>AWs4PMLZr6^A3+%))@8BxKr5|a^ zKs})6%+(bBtVh_6D7;tv#7$sfn<(Fvmrt-b`*vG{os^T^LyM&i@3AFv0y1Li#Jo}? z!4$6{yRJ6f5^pP>s&4>eFd|Lo99^K&BCjE)637yf7uxlD6+*H*@P_x=ZYPs@evDW^ zxC-foTCiNC+}A>5l&A|nTEh#BpaIWt7vx5dQ?zr~u>cQ>PKiqF36)w@5VJ_(^+2tJ zcgF=3G`AWjndav$lEkplORpB2)C={(Hc&yMt^;)8oX?bizR1>ld%iGh@|mf!Ng3 zF;(?TD^4t0iS@dp&*}y$;(PS_jR2Xzf}Go6u9yCtJo2g+#UQ9Sp+F42w^^PlRn+M* zpE(Dh)fWleuT{?HyiiLiY>gf}>-}w>G3D8#*SEry#Rj3PbqpYcoH`0)`yXgM%G#^7 zaDjCcsR<5)>cvakFkks4WcaBh1N;j14GGg9sPrlsrQ z-4oa+Rf~x49>b%EOgx7<1C<|Ffn#*yc^6g?!K|<8H_KVN0l3+@A0iu&sVbo=I{Y9$$-l9Kq5yV~jGb_s zF?}}Q`>N|I;!FmI1RRfF{;B{?&~-_tq}c*B9?I%v`!dQYUglYhedh?4ws|?(YsgLxchj#E6Qe7YQvNeWGBG!I1Q(j-V3-UWV zGmv1NZ*?-k6WJZe*HX8BKUwP>@_gOSkXmtk~5lK_f9HH6$cRp)*bW^E}ZAvWOE{68|g(XP9 zq&bvXu3tZi^}1?Y>!6OL9o9JIzube%mFvycias!na!w*d51PH(fxy1gDs25M|Nzuxhp{qc}L0L}n%yRKR zl3v0BDI@c^&L!+FT1%r3 z$m^qfH#ny#;ENyM7r~=0tqdxy|L_RQ%UjqbwHIZmCt0zw^V#m|Ie`?6sx_ETLh!dF z?phtc;c8n>$nM{QW-y*0Kv3B6ROSch9t~5VJ!MDq<|+(M?Xp+&>$e0TqQMAR&uMjk zABDn?yH*k}Iw9b}Vx)=7jF5?CV2;eDV|~Zk0#a^qug@9Nirc-Q&e)d;z+TX~ViFck zM7-yZBnlxy(G!Hv(DEsQ9%~CL`V(IJ3l5g~;+2pIveq=e@A}wi%GLh4guI4RXcOsE zKmI8Qb@F^b&H8HBZoTZP<0ZCj!b)v%JPoFRTimI}T(WUHqRn+TT|HfVoAl4|$sW|x zRiBGyey?wZWkdKfUYL z8itV}VtalMc>$AG{VkF1{JRtb^Lh(OH9#UiMD{HPOE3dy1((?t&pTW;{ip`}ec#e2 z_s;yNq-#{SKMW{^dN4kwPBT){MP(OAe&t6fGf;6Sz5@!i>UDon8-*8)i&!z93IE06 zDydunU?KN&^S)R`pNZJ4p6fc7>X?{g%n0j=z(|IkEb&uVN#jevoEju2*R%+g)q;d2wzs?K-i~l9HiL+WzF6!j)g{l=zyOHkM5H z)6@(+*}a|CH}E9BfmC%sV}WKY0~KfkPA40_SuyQ9QJ{xx=BD6lruOk6tKMCsY&H-E z8T5Oj-YArw!tn>7?Xa8UI2+)^N`R1zWUGgdCFUq0UnXxXh? zB8E753Qo<@NCdgdJV<4XrhFcR7t{`zJPP#hEe2=33VmVEy8CACVZ_9EgeKG6T5bnQ z&s)WC@@smf+20V3#+ofFxXyN#7n22`R`vBRf>gg*OGH0Po)=XnhqKb$v@3<-raFoRkv-WUQNO1VTv?fnA zH#pjs0=6gznm*yF%tk#3@m@Ycr#f=v>r-FS=EynKe50hY*WNkkbjr6+0P=) z1$qOxmlfpmtA6@21ztOewLz|EO4P+9<$ z2AKF+4lZtfD-rw>Krfk~t)4eV+SVz~RN!or|K)Xh1a`r`h-}(Qzs6=CssLaz z9>BhZ859QO08s{w1bKiCnGk{JYu?+VSn#dg$)n`8m1e8pG+qx*Yf;?BP&OmfevQLE z(~DIuaZz`Wm_W#5Jpy<(d$i61BNcu;P$VKm$n7*k*sfe*va{PqT5oN%={kL6nR{K;70uNE zM&x;^|^0WPj+&m@w+zbQpx*g9QyrKNM*kb1^Bw* zERFkdt1m9mco3q|N{w^i1ue31C&@CB1DI#eOQ-Z7xi9~6-bidqNB$9l{Jt<%~7&8>VP?bEhOov<`i zdyjlU;a8n$6qo4Nf9?WgHV7Ce28%QMI|b=7uF*Ua6Y~_SeHH?z1d0w(Dt?xto3H2z z8YiE`Dctt2K;>{d)_PbJm6zAydg*i@d;fGx1XR0%zg0W)fYdC4&DGi2&Xs#jCiK|h z9UYtW=}&|O#^!SK$xytk-%OUq!e7FqsotqKQ2T2pdKKn-3_PP~?mDWZ0FREB5b}S2 zdJK>E< zH@|nvX==Tf4sVv`DE69i6hk0J9+&<7;~V*#_sRYHyaE5MLuJ5jhT_S`pYil5tu^u~ewr@53%TqyiMdfk7g*YQrr{EVvT!KN+5>_)pCORQiy8$_f zx-|iB+w77%h}i+|8K|Bi=_jg^B_HO#nn0)Gs#ls?w91Pw;Vv;VipPb_{Yux|B`Pq} z3A))O8MaKQnt)D_rrB9uF12#I)Ckxid4*aUR@aqL?6!E)NJy8Fa$+D?CMZn-S)5Ny z?*~Rj_9>EXYfFWjNT=Dxc?`W?{&Cc>CjYFg-GsIw>Ww`~Hi!ND&)Z0WH(_As-=*+Q zYbyzDcLCsO@;_O&|2fNcl*V_p7^`B7(X8RDCRI`tOYzdYpE9UDfILM_(4Wx$jQ2x) z^|w0~SZNFj==!G6(>wLQRqi&=*Zv512p$PVy`pC!6@^LSohDqL{K{hSj)~Po$%~8t z;$~6e%KWO_LqsL{&Ie^H{*;gVTtR}ekm0edgDOtuPodgl^5z}#IDbe6pNBr>IC?QW967|`#>U~c-5dSwbest(=(g?=!F8uCd@o>VWm+pqKON1*`snJqtEHm%BsKN*{}5S7=;3fGP!d%&VFZ#pV1fD}um# z;!DgxSfu`v;cc!{)ln6*J`&e5Ac4}X^3CKYPpXE&0B5-bd3W_Hi%{7~bUn7VG019B zvmhzCdD2`b?Y<7RIit|WKuzko8$&dscja^J75<9hNp~|XU$J_3yQIx|{Z0vUrAeUB zgOHI!Hlk!fkyZXvt2`n9JFaCm>Y_-Q>#U{wIUrxIUsK*96U9{WgLia_55|HErg|7O zoe_#l3~DpW=)ZGsmfsO4KR}Ql_)0g zh@{c&JrDkSpZW*$2ufE0FXYi~_S?je>ty6CijFcfJb3UD8R!sBO~D309-|*S)vC6- zFrX8mm!^0u2GegJMHFd@-qa(a*hK!}$Jw}f?ws*Gr*iq;%b^YAu*blVti*YnDYIQZ zFx8Byi5y;`x~X$%6%hCBj7a>J%=i|=9z^PDjdi0)H@vO{-Sz9#c@~0f2525&sKS8a zPisT$GhN{FpW|K%M0Ep9t@N+48TKVOc{BkbYf5Dk{P{k?N(NTi@I>B+5rj&nhY44) z?eRDVJh=D_U!5=sgHPne3;K^s>BZqQd`UfQvF|D9`D1F0DtUSq3C(&{ZWx z-$ydLnAW>H?)qUX9uAOM*^VZJLs#z`470h9tk{Yf#Q^a*xBtZB+KsHsX3^uyx}CbQ zAPPW8PPjFmBRv>gfeh-s(Ks2ai-b)7cKC~B;nDs~PykPK@WBJ6eM_wu6%ULRHp=W$ zy=nG}I`A8~grv?8iyZe|=HlY0w_mxrXW#S);l+M;GnW^b*ZO_8Qk}Pa?WfS;Pftd7 z*f~kacRww-mfYw#U?8CEnsy^63Sm_uWF6@Vze|!lecZ;#Tj_WWoAC`qvE6Rgro0+OFaDO`3i(}(4n*>~PpD)MIAcb~8Pz@?z)ptF6t&@a z0?P8zQ%Q<`sZ+#1-z*lp$z^F$o1dC)stZf2)mW^l-1vU`*usH9ByrD=Ob)INNPIEP zzmb&jvm=tdL=Pq0>2ltZQgqEU;#Y#HV$*EX1P1s}mWWa!?|NIX=I^#n)3njY8Cf{M zz8n~sBpdz0?>!nl1rpy6OblpnB`2ch{t&6UxI)y14x1Vw+PTu}&85Z#e@+RrIHz^C z1+f0?shpQG5Unk34dZ{KiA&8;NTxV+Re9s)LNgE{5AQ1*tn;yA#6l51muJ-hHa!HT z7B0gyJbQiH5c~&1Y9_YQ?ba(XpVMrYk;|_yU4la|OL04;5N4Uo%E8b5h-1Cc1({H| zEQj>WnTliY>2l%{iq0$9n3eQ$z~MK+z>qbkH#(o8y9&aOHgFz#xxp1cy6RHQyOp9< zXoBv@Xs`yL6j&aPjBOD_k+Z@v%f+j;{i0bnRJ31Ya-!$bYkd%-+C=^ef|0!;o??gC z$d^>YeZF{Z+l)B;d$gq^rSr%uLMy)XsQ2{XN9uM&GYjTMN_!(qT1kE>nyD{wWhz87 z8_o+8+PqtHzLjfVDCkgwk9%}n=bY#T4ldm?t&tE3z^SsY8MCA8H}8lVea@Q0hoMnP#shy0xneqY~ahO%9^WPSRC!JeTevirK=N)v5S(V^sYt!`0}?U81~BnnJWPh@!% zwO1JAJ{Qdp|EPHzLlco97=icp@`?j_^gnSRJ)2StQIjqc7B%4phLuS#I9ae?5S>px zhQV!Fz0I3{Pt{$2z2nz}rq%c0pQqE2S6W+d=a_h>uQev2hiT-aiaEUx`lkOI#mB3l zesXEwZ+Buk`0O3P-V!O**WA;L#q7v6Oq`DS;$X~%Z4GmG@lURQOK~D2ahD%`JJmu% z!@z!+d6ALNV^bF`H0}wYBjZ3FaQ|v(2#zq{O8aB`gY!>XX8(jgn*2Nbv8B!>_|?Ax zcRN7f?vnn$0(ZyXeF6Y^5d42C4~9J~hW&FFK*3J<^#5HdWcxR%&`lnY3Y`F8hyeSQ zA*FqeGM@t7wrt2jgK)jVck0QTLHqKRQ?A8)Tp@53ANlD5C7uojZ z(vSqj$pAo&301|J#v&%O0s~UL6#4)XmXpsq$YR9u=mCHeQ-OIsQzkAV_{i{vfEppQ z2w=N%4x^uUjpAruy1?8U6;HTE>6-(F@dr3k_%)oa>(*_)6NrIHY~9TisG<+xlttK7 zK?gbNfb~lZXLD{&?59>6A1)2)8=E;$LIJDFxJv2DWG_A*`BWbInLhsGKFvhGP-o7P zU4q_ziQUvr7xtf>gea5tG%rQ&eOe2kLm;-2E$05Oq`{Ka{BI-H(#oClKEd{#j4it} zPjgGKB97ekxXbZY*P7b-MaBfbf@DeSQ;!D*1n?OuYrTOWlEwvnslirb#)izR#ArQB zy-?q*B-7LI&r5{@8s-e_?5nmbY{F0^n@zSSh@x*}QJw#JX}&m%|Jv=N?G!hdic7yT zH7~QNYmU2m$#E7b0|xoeYO{qnWMaS{GK%@SxzPnDnR2J$O!FtIDEcByFi~4EjRoNc zAJ26a2IsK*mz*)-zzS5~M{Dm-Nbl1T5Yn63!fqpS3JOG-B8+nOwFT1I+?}TL7Vvsc zz~qH0g2U8t=Id=u7+|K=8vJG)$CFR->joaYU#Z+$Y*@J!C^!3eW~6`Y(4Ibzo4Saz z{V-B}+w?%#xm#yXw<1* zEsQ96*JutWsJ#N+*3PhPuGYqV4iKfTwo72o$vceX%Z<-mp_ zr+}JuoWT8sm8HJFT4LTZF9>ff2%l5ftm_bMhu2NxGbBqZ_^+LZpKqpajCCe8ZVFf- zbB-Fzu#{X_I6#XeLPfoe`Yb_J?^Q3IR5@?1ZR@i2l!vkY(|S%mk0%i@NK*GT{WdKE z?}ci$SC9N7qBnR;Gr;=ZLW;?_r~RE9^Wlkq<^TExO_uZs2DJ{Ox()#sTc1_x{Z^sM z*mSRb^1ik6hg#}s|AV}@{))P9`}Hps#Xyjf2B`t089G%;S_Y*<8cFG96a*Za8EQ!B z?(Rz&Vx(IHL1F0bX7&fY>b{@*`L5@?*8X9yz1Nz50Y2~Ze4Vf3KvpKA?rQ8?SQ9Td zY09h%g7Z@G@Y%DioNkUO)vxN67zU}Xzu2vD*4%wD`aI<+d@>t4OP8oW zH}7Es!BJmnY+$aQt(!v9sBo#eOhxq>GF${Oiwp2GYNxnHZAs=Nho?w4H25xEf+7$9 z1r#ZjKuw0DpW<@{tq}-aIFtAd47@{EiOd94_kwzfj4&6)jf~7wJg+K9je3wcm3c{& zL1``~SPLJ#TJV9eMwh#**bJwXh1_EN1X%`#te32}bm>lh*ur?d^qLqc_iV5`jL@+5zUKl?gGs-$5 z_1$VuyD?V;n{&qYJseDSAM<&)VmTo!yWBof-|G7Ls4T`a<6@wySzuF-X7;tJq?BQV zrVD`Ag|&icQ{JNKFad>r;7#;u;Uce?J1j>TDx7)T)MX&B$d5(0j>;#SUI-`g&4W#F z>S3+bJA_08X!X7E#!#9R3Xd@3NI$*JRMvQv{?Km2r^9r^i$!GaQ8(`*sd!IFYtd5z zCYE0EyA;IK=bd;imd?g~cH-cAr3VSOOSC9j1PsZjCbZzVnMA=o_v*(PUs+#Vk|&4M zgfcTa4*;+?c91XjaTsQQseUwh!lTaGsT1`X)j`e|-DkE!W_d%l2s1eHK)Z3{dzj*m z)WlVbJ#b(npnf&CaK=v%?t^po%DoR5mqa%iT$Kn>8b+!ALD5%*^&p&iV=$vbaG9 zFITzDkSQri;3&fW2BGv4eF-G-H$xKwGb?syqXJPT$;bC|Ee1nB@cR?-G~nLDGF{*6 zN#53Yes0es6QP;BX2ZkPyyjp~?oi0$e6zPF2GmDYbtv_;cQ3m{df|4syybLX{woRj zcQF9&QdzZ&;T^@ttDlI7`yF%YfpE!UUgN z*?CL~?safycjUfA#2EQ2u(isxzS^@NsiKAONMQKCX7f8b5=nj{stixvRc`M{4wyDW z1dB`#(AuTd>4XH;n6nc58&Y%Ly=7nb<;CXqK%z(}G7xR0^r`a&KUV`6RS7e%_fDOh zX>r>(c%Fq=)o9)Qd=dUilJkJ9_B0g}Gb`)v6_w0QtNG2wV?W`xTl3+i-@8KyY3+9hJ0lv3s>wUOEFAur$cmjDg1~b zH#_b(N0Y&^?WS+r$>J02nd0hDIFH0#x=Tl=)7bXR0^lM7Du8MhAYO$7q4qh%kCg%g zPT=7ZU;70ahd=x91XrOHPD0ah(+AEWJEe|;5WD;~W~I_~vy1Ev;fhi1cU1wSes-Kv zn*le-Ql4pZ>`UnFa`_Tk1-F$COiHz&Q~>fAE|{9tw?zPl?63@h(@AkhYni%+R?smg z3<+Pzm<70KNUA?qf-ey30@A0--Gbqgg!xOv`No9Wj!L7oF3vSwdx#czG)xF@wvu8E7S7!dy@a6!=t=(K8bd0 zrK=m|SeW&hJS2&lS%Ohab^Qe$>+KwU-XH{F}S!LB||z zgFf8Dq6|OzmBOauxFYOqc-)Ns?L8qrAY!%$m;6eBC3TIRs)I3!G_j6WpmP*u<})?T zIJN)rXZLTcWae@k$+mVOvmgkyaDe}Y+#XK({a7(`w_aVELEv=8(emQve$pS^KfX7z zwiXu9q2%!fV!a5-1pg(TkH!q@%CwlRd76YF>4gi@W~ONx;!tzLlR2qqLbf}fVgmac zNMn+bLNNT{VDNc#SMNyGV%xK{Pc&j- zJZ^{kOb0y>*eAa(!jeWqn@Do~T?KSiAVM93R5Lz1+oA5Gp2yYL`B8Y0O5mx$uEfmj2n(g7eXdGSs8FMmmGZYi&M3cWZ^^LDNEvc#LRL<4v_> zj?u3(hp^-QRKXRCCoZMm4&icOf|SPJ0*j3cElgFCjYZg@yHTpMiXG}+Zs{{0eZ~fp`v+PagkI%JJsebpkK(d1k6%Q^ zoquSen<#m=$r;S#40M<5AM>3KT?r=rA?$f~MR-M(c&>pR_+khllH3`lk*nfF&w0fX zr^5RN#=gIMb8BQaEOlBY)s-(lz`%Ar*x*}2W2M4gSzne@PX+1sK7^4dLwNx5G5%J@ z#4>h(_`K71-@;EUV`i+sz8<#!aEZOOl;@Zm+xc z6w*kgQrJSQ0F4S&VG=Vi__pM2(ivrx#o@0`9sF|MfQWHmlye&=H|p878Rff~3NF}M zyWW$vZ~fNE?zR+E?7K;-8yRT8Q&hVVQ5cUVu~ZpcT1)e?e!rs&M2(Hve9g;v@|}8w zT$J2t*w+si5=VL!dD7|2Z|b(X66=!+5>&R_q2RktGFMr<5O-J7maaMNl7-3ilZ6@F zh+n8tiPv-boe8%j@xf|>s|q9qGkJ9N&E`$zWUSL?GQx+%WwuHcmp}H%`9}w3{_6!d zr;0NzUuexq!GSY2hVt?%8=xc@KIg}G%j5!W_RYc#_7(mk-M!iBmYS~{_PhK)eQXAQ z_}IJwA6x5x@v&V{tSKvUW#xJC`f=>uV!H@jrc+Yv<-D6gO!>3;bMpD25}s+i*#%+0 z#J7KT1i^oF1kYdo)e*#IaTvR4t9dG~MZns9Y#sSWZG!xG>k|_087f1n_j3Ld6LTxa zLk^ZK(Eo9s<2_*rUCz+K5OD6pX!`S_^xzS|Ac+MUh=wGFdx4)#CpyY^A{zjA4fZL} zULX8?O$TDB_#=HTc^2KQLTS{H&EyyJoOZV`$E@nDaars{lPvKeOK)VH>f&A5vpse( z%Pc2G>sO;Q>J_7BHFsyeh9~JzeYBG{&CIUwN(pV9*pXb6Ii(bmeP_{v3@igYc{O>m z4>CwBe()wqWH@#JU}ETS(&*LqEFV|!Yvhs=&3n|HhhDeu|2_s6+o5@I3tmaDSh4dZ zU0qH$)}J+y6FXu?iM6;8tU`NoD-70Ptc1Ug*6e3MK54Pjy8xO!+YtzSQ#X($xPMM5iVO* zv3S6?tiEr?%tA+HQc?9GIkQf1jYm^e$)1k9Oe>P&KqtvB_vzZ7B)H3V-_?d^qOT(R z?ekBO-YD;&T=f*1KX(Df+lRu&ag1s)_jII(0IDX7GcBtVZ{zhIVGTu9&%{mzN-N8= zFS)8~tX~m7Cf91Yt=X}N=Q%2n)$N(Er)SCWs~vR1m@XdGiwI5}eY$Vwv+V=_*(CgWfWiGQSj|@RzpS$D?ZUy>h*|G=pW)wyt{;QA zXQ-0 z?P8r|)hLucS`GlS5vRa)C||3DyJ$JD+s3!%BKaA$9a?$G#pgosyQAM98``vQ zi+VpLbv!`Pa-_L(*X%UQe7JWbeC1FiV8 zOUPnL4Ri^CNHTJopf^A4bL#2>299PPjaqn~#e<3vE+5fkQGKe$cRZ&&<3-{aJHTCoKDKF>uc^qcMYJ?Zk%UwnsN+-?My0kzx^13SF z$Q|aK43T2${4t7agjj6qzy{{S%;nzC`}UoCrb!9j-^G%&e9>MSABu86YcnkGxn+8G z&WE^d-6+j`5-{SJdm!-)*_?JQ)4h9gRKtKEox zyS0hqVoB<}_fbPV^{G)`uml0<+&}DdE8B?k+7L`gZ8b@zu-|9!aQ0{%t7b7@*^NJ=gS&+rD zEzXCPIVQRrlpM}68dUdWEfj+T$TvSSge|O*(RNL@D)GPg+%uCUZjdbIx`t=cp5FRK zISaH4Z{({7V4OCaYEBlr^v-joVsZvy-Ost52A})OQEZ{#?J!s#{O0v!MM0j2Pqq%{ zUcHdN>nP5&YqFs)0OM3sq5c{WXD0pn;c*eLpI=2{$-rS7VaqAV`UG!tS|WGr4Ob@u zKw98tu~(Pp+81wFf1pmBW5E)yAiEj;<&ws!Kg})C_-{B);A;$K4X=83n2k_8lbPcB zq^!qvwbYVl4m&$9OPd|$H6AZd{c)BDxoP@Z!0uvFT_ z{>`#Z1&jGNbhcp6r>2YI72KcVqVs`qv1JM2*k90|pWbqk)XQ@C@|LqYzU4#zz%-Fj z6-QT-!3Wo~lHT~hanRXI1Hz-|+1$k?u)Q@<@u1)_cAO?8@1w`Pz_-6sJjUkin-wKGq zKMRP^D4bCJS#tmEDTkl8ufX~1CwoI@|b@`;1z%KFA}2xU!1uyEg{w9=1zI0Y)*&FPB(BQ254%X{%hjbf4~VJMgei zJi({|Lky?4a?1kBRF9*F_3^#}M_+6lu~}N(Hj(f!j`CFYmI*#*s(l+m=@FZHYU$B! z%s?F(QQifJFkgg?I-H#rN9lNZr~<_uhM!Nc8=5JAjWu>)2n#eLJh&_L%0|CJ(6hU* z^aIbdmG~a0_-s#RFWnwv? z?bpcfAhzZk6?~brjw3@d1GC7c_j=Y6xAdm{9Q8aCuCPqncHFa!dmjnXw0ki}h3NM} znC(c5FAwO6D;$g2WpB&teX2FEPs(pED6RyFUarPKVy>2bB7&$j%rZVFaJUmwH~%7( zyvDd#$~j4Y5kzZe;;=BoE2I|oaa2s?wbKGVrjYp!?U1fS&l<`-hvlRPlTpjG)NBgL z56GG~?hAjx(vdzm%@%Tt{HtajW`K_p(MO`jZzUe13yR$~-OFju(fVA01hYXCstSw1)Bc47mvFIJuk5^ z1iHF*=4T0%wX>6)P815?H;f**&>#XB$Q&~;7q0RjYi7tY zOJeB?BJ8Uag>w_Gu@mbiZdJR8%~zM6x&CO1w=Yu!ZpoRaiC=S5iE6JJv!r5tBF=t7 zhVU*E!7TH!_nnOe_P~DLxJH0zU+1$gz-h zA1iduAdOj4UIWQx>mSMG>0ikuOK?&!=M_Jx&M2b$54I=W zCEK&@?2R7JRc_JgBxTWd$NXN&?d=GOV!}w^4wBxyS>|Vc2>~i1{-txrvX$;{>-SUB zjL5+Vkk__w2`L@Zm`{QN4<}v-*_``l_2S_(#YD=Wih}5^_RT>wi)dE%cEA~fXlp7w z7vNo;CxRnD{+O^cY;X~dpPQtdwQh|e_QQ9 zngxG(V9|W{)oa}K4$hTYw=~kXoG_tP4dQhgdfXBTS(qfRIhs2MPiXv#zWLP|ugKl_ zPT%=vtD73$QHNB$6!|uHFBq06vOc%?`D>rxt6V7*pjU;wwD{2^5MD}7_$Y)jkuvG` z5a!f(gFYsXyk864Rh5YH75ZT$>(0_8Dh}2f?iOBMM4!dK=IK#B-^|JpEds;#nvcYD zqoHYCt?*8KqPZ+Kg{H(VZg}@vs()LC)Z-J;fMwz^>xeD}0Zd*=Dh2BG%}Q=MZhy;${=tfo3t6!kSqodLT`O+^w55|zoxhBh$la|USXenRxJyqW?fyFlj zq^Mw`3;CFlBqrS|aQ9gfldwEhE=_~rvp^E98OPBZ`E1xUPOwI+aQt^eOTc)Q#qyVhsOkz99QqxM+|PapT=F1OiyZ%4-3jfzbI7u zQk|Lx=;;*xhkCj-Ku;I^AN6#uO8?N)eY@1tCH;*A6#|f; z&aeN81pWP=NYFz73Cj5k3F>z57ZP;!5(zr<&jRBNh<0d);n`l2;fV~gYQk5#_~_a& z18o;k`%1t|h4D6dmO)`v58iwUm2!ohI4tEB3}ofP6SJ+i;68;~%c?T4+LIG+T>=rP z&zZBdu4bxz%HCAbu`+El*bT@zv5~yXd`Jfg-CUQkmeb3=K8mbqN%)fB`b_*LndXJM z`?Wbcc#W*lgrrioi~PJoDxW8!<>~L_o7tG|Yz=)*Hk=vdd#3ziuHTe$X9jHzCX`3u z#b=p!vIilrmKCq+B=97u!0%SpK@IW0Cn8T}cs9cGxXp}%(An+~-%A``6hftl zQyCN^i?i}A8yt&b<2q}T;XC;NAly_g?F@^)1k=NO?GBZlweIkooShH+UeQB(-#ltY znqU1C*QHqjgQN@;Agj;>X`Pkbt_GP%wb2wlOjjFzaPX>u1 zPWU4a6`u6l^bSa@qsnEeq^d)&pFB~NQ<^X7wuMPOgC%`qduSK`kT^n89iIKKs8A?; z>YcdfGhZe4`3Xf?JyCTPa&6y&eW1A(aI)<)QlirUq#R;=q9PC?DkUIi*<0~ zJ!E!T6Q%;}j&GY_@2{ka@XpXy@y%Kv3o=IIZh#L<9Sbz5=91nUw4!;OIPft^dDP+I z_JDsX%8=OBWU*g7VAO?$Q#)Hh~_P z98S#)p3Bexcc@@teIJrSB?{@u>~5Y@vV7JTo|05ZwlWGCHH(~L`8 z-;_dy**_Mg1NPSR&-VgbG7Wi>v_q->>MnBs>MovA%$MBIBK_^pU4TQq*B?E`U7o*s zj8H45@c21bd;aX^V;H)aq@9WAyZvJVwLD6eGh>AmZ{S5FJ)R%}_BWL;n^~R`-u}^| zHeS+|OU3VWDXXiX`%_jYHJK>ud_nt$0v5jSdaHtx#jDK%#=S%P-)4}VVRPpfJB1vz z-{W^Wc1(>sVqv-SpD#Z3m5n(gR=~&e(fIpNCEtkQwpX*P8KrR3pk$c5EylMCyNgAVmuOdWRyl)?}a{GpfWO zSA0M8or1;o#~k-|$6@y`ehL=DG2%6duy5JUjj#120_Eg3 z?cDX!gd=FEy$-`A>P)4E&d=GdjKIF~iNH%jVw~p0nrELo7dNXm@%i=H8?xuZ4p%Vf z`I$_w^Pa7~9?#&ho-doJ9%np@Tbp!B+%;#whGy>J)P7+#_x#KxtW}fNDZazWV$G!! z<=vlLxk4_x*`P5SpDNKeg)-$g>kCzi)n8G>Ut1#{?zGJ*uG|`UH;AP1wKxOj$mL@x z;IIpjI`q>JfCM`N6Ol+~wAq2Mg61sv&f^sgcb@Gi`yoQl88OiPZsd>lg*SM!zvG3R zDwycJ6XB!{TDtgHk0Z~dx({8!Q=q|c6(;-fGiG!$IJM{ZHm+@N6So3HcE8uXT^=`h zVk_ZN?Fcd3`Jpsz@Anc>#>HzXTMc=fmYMG~Di4JHG|VjyAFQ~+KL~=UPy~fD;qUS? zud{d?E~OG1oUWj$8NlFT*diD9(FWKze>1B7$=o2a*4bLOe<_M@g%J{ehOX1Hp{@7g zOMR@I4%c=G*Rk9X0LsPZDqI~+?$nRpYg8=Nk4r=~@HD3ZV`bNyCL{YMgbd}Qoy&gX zFhWA2Z8%j-_JZjz`yF24MLVXd1c4k3O@SF=hCf8;?+YcV*-zvy+V5z9Nn-<7Pas zb`afkr;=!7ei#$43CTLWJ!E82pll+RU#~b-O0JotC!0@^+%DQ zYC(zPd3Et)7$lA!5VCXnF~u}%h*oXeIng~gNjM5jGm-XQ#*~Fm=zS3;eT|UOt}{QY z)uFmhh3;kOw@scS^OKLPcU*nKZO7&qZ-W2T-Qsd6zWg<#k8`JP+Opb?e~MJ+X0<|! zDvOUwyWJ`lH&(=-%sR2HQ%pVd%JP8Y`nxDB7shddaWaQfOI%5vNRql!UOjs@WE@NRo8!T0zTo`m|FfVIcP*zWOCN zr{6}9&4syn)f0i1A5@cBW48M$(V6D_Zc!5vlEhM;p@bcJl>HGMJyR=DJ^-rRy&Jjh z+|SpnJ-0_hY$4X`NPmYdmDJwHhZ_qhL-!QWAka66xFkhM$=6Yn+8qzi&=kAn2PGNM zsJ({@gT`UMv!Ed;8d;wD064IbTsbapf&&JMvP$(xW$zspUF&-OseKbCH<=v({xDy4$lTCl^+Iv6 zIjIRla8-Ym?eG%7$B~Sty#JQ8_PMW;kY!Q^M`Rr17hu!v)*Ta#fV>TCUDGY>%kp!q zB91zi4?oRvB=u#eNdL>D*N}VZ(Ni1Q1w49E=&6NEl@@?_-vBcUlzPtIsWmfYyDsE1 zE7kKE+?WTrYL&fJ zhX`OScvLqDut!fviszopOWKTw`t*({w-~I{a*}kibcMVWtiGw}-mBoqD?U4+LB^N8 zZ3$7JKgMgPqR9;xPGj1uIvA2jYy2yNOr_d5d1>7Nmo#!7cL4sVF8QMj|B*j>R@~P^ zms!5>N7L~}+56s}HMPWDU3Zi2L0pY{G$3JRrVw-hbxYGV4X>`L){J;mqp3-Gj}r8Z zg^$7faYDtGPOU#2ybBsM7R83<3aL_Y-tlcds^>G_>sgrzd!$g&!|4W%9@yhy5~%u6 z=?p6Oh`B+qEfTpBma$O;esH3!DEW|Bgd;on_lf^_-tI`VUr z6o)%~&nS_GLfu-SyAt(WPgkv?Ot;)J0%+=%>bHo@!pHPM7)Sd1;le8!gV;_VFM46#?32v*(qoyS8e z<>iS|h~ExB&xHJF!UwxGC+LSu(T-{$Or-=Ci9r26$;{yU0_DO;LV=zc&OtS&$am%6 z*k3(76n00wkW_-q;_iJ81(kQ6LN)fNl^HhGLmDB};qk4EA>T!#$wF?Ri8c#nj*^@9 zR(>#)&duoEwz9V`IyqL< z{}-Rs@E4!7k?}7+sn{QUQfTe-9HEpSOCIc>Was90=~QJ)1@sPZW|9x8l+TJZNbgd7 z6Px1#y%i`&jF5c4XSz9Xhn==2GPO^2Ipi`z{EA^+uK!U&kYhoynViD4m zHB~mqBmbFM+c#9@DXx^4?J)C%<*ZgPyCrKV&p{3VCpG#BCk6k4lcrTPr0y^gZ!CNh z*#-Zrj88P-zmf4pdTcCPe9^9|66DRY?G~;{L+Xd!evqWQii@BkCYaCAPd7VfF~3#W z=Jnas1UThcFb&PjHw5p6qT5mLejeTkF{@MFc{2aF%w<%jp&{D;8@+RQT98mXSP@g? ziO*&EIPBROPi#%RByTx6Mbc3_lUO;fB8E4ggkXLrV=IIEIc>LKL@aa!5Ko-R>#{e# z*QD)&i)!2^pjjkQ?csr)vh$u6mqPjDaKwgPH$JL#!J<1;N zaIl*Il?DiZr7nhyWmFfVVlhGs_Mw`q%IiTB!wsS9aNEdY%Q2c7j(O!XH!t=5>`l7JCXQlUav#oHBOV=Gc=CJ5SR$ z{rs|HVw;F*Gx@e2!6^Y3SCd8^d)w`iVGn`&J0kXNVa&8r`VHgZhTFw0FPwtm+HB~f zs+D4xf)yGV6MfVnL&9@gt&VLVtPvo>3Pl*FB8*gO}QT_oJ81t(h+b zZgSQg5dHq)%2jq?URGF7y3Ytqh4v9Df-PmTR7T=yOe57p`>iz+#~=F?ZF^{~%kS~V zeYa{_kv;2hK)zhLkE9RbWa+v<|AS@9GHLT4Sf;6evP_NsW|`92lSyAJO0s*8t!oF7P@s>8`38C^wT+2$U~QeFEH9T7$=_@Nt8nho-APP0LH1K-!cu0}9J-^DcO$-6pCkU1`bmh)J*Z!S{z&xP^RrSle}14Z#1gN}l^?{P z%MeKKhJt0+h&n13LiswYLTc{Eg*_B0>#?jo73(iQyNygGlR~ua6wbAi6Q*oKk8nlE znz0U%!Q6gDK8~n63-KdTe(q;t{InrbO-jH~KuS3)uaLB{+qV z58LKe=bL~+q0K3eYG762eCx1>-ubm*y(93{`&LejiS}*B#A{@NZ2yve zPWCsV99Em<`>Ts}Y?>$?t ze|WjmcV($)9u5oF1$(dQaJTx7yvv_JpJrvaE3ZlMGdpwP=30(x9sIWPBu9hlqZQXZ zmEU;J>AY@aN8ev*`IC?O3TRL6<5`>;HBA*u*L5dl#rLhgW{`Kin8g4?t1B5_4=~#b zRCY2)s`jUEnvA?=?S%GZ)NB*{8H{FdnTs%k2;0?P=*FoGJQY9*gZpa_^0oub_^uKIl88dYc!zo-gsmf%IPJ z!9(q;%<}fP`$@W!Qbud^#Q4$eO)j-V*TX1lW3Cv9nMJ;F%G_y=vf`k z+tFI81MJ!m4P6=EFL@K3#YedRqyFU7pZ&@8zxtD#Wd>5e`japJtv?y?r!`RW;BRYS zR=(PW47cyV{|{?m$e-3gf`#!WJPes!G=OhqHUt`v$7;S*P|Gvz>U?_nE3_A&(3$;L zx0|2JpdCh30^{zFj#;4HD6n?0lyC*6Md%#&UG(CHy!cnADuJmFy%f@rBL}-qqn!4R z8din$t>8vlT?W%O@)nP^B~it$>1q;RhY?#iWKxOY)4re6UINV5TI?KSyyM1yqnFzI z`1N=V@FjIxi@OVLn+@`&Edj5S8i9S4PGAnmRvnINe3mK21&$V1lVdSy(@AaYSgP0; z=~q?+g~gIp`0fU}F@S?siQAetFd>u7u2yqkmX4M6J=`qRom-lw};uDf)?xpNiAO$VnmmnPipNlpFx6i5Y9nNhq+= zWb@n>j~;1BsA$Zdr>n9>90GJ4?1$`8&5p=?NA{NHy!KGg*bxm_Y@3+5pc6HRfc03- z!4?AmlBzsFQf-FGypMxHtql16vq^$YLa|R3dX;cxBX`!qpbm!BxMFwqyLuEZ&*O=x z?o@Ex3Z1sA68MUUe^Gqzl);=t8<_b&g{4qnr-`a%nt2s$I${mC#Xzw~NFaD`QHaV; zCJqS~xI6neN@MQGh(vAnLH&1Zd0&q4U?0cY+k?+E`pxfT!oI!{m>(Crk95YYd`ye(nr?^xCT2wMf^DriR(v}qkV%PsnIoH)Kuw=` zGJn%Z231_VMJTm5s0!#(ive@9eakiU2ca43rZrO=rf-?Zt#x!^oO@>jeS znw)nJ?zCD4krzi(crqAZ@(j0c?`(QF@iL$)rv=o}1|lnNt*tnWV?7Jo1bobr^dSvi zgI2STr+sS;q$(*s8E_u-?bT-v>x=yV7nVW+ov>U{D*bJ9Ac7}73hbSK#Ov4IU7wh?7Gtz0H>{xMw?3)omJ|NGd!_P) z#=Vx4JDClUegeDW=d$|yUi^kfx+IlOq-LdAS{Fj+%Et5YYO%_<^;mmLBOn{99o+QbJen@k+VJ8%w6gvTo^3mFm?))AyBA89 zbUGjTsWCj~Xkhg$`Gx7;te=J1`IJ<#wo6&1yKSl`kLWZ~d4VhZQ-P54IKa5>-Ir9* z-4u3a{etzIAM)%a3*_cX^|+wu{U3D?3;^?JVDvb<# zWOM%txI)9oOfy+bbDtXM>+^i-VjhPYfURe;o;6RzHqj^B7#K%DPhP zy0xfVjT~<%?9=0oQl8Cw^OfQ}YuV}>!^H@6356Vu_0K*%On%_q_xsk4U(B1O9$j(! z;5O@ChNp|hE~BkZqN3s6`t=XlkRJRRg+K|F|E9YsNxO`WK4sboQ)ajD7ZP}<0~%K& z>F8rfu-!gwwN^@hT!1!gSMISjnK$WPAV!YP&X?x%OE`>M@O?{^bAhxIUZ$vO#+Q(B z#-1c*s3mY*I*wBM_OTDN)Aa%gSH4|74?>GM-sY8i&O%mLB7N~Bq;Rv&I$$IQ+aHI_ zH%eA|U3zK2j@SdqhXAl)Mp3yF&CTsC{qb2++a{{F;JHn?l_}!mY^t@Imfya&c186; z(?4Qu){WTot@2MIAkJB@R~}welnQP~iOsS_v<$E+k?34JfRn4g8Vq%y+59MqnBqi^ z93czGqMREb#CPQpg_>#a4(nbQK;a7uZEmcQus~fO8{pDDVGr>?^%&lb2VhwL(PJ3* z507C(Cg3p?`kT6H4^USZzyFiE`u3mH)eV5Us`rb!y7u4~b#?rby4p%1C5Hm}@uF32 z)t|Jgh-b~qepnJ}-h=VIsyq$S-Nwz41q>P?qX0_0Bsfylzb-sLMCym}LcFLknV=dC zR$)e%D?Orl2&H_gIr|tkbH)6YZa&MMW|zEdX6o6u)!AQM95m;$t9+wjV<>@S&FP*8#^Nd!SIFiC92~21rit+HbS}_7i?dUp4YvWL%qj3$ z6NdXSjv3u5Z-uow0tAzlh9VuVJ%t4HB? zR5+sT7B#brQ8O~J1Jd%F7A90_4*NN1*-j&iZb>A+?*D_yX1-%@0zBWslFd#_L}xW%4|OK=c2XYwwn*_`ET8?&TkW4MeGT*kW0nEeza?HOFI)NCZx2$A|s?O zQ%#*`zt;h&W^b9i+tq!C4y895|9eu+|AUgunK&bLy~9qmVC_Bo^XdqrXUE$7>!lwwzW z3tk%N=@f}Yp)<~Uof{! zG9_GR$jhi2y5kwYhb9Z=+_Mh<@z+9R07u-FFKp{-qjQ5@+`=rZJzQ~LoFfN1|jF|Q{zb^8=f5q#LmP5SH0yK z`!e$cRQ{=9S5Y#Q92+u@Rd6KZpd+MRx&SS%NB2awb}7kMi@dmbKLyZ8>o5%m`XEYH zEcsq8I4^9_`4Cv&E%gLCPnPp#OZ2&NJm$;Eg!}zjDY}};hM@;{5ZyB`XOp|s2fcmH zP!3@^3j{m({Cxi4y#D+&(egG;l@nqc&T?G7s@PK`(0v>ON_|M)W4ylRPdyiACjgV; zL%YbeVAdmx@EOT2Mp=NfMBnY%<~LBGD%kM|?d3l9llmJ3m) zlxc}5UjNa^WWyX4hlplvi)V-nl*k!GPo?)7#n--b{F_gdyD}CH7a#Ox15ziXCym8|nmoXvI@Je{+b;~UPe-2}&9coU$1?gBJTUK-?Q z|9>5yqY5odONZN8*kTIV2AI2Odg z?hCP6{&W{v`C##3z{_bwe5{IZwaeHotzk{kW0hA>o6O?DF|uN0>k?#Wwm5F24u|un zvZ?rD7ZslP{OkeSJPk)|)5$acK6dc|cE1eSX7km!iYmwN80H_CCZS#TXpB+M8w`DK zPF$O|mR*tv{1FEqiTMvJ_$bTlLp0p%JbgHM_r6`ofZI|H8j|&3T)J$lH1RifY+tru z@)-!seWGHM*@X`nv6|V^IX6+SBnTZ+_1RuHr0s=B@76Y~z36 z#|*rCEO(`W5(-Muh&T4goU0;SM7&EKGi+EajW>3=UDhFedu|TCw$cu~pUy{APJDW^ zGJcjYZ~qEFol~T(8dMX13&n>Qo!J%CuhQ&t6~9UiDLM+Jc(-=N+_Iv4W50JM`YYZ` zCR!k0oh5wP48A$GwD+LIMs0oYRB52$Hex0mT)ER1*)uhonAq^`>7)CV+m-iD#q=p; z;a4Vxx03R^9tj7!w75R;43s&k{Zt=?vFiJF-i~J-K~G=odk$p*YxF#j`02rVH` z*4JR2ViT5DV@%q%>;lBgS1tYnD7ShCP~4iu}fGgBB$9(R4be?XCF@2gLM+jZY$_ z9u6wM%@{|_@5T=r%Z-K}YPi1BN+#mwp>X2D*;moFOo6n=l8bE8b89EjHeA8Hf%GgY z9J{-cxD-0R^!~9FS7hY%_mDIJSrP7D9{2Z?tt`^=twRMU z_sl)R#Yb|gH28(RxQ;{AN`s8f#$iqeB87dgPP_I?vbfFs1kSoAhj(lH=Jyj$6blie7D8$yX8F z_68wDzqF5uloe80uGtbv6oK=@jB2hnbz=;D5Q4jll9o= zOeqCof4LdGF~d_x@QjyregtAAt%H=yGcj&MW{3`BLX7TX`#-IHDG4~KUQXk(RDaK4 zq_i}3wXi0VNcF;R;(TKafq@dc>-6IM_eHInqb`zg9khCe&-%R$Aox^$ShE^% zH|JePiM>q!-cY*7eTv!aCn}`g;`<6`CUg=txff4NM$^r>tsTdsqHgD^4$aakJ-Bcf zlF4j-FSS3oAJZA$NwxdE0eV9W0l&jma0wXkc@hFOKIw!*oRtEW-UR_*^P7P!6`zUP zzAz)9C}%aHwvLSKY8bt_UPt+P560yAZxbWBQVCND9;{^Zx0zR^*pw1z#x!V&fl~xt zIz4KY{ls)5;K~#9jtudfvzhHbc^RA7Qq>tOdx2ZoJ0|aDgY&C^xe?ah^##QZnt(|> zV~AA9_F#=C3ncSR-_fpdEIP~F(4?J{8q%GRt=f4MH-dz85!hwVVYF&U-ZgTuyH-0Ld6gYJJN*S{pst$V!L~bSj~x{>78oM9Nu;Q^Cs^e= z1d)qsNH<4VCN&Y*bz-aXnPq82jBmOjrGvhi&o~at(0fkr$gwmmYS7%(h(ro8vQrT- zW^$qwi#-Hl#i%UDO2~FMKY!UX?=Xf~I*<_+2HigAdp8oCm6_#L_3 zxt7jfgu<#6XmI7b9y!P{`Q_w0`#W8v3qMD`enI`m36&R>|NaY_V>9Kc7fps@?amr#6 zjC1pS1{@}lwFA6q)ywW>t*AhG4*@qQRd9Njv6{w+4T$elEWr&s-z&?(I z$(xRbZqwQAn;F`aBr?_;nV1sByzNgo#(THvJUAv(K8t6>m*URkVz zoJkc+`9dysxM4V!xyj-Q1hCEpROleFzSf2BS6Ug=M8U}+@Me_YVU_`k0yQc2OJ5HG{lR29r5k6<% zoPxg*Oip@Pd;$nLeVBpT4$})G`@sgODACqqUn=v)n^862GvaaI;rRHANdXMe9;BO@xYWXL z;;bj*{WF4l&>b8y?8{j(aA7=S3-}oIBQeDr<3JTs=?+OhsR}BcqL&DT`b2EjS=n{o zJ9HSO)vw&$R5`h*^TFD`=4at?#)OLWWCdqWaVvA};+HrlDsfw0#O_j@$s+K?7%%uB zCv8v!xRA_q6C?bjO>3Gu0B53e#yteE#SEuR&sF_!8-R&CU%I@v4YTD*8@D3Dk#cn^ z?^t|;XU*LgsQgGs*GX4ap@NCeY_W-CqY|6+N_8e_8OaOlOnCaHy?WEdgrMWpb^4<~ zVdvm(JE@ICwXwCE6YROZC6VX*VYm9-lG3#+BZ0_$w9f!+=Jk#2w|+ZDqWLH_)H*}Y z$UMW=j-jv3^x~g1SqCD+MA*&yiMti|idK4#_@;9K(g{++ei|f}X=!l+pF|sPPE9Mx z&k-owQf}_08YxuNOfqtSo4p zzPwc%H@0QyK0>KP&t5IzR>S6TOV%mqS-+)BR&^*WN_#)AS>o!OQP5i6c4 zE8H@kRXF~?xv6PspJcYC?6XKFphu5I8+_H!1$2uQ@#wEBckEg7QsfZ*swx==3Y|i& ztbznWPJ_?Tj~|qfd1k*m2-(EoSoXz&EE;PoG{iu6Inl|?v<|jK0SdHU2$eTkzVmKN zDhx)=o}+q6oHc_nwiQ(hx8ea^n8W|#?!BYoT-g2Zy%Q;tAWHNSogjK|(Ty5JZ_ztp z^qNhS!Dz$iMDIk8o-q38y(D5VIvKrt@9cf{Is19e`JMOu^IgBS{LNzFzOUb!^JtyMPg(q-wFbfOrX`@l0-G0aHr&YUi%lai3FUUhu=zjRZVW>Laqf zzB7dOxy_{W&x^!^h<$C*E_~?Z4NZt)O9Q;)tRzWDz?HtjY36lm(DLfq17~|lib3bVP@|AzccXY19r#B8K9!$-q!Zb4!}Bdwki50T+@w=qp(VykzSqP?lg+_&)qJcEY* zOWFL~pwV%Aww2z=&(D@jCQ)*P4p%X$nP(7!DGOlcm9?(JAP&D~q$BC&rsux@DVdb4 zdkOG)B4w((gYxsy1tGZ#KAt@tf>rY&nW4UxXoeuVdUgo(o<978+`hm(`ELJUsZK;d zJkO(FcT8qI!$6D*G06R%lFz@QRCPuL^sj&YrY|w{X%1s|_oUs&Jnt)Uz2XFT^l?T% zZ}n^@KH1t3pS<#0!>u&wr0Yre<%@gQC=>NynIXDkgNvtbmZN$f4a-hRvhj@HK7Soh zKK9U}{C1pzzhlNf^h+|fKX3ei{Z$A~f+V-F5<&EW3wf1(Yc$pMZ~>mFMs|I18JAUBDFG5>dxB7qR!a8}yB&izzcc?V1REJYIGQr*_z zE72^Y=!ckcFV#10x-re)_Bp>s@YniWg{VN(BXTQE_|m-Nyq271MjXT3X1jIjVTYyJ z!b$yA+dr7@59?YyI``=H2hXJ0OZ0d1@p)}*g21RtWm05PdV#`!ViV^$a1Wk}ln!3nxA|qws_Md#`$Wt#eYjrUO;VB{Yw2?%|>CG4M z=ZB-JS+49y$i5}?C?Aw5K|7NgODnAlCmz|Cb#<4ybqg(4>K9Af^%_QYOQjA5nE$3H zsTbpHUqtKZSCh3dk26r=SGi2=9qq0-oky=HPPzyfDS~~qj_B+W!%x@;%boUteBs`pkq61)W zZ=y~!4^1bzp(zLbog|!?-~qe1M^L6kyT)GRhMq;+gVN;1j{_yAlo5ri zZz#4~)C3Ga_k>wAA~N&y$Tq1G_U-9-*Mty!gpXuC)j`%&(as}9ndZnSiQaeZS!{NP zoYEm#ckEg;360`)W?51FTxru+^U8&vmDsXcIWrD7&iUSrBxGN1rZEJP_=5NYdH~Om zC|F+@?F4Eq4DVvjdLga*?YHx|!lU=oi`>-;hP-ZS4wcRO<3_0B-^3LpHe<`ic#qlI zx8wAUS@nExV(^j7K2xdjXOP8o`xmZy0DF=mmL{+4V!)Dz@E4DkJ-m#k#2v08P8d|6 z=}(&X6I8>)$&c0Ctopn2V`5&>3xu7@ZqILfZ#7#K?f>iFSdWd9NwYw34>jHcJ8T8NmNb|C{y+OY|Apq3#W zjX%}jUAi6D5r+ccv-8jS*KTXAthY$k2^P11sVeE)`r~tf3#*8j`1UD)M_W|b{H<7o z7x>}$e&J+lWOs6s4pl^cPV}%fu8Z^vB=8^!-Zoh%EDaE`9_#&waW%P+T7M?Paw$8CTOc()DSzO2*ZUNx;^- zy4!7Gt1JPob=(OttYZjARyEWuFN8TS!TsxH-+RZIzGU<%l1opU*$SzFbnv^?@#RC3 zc&v{z^;18vi8QKTecepU4H06(5w}dE%!VGf8)6CgICM4U$hM6U zsM#4VFy$xf)R#vUK2gP~U$8dj>x6Wz3T!|PKzSry0i&z^*vcKPM{$|F{dPAoQx}tl z&6*ggD2Jz#u7n0`m5-!(C>-iSJ+~2}q*N%S1*YD)%?+pS91a-lUM+}Dj9ik9e0*S- z2d-UdnJ#O1w6H^@-@vFZtdz|#;|-#67|irS(KPdq-yh;ObITDV99a)UPZdGa5YtbT zDZu2M%r>0%=p2MMq{VQ{`Q)4E1}5RaaYyZ^EOtCU0~LM*SRX;vn8=84nS{Y3><6i+ ziA~v{Y&6J?oPfS)Y7oytonZqB;Evt}Xn(#MX=lI6ogH@RBFrr7|9@_b{+X+q(UH*U zB}`>G0{M{wp*qFhIlWv+!@2K$;JE0$`t>yqi7Df+R2BbMsu~B>8goAg4A_WCFk;ox zy}jd6yGBti$SWGp2b`;o556sJ35x%XtzxxgEn_UT4qzMoXI&I9X~hs&7rCJFR${AR zk^#g-Trd8B=<@EwXTG{l#}NFO{3gy_+c!*$aB+77wn}G%=*$%VjnrqUkMU;oe&u9??a6gtvph89{er49BHr~%jkIUR^Hqqz&NP6j33isco10N6gq8==9YMHN|ofh*H(LO8+r4i(#}PEjoI^wh<`~(gyxqdQUyUT z-?6^p0@J7Tac5EU2FKJip7JZmuyB)oaRabG@B~5w9B#~e8^Dat;tw3o8rhS}2Cj-* ziUhNbfx2VVn3A~o*{1rC2}NedpshWN+K%!eHDU6Av8iIEh^5Z(ic7+wiP>J=84A{C z^OM949fh|NyC~k>5;-uFgv?9w#tneP8Xvwqy_iBxjw!m@PfQA}$D)Z>Wp^E3R+5mX zK8|3^eLVEFsvvc43d%DZ5Pu$Nf?OB%JrI6zA&o1(U5BovL1&HA+?%QhUgKc|3xQo0QqBnfH~mOr2d6*UgyU5SIu< z3HHRH@hZtE1u?*Jxf!y&qb~`k1lJza_Si-B}e3{mv`Wo60p zDzmodrxfR%1;69=F|z&?#BMFf1LUpXWW;R(9meqyk0bEukR@QM9+wotgKJ;3XGF0;_I^t)69w*JxLHYFl;@^yxG{6Pd#r0@L} zAuR8A%U9MoMYyU?CzDUq{qUr2|Eo{xKwMyC8{>FG8QW3Li<|3KjVt>zr5 zcTz9`M6H#bA1fX6z!E)MHt>0dABFx7QYeULyYv_0-L>$V``MF`|4X-2_#Z>>|9#!k zSq4{OilvAv%P?U{2vwcD*1QlO_dXxJ0DE0S61}v_e7@Wu!F=v&$Q5~V1T7OgSkwER za&~t;LsQ+G;Bg_tt+XXeiV%d8Z9j>D0Gt{os+EvDtTH*SQ$Lcpx@de+=)(&Md5en? z7wkXpP4geFJh2s3I)Pv;2rxK?i=LY4{?@LN$p~rClqTpgB6&dOG9P2NE1b@5I6tdL z?gVXLX4AE4>q6rjU>+!qPtuw6ik^ zwez6kx!VVS?*f=hc&|e86R#jgDz@EH#~j!-b-p|W?GKqw+$}ESLyqeNI;+qYg}ji%A6%Rl=(0`QQ~5Spt0Xrb~e z3#z!IP_ArsCtSK()HbjiL#;l0+Eqy(51^I$ir!!RsSePG%UxyZ7sNg1K{B5(4At2~$+Cyer^(_yIautLlui1P-t-reatw+5< zbo83UA6Oq}d$6$x^STgF6&`kY`>xcD)r`(WWwQ~=kCfjGJxpX6Tr@u=!B)kS(Uf^C zB5FerrC|5-Y4&09Fw54k$lctL{M9_3_%2P~hZ)8+2(vYwHr=4GyqN6XQsqauZnX>- zW#q0(^nPVRi;RkBSpHcxH<`8UkAq87tVdrj^60$!tGqz(9Mu$yuO@{>ZD^Z%?~XFMJLr=pAXwlr$Ux zZSCg{^$|HJ{;t5vXvN3d!5;u|z|`vvwRYHkcE6!Muh%PCF+XpSTXB2Y>q;6WTAFQk zSQq|kw-@`5@l#a^h2R~wST9?DGeFGz#Q!@-Hh)f|Gjx{w(P3nTe*GBP4NBZ()wFeK zgBamt;Y+7fXndvwYT%uqp;B|c7}L)n;d)f=kM+{HT!=K;z(t-oQ~cp(eq1#+sld;n zRtCoNa;^9d!d(%?;DQe4tdST=liRiza(i+{Na`Ecs%RXDT1-yR`IXQr-b!DO-Gy~R zDt>~vgt|4-{tk(!hv=s8d)pYvol=eR40U?`hs3ySxII)Ub$s7pOvn3CO&k)uH?udD zluA=&Gf|QX`)P^;TCNJ_6`ZvNf!v(R2_V4A`BKEp967w~t|9XzV4bjiRZG~z;r<-( zW&MOVeUXsM}@qUR4#I#ZCkH2!nDR5hT!5~1&hQv z2qm}Q$jQi`4u6gUy;a>|;J+t?m=!(hj11q+E2_O!m}{~Xj-eP72)?}?V%(3wG9@Um ztBs!}JHJ!Bl?vAFKT-WvX8qHf3#dDdX;g-IeqI9VPO91y6ouBOg&(>$oxD=9c^; z&u}DvAh}wkO=6$^A*Io9Flo-2*$XGm05fxL9sx``$kW`ECB8RbQ!H^Xsxzux!-suA zNav=wC8_t!)UIL&Rk;lJ@jtXuSf$_sEik#{Snb!fn)UR}(W0SgKg}aKJsrCkG;}zQ zh+XKdm61rnz)r8oh<#sr`Dcu9OW=N~&bwU6I6_^zA%wOvQ+4B8Ii*!gt>b6L6E%t0 zKw^js4?l&qLX?lm^$So^&4BU3B!m=#pfqO|RzUU&*pGbHRxQsjDu@4e{Ve@%8paK4Jve{k7(AWF|~!CJY#Id_~nZd;OnlHaX}GG!6$Wuh>h z&4qGic@b`MH5vTO9G-}9fz?gJp%wS8&GPob>5 zl%mIe*p&_`f{t9p=Spp<*sTk6#1nPIr7S&(?%8*Fc$TRi!GF`Y$v8!pjV#Y^k6ZG$ z6ksl3iCm(TGkanYG?7^Uh-s<1M4H(I8uV^WbD>QBSEk!x00c&OHU6hN6ig*x~6 zmeZOAK63Aqcj_V)=VQT@o*^@AF&?jvf=yPuhtWayVH$&|=t;R5D+|W4__@(0xo^(J zM{m7bg+wL9cl!1S2eZ5v2(tA*B;oB#ZT!wfxXT$B4uduymfE&QmwP!J7DkFD`(g#+6_>aKgXeQ6d z+H8SCHDgYv&GzaF*{(Nj-1R`Cm4E8ClYe_7U?O9nc&Eu(BKrS?)4gA^_H?Mx*}t(z z(BUC5b~}1lFprM-dvq;m;zHB+kXKx>(ib2X^TnXb1PjYd(XKPFqoORcAgqN4-M|fr zJeb7(CZcTvCzWNqc;>-`Ot>|564IgsgPgVb+D?c>t}5H_T}>FTBX!r0aVg~oH!e8k z2w84AD;=cO#vQrUB*|AR6ECWKu8`hTMBvRxG}!4%2{+qMBP82vai1or@l?;x zU<41hCUHLQu0HR6te>0e(b53eTL;yo1$b5N`ZaDK#^(DkZ!{*vCezUj{Mk*bb~0e< z>=ha?uB!8q!@<%Kbw>j2VIXIK=78T#LA%Eor@2MR{X4(0NjG4M2#n*QaXD`ncL zLu>v`kK|SX2~O()umSDX1udZ}Wh$jc9uGz{6Bw?$VtEAV*_*Az$y!g5dehq!=5YJ# zq!AieN_<@<%<%edp($ZF?&8nU)|VR8>Mv<{<~4QhKz-6-4zQmhqy5tHK;k%o4jC^bAaa?2UzUGLmsQo;WpTf1y7g%$SXxHo9EnxJY z=1tT6_(7Uj%>?>1xE?W%{r1Vq1l@7k?=6Lq&!gD6Gx`auKIlUvx3#JBKPp(|S!`Yh zUIlwz54^p${_-bu*Oc_RUgYOmT7YZ>i`{nQ39>$yNtadO3-wa=q0{X#MazLcn}66l z8kf;{I2oZXQC50LsNPBA8w<0&kzVfIc_K6fjq25#zI*z5yxN$?NXER;H#aEszq+k{Z^Ty1 zlT6EdZk4pMuR={OK3c{0pJsSFMun0w7E3_7n1OFd?b5?Fc?Dyyh-VU%&|;%%Mrl58(!dR)2WjVu)~U<=$A$_;fiNehqvcnd z^2(hFI$Matq}H;O@NVTcOvMgjGs>pc!jmTfCjg+%uI+XJ2XQ8g0%Qx6&<>$AQiF8; z6&D&`82drGV{#3#7mjdO7#QS~Ua;}HQXY;11qfKyw-jy<+n-l6qT^WP#^{;%3xox69py$WFkn zN%TqJgVRx%e(wmh=|lZ`BM1K~HaYNW0MUjmrQ{SSS4WYha5>arRj4KmjcCD1v=gfP z4Gn5L5}J>Gsav?Et*#~%YyMe#^`|ch;I{Ho9+b45W7>ZlA9*9CTvh>0lq)*^ei~7N zs^u7FYflu3(wkUFF9~7lSP$U{1=yL#l(lBqlK}FRgD_~K*$zvY6}OxCmW`30lZr_E zm-waDXNr1)?h{Zj`&!0p$8x);c)=Ouy|*8|2_E#{yN&e_z=`s-HZ%QKA}>(9 z!aUFTfFYrh4}@b@mj7K-e9yh*2U9H|>8xzgVq@pMGQAvd7~Jh^h? zk1b!GIG>&JTPe9Xy2GI(_a zFnZBZYC=}n;n~gjnxCSesB7b}IYK;;8vn51kd2bSwp&u)mG=hIh!C-_^{NfnHcg(e zzf=t`n0075Owrm>{pRt%hP}~6!qsdmoPO%Y9ycxR{(0TDJ=a6$t;+3lYuhh7i4J!S zmMoZawlYg1M_ldhWy(aPZWW(ZKUBl#V5ckZ!0MV>beT)22wWqN_V=(Rr%=nX)!7d| z1O=BP$kZkMi0@tuEa&jj3<_qYW_oq|CQrxbdDfxTri6dPsjV}hitRthk z_=3|DpUm3Ee;zi z;ku&?%d@hRXxwVe0N>#i61}H)BhmK5`TX)}5OdN%Qp%kPNgFQJI&SrIAx?h|aTS63 zTsq!ycl!QCT2-t4dFc43s(4SPAB3fZbgcG!Zxi}=lgpgnH^&vOzVgdTnbkGqdjli$9`x!a41Cy(u(^7?u=HV5uL!1U!@{a$DNgxd9F-`7_wDb1`E zL33)-i!rwg z0lVZI=}B;Eay5-uIy1i_efG)|1)%&CVOpwUV{bP%ld^1CU3XT!QLZZhFprdTamclK z85nJ^3C6X1V<84`R1iQvYG5x0dj9ytevLK)N;mN+Zn7_Xzllb4X;vzJUOXP~Rr*ks zG)vRcaO!)LM;Mft*uWl&#f@rK{*DI`gK>4(z~p-5y(Nzu?1gP}e!i z;JEHOj|}|TOy`+J`1E)|(mvUO?ub3Y;OK5e$;@bi zlZx#X4)6U&xp5wYaDlYn?x6!#ja{0zp9vxgho1;mk}zVi0d}>=tn5z9I?S%Y3G(TQ z8iAuIZl5phK0+4dIk;*!lP8n2I$6-*&kYN;Ntj-NsL$2QIgIA$z~Ca)n@NE-0uOl3 zuA3pBZej^KlIqrJm+a4nQ z>lIaj@5A3iXQ8W&{9OrL25JJ#s{UGT)>#H5;!FgGhxLo+==JBF?eE;uvss)v%O6(^ zjTh322D;xulG=F5*!rP!*$hi(6da7@0Nfak=y@Th_HcR}i_RPX-vb+AW`4Ya6{Az} zGnGN2Z0lH;eFjz4H2|7VR}kBbaV!!2ivg_82V6AgN&-7)lEX;Te=vYe6;mvABIUM$ zSFZejV*sm3FU_Ro*vvyLq67l%Ngf|T6Qkh+#>sO8x6+Kxo<+rV#(>@QLK+0W8Ef4l z79|YQh!Ws#lDSrMBRp7@I;O8kv|)SZv?K14pu5#~r_ask(DPaVM~rXs^eG>4Jjm2o$Dm z+Rv#(D&-SY{mw$}fXLlyC8H-im5Os{xib7nQ(5;EkKk=Vl30C{VHF(I(&OUK9T**x zg@5~Ls%vzW#mw`9NkZg?RP>x$DF3|%wh>mVMJI~mO_B-Z!mgg=~xsJ(0e zh{P>|DGJtK4l0sMtU3qksIekBS?d z$|`*}8@FVWNa4jsE3jx^e~Lm+LFUdz|n zpe!=>HMKT@;82|v7PV=$ILn0Nr+ZUasS&)3`ar_mL>3@;J8SJku4h zp2V$g!trIz>W`K}jGPMBLta5KzU=i9F!K#D{vef)9C5HV^rGv-Zkl2J@@NLXPv@j| zXGZdTy0tT(UN(LvmY&N+{ZUj|%v!5IyajW@Cdi9B#IHGVC~S)|IDGCk2ms>6F;iV2 z;o7`s-6PvcWc(huIXsdu-c!xnti4)Kbk?T$5%R6O&FZ@J3++eh zPz8KZVNBz(_V8u<2Otd(RVu*^Tj6dj*?C0`K-e#}%;(y(rnLKb+EYa-h5S2b5q0g&bIByWR+K&>5jST~guwM%5V6(PIRd&DLRW@w4ZV zw|3jOZ`9ReqYP@Z+|9!)=8>T2F2c=JNShrlh^Q`7MsM<|W#;~S+aazHEs}8svi|b> zU>yXYKiL|5KgJu<))wpdZplsWYFWY}rG?>!X7zg5*IL`Osj{;esLfsgwb_$*CX5&6 zSPO?qK#Due4n8tNmUi?lS2V>N9W#@q!G0HReQ6(5`(T`KT=0Pj-|yC|ZJ)(m`R;nD zK8HTXeD3PcD;diAzHDXVJf+T4b>4kejl^;3soOGDan`p%j5vPYmXpA#RIR*#akkkS zxY`@w+1ZQfmShv4Mw$y8-xNNtkGg&$$@d4^6qQ_cMgB@Jkp4Fy#hpTS+W@AizFd{r zaAI}T$Md;aW?Qi_cVOyr--DNiVLC|fv2$z6EU^$kX1|f$S?RUpd)%?7s|3@{PV6Q# zxRvWCuvQ6JG&ZdtUe9yChkm^Yv~(TkRTb3U`{-Xga)8&ck*&l`K$wJ35FEO2y z?AFwk_UU!{=2zqR^4ahYjZWPHko$S{6Y!<_q1Q$A`9uJK$Zs-%oO9@HM}U3I z_;M5_MfOzmz>kK{b%7`a%eL1lv`fNu-8KsFJO#GcCbF(V;RY{pyxLMSsN!1ihCx zjKI0}br=SZu%NiagpRl@>}DSgf6uiRt)76t4P36b1(7 z_PD=@!qFzTSXvHng`(ujV z1G~OdnIZP^^$?}>7=5f3g6|w1inG^04Fu8@bp@sI0KRa)k4uIM>U4#04*Z~L^z5)D zu~q#zGL}hKmFaOdy*_?M^>#=`B2ic}{#SErxj^Rsl$(|nt}e_Qp8D^R-pWUo$|PW1 z{bJwEJka8W9~~RCNI+($pqjJS6sZeWNo}AzmObiTcV^h2!|U=mkjYg+16_3ZsNSJv z4T=-}8^c{agthgF%P+F9+5eF&41_;_l7(F?We0+}td_mLJyNPfrptzJUU8ay7jmj& zKRQOO4}2KoEtBNE!`RQ$ID0K8J<%06IT}1XoQgncko!YM{$jk?51k& zP~kPxn1nN8wwh@01lDIhS;k z`MyQz=;O4bda5Pt?9cS{UMxXA*6ENRmJhph;G8)vY4IVHUhRCHv0(2JZHI zn*4~NWd~XR*hGKtFxJ%~MV)_xy|a0f&QYdpLSYcf1yEmEHLQ~Grmt>yX83HC6o{ym z29oQ3Ub8c3CIof3N~V`u3vG1Fal5mR6Mkihk@PQ#b^PbP`-+Gbu$e$_lO~xI zKqEL_0bKlpU-q|o-g_W@+10+*ApOcgbo|TRC!@NRvU^z#TsaijZ#wE&J7}NY(p@VR zGAKX{nC)ibLg9&Gz_bctxPdV_Sd&KD#M7F*Aewt8h}pUM+DN_N4mwFXn_33H|rxZRnrP+h0>^K#nXmObPS)CFdi~3;DHb#}&QvKbyBf1>GHdu+Yt3M`eGu z?%>0!H}nmOU-R>zFWdV02is@sr->BqDwTB2VSyObvPaK*1nMBQfHitKr{YS(E6tXx z&|X<|(@c)w_xxOkx^H%Kvps_E7jict&WrOe7aPVXzyc_WdP5eC@cySQ2?h#XPSx}F zPQVRRs)gYRY?Hud08XA_u&k>^sB|FZUy@ccu1Us`_i1wf=5@1%*kpB?D`s@yWs>8N z%rIO41(&YtLKBj3*v|pS!2$l>!KDZb{4SkCQHJDKej0JTnM$;R+(&mu@qDFpsa3o+J@9i=p(ftfaOTsNz)`uxA zA5nG4XOYs*l~p3bm7qN~$=|4)OG$Q-LQrBir7}es`wBtwUG&_xmi9awbHtpkW<7{K z6{;P7$(&N#Eg*9HJzn!OJ}fiz#0+2tQ!r}(HN}=+8w<8RsEU@f#w##mym8UYbOTj% zNs`5%B^3^151jw25!IbM*u(x`dBmcB@`yoE@raIp@QC;SI+h4WbB{fXZGtf1Y0-SzEzWO&6md&*XkC$Pq7LK_FPW?Hw+H)avc$XxQPG>~ z%E57O%~f7m_7+>&7@Z1g!n3Gl+AZF?qoyV)jhcp4#K_A`qHm{k)Y0|mO5ub{Mgd|e zvOdR`a{m*O*fd2nF8gtPp_fz;^GbS0O@$-7Ths7S9^0Nu3=G@4cf)M|GWjSGvhF*T z7~Ue0qU2Vxn?&vIcI)`-|K>V~S)gaQttI(*;}Z0JrEfiBOTH$DT&&NbLde7huY_(m zYnEit=37+7Ri%2Rel*B!(Z_&oK|=}8bA_f{)HrN=K2ScxZUo5 zK@$Ir)gm1r31LNDmSdeU#WM!`Vzjl(m)`Y`kVPFX)fa@jd^(sbv@Sl;@MN~pNUKKN z+br0q`Z|WCzgXbf=Xd2=_$jM#J0Y-L+OL4-Iv2<%SbFmUu8=wwK2_~_`@;D#Z*78p zPPNp8N8T7g^&1NTVNr6ky}8+UHslW1Cf8=%*ps~2(`fXHoXxU_h7>016!`-0I(IEW zU5wM+!oG*a8mivEIr31I?R+cKC&-_?azEvi>^duG;!4cGYo*n6WTikNrIvjC?!yTR zCN=IxjghKK^B-}q%jWbDq+_#cfxqSHI?o6ulu^5-T;TGxqd8g9@E~dDEnT9pK|npV zx-sYz(H})rUAL;Uy74i_8+d&vYMn6s9;+{ya7}-b3y}K(hTh!#WE?-DmS@Q z`ZE{7kV`{Ht%q_iF$o>X$Kd(qt|%E3Wvv&Ti+}JQnml}87%Y1H9dR>G=$3jWe2915 z39QbIscpC%rntlAGN$H?Vjgp8VrQ-1kI0}UzxgQ_WF6L`4VFKaveq1|M5JPsDLHFu zB(OuC%q?8rat)P8ruq$~AS@_V-*+bge=ercr(3PSBpjQ!9>O;5Yu`1wvr16%d4%DB zQEg#&xTU@J!D|xhY0*O|=9@2MiT5x1gEsOBI-WL0acLz-eHrvSuJFkYVyfR|6aCPV z!O+S_2xPnKRyytu={wO`shi5q%;A|$ZOJh`9b8RT(Wy;O`rAAM zczE4@a5gl7KYtB+XI)*@>^t|e*-cV%yFpJJ5bzJT>D!A2wE5npVfV zLC!k|h9OIDlxBgJQ^4Ytz_MV)Iel7B%ie?oXfOMxdHY!cDXp}K-7ge@Sb>#A4UsuB z(9Ko)tD77C%c9!x`j+s_R&7!HoO` za+7~qR6FATXNzjLI|i_*R{m{K<^3Nms=AekV;)S0UgrQ@fK+y+ln77i*HXiRKL0IA zI$v{3>^1c>JYk15k}^!k_#|^sPO^mUoW+4SGxdVGnLKu>y1DCKUB>fE1T^_e64P7M z%TN-qEykU~#ORI^9a?*+U;^*hVrlL~(=D??_%)H@3YQc=YZr7{=! zn)zJwXloCl9Z>5qcHmZ6goRKc{OBVbZOCh%x7)u^sC36P+TZ%<8s*{^U|n(MSx_*f zQ%N#F?vzxc>`?raLfjq}!L_8DCV?+_1X6C`R`ut-VOmmr!l8BfRn@%UM%X27(T4|7 ziTrHe6UyN9xSh1R2 z8}-idD9&H+ZwVyc*SYb~{eOmgTgMmtH7VHK^lQ;|&gLU^E*Y6&SC<(QmR? z^a_YFtPF$O4jVAM8m4yUsy~riSt#rskPPx9<#4Krb781LH$^P4| zy14l)$XpX*%F0T+1N%3(Dggb*O?Z6sw_CM+)TAk-EcsJJb^e7Wso>%+u!|7FUf~pp ze!}4?aN^BvdiBc%Y<27}e5Y1^#%e;+RtuqIvDhs@J+D}#h>k6uYr-hs$M^+TIwvnt z%dV3=sIU`@*S@L5E{a*=uiKC($g5SiXeBb4Dp|4m@y@>e%;?j3_Z50&(i>{pPibxh zN%H2i>F)l?6a0L;6qFC$Se^Lh-)I@@ZEt=UlV3cPHOtF<@p&Ytt`bbm-_#>hi0CaS zDI zZ2pPI!{^2qtbLt?r0@Mf8R|7g=2k5ZGkB!mMtfC#k`OX@?oqO8E-bo+@j@5>A4A-L zb1Yknijf$hU~TaXvdfX$)f>ijckLoUDj8|yEWfT93)R-GEn`OqEFltj0v5 z{Nawy!CMc6=uVn%s=%G{#1o0R-1EX0eS+H9Nvuj@zqgkRi1NPobK~hA`z@1&nNAP& z_^Z403c;rNcB45L8?Rlzpu>AIELR>ackmti);U;*0)=|YKup&ygE-{WP(b9Z{lPBn zj0Wh(^ZF)2T8TSYwPnfzdp!!BH*_6*iff2&(Xw--_p&NwES={Xm3krB6lH*2?s_o@ ztmHQLm{m%n1JzjZUw)9@m)r3NDb0jsqx zZZdR3IW^mrMAIgN;y|rniR?{L{vbJQIg2L)BXuk1PrTepD=}LPuH$&J4xdu=<0bn_ zn%wtgS(A34mR;-bD;-JWpHz8?vfuhAsG!J~JW^^C3K*o?_B^6OGI)u9-~(J9O4faNo(EOdR#X*u#AN18@IeUyO`niG2UDnrzuS_ zj}2sLPxw`Rxy&WkI=FW$^CA4~y{`*5eY^JvZHU3EL&1cL_6?VV)TWkSmeyd~!H)PC zGzq3?UzItl$?TEz(ajt>RQPvy7hXnX1t#34pcO8M(=K&!@y#@U_g1+*{8$+`SfY4b zN!=$VngpT1Y9uScs#`i;0(1ALzAF5?C*}`=jQ@b3{22D)n08nL?mABE) z`ypovt+>?`Rrk*PESl^?jsW0sPb-{rkJp7k_gXd$Mn9E|T_xWHXZS3`m+mWGMP)8MdcxSv{6R|>lg#)m z;I-JQ8WpWl<05P!Q=KRM1ndVqhnypZpQT+u&Yj3F5 zHH=S?ra{I>g?$oLa(tcIm7jeyz*#8pC*rQ_b17%2>!1+nHnj^6Ezd9YD3(Q|q=9D;j~F%&=}BkxY1no%qfo}F7MgqfUOyltG2gE1zPQeDj1 zXb0d)g|-N*31);0HknE{Z=G>#3~F9+s_4zZ?@a;!{W{I}PmuEclA2;ncW0^IK5*3= zc!r$}VEUQNE-kM}@zc+S085V?c0ii9;$YOPG3K_T&|m1|KMXMH2b{fFRujFAYU~gW zO~Y@_W9I?`DE;%XbY!EJK)L>jbAlEd4u{?5I9y;l*D1hO*$`DXZ>_tooE{DNHY;V% zo+Y=u7slw#VG;_BF z#FL-%o_tFT!-f8rL9c)X7X!NZQ2o?DwC3~vAZTPAA`>)dd+C*ZRdRX;r_^bf;Q@PI z53f4fpJF>gnV~i-HRSV$%yy4d8D`J4wc*ze z#z>}6>_Lw?J?u9&e&gUQVf9Jp6epvi6fe(fgzG5wWhbu-bIdeFMM?7N(6OMca-Q)# z?d=s)BL~5D5YI=3{mtL!HJST;?%9oH#EdvY0=inC?4F@;v-FOpczB!h8}p~jNC*fR zktwsb4zN|I-vYT3ot<(RyLNBROKt*okv6Ha*rmDRy3S^Czn`hjuuan1B~WBq7@krd ziJi|R)JFLmXyHgyN;oJtXW#?jwG;^6o}zm-aAvVZb{6G^cJI2D?qsOdWH;bE8fUfw z5zTpQ)#69O-%S?zw0aR-v`;?~pHQPTtix!v=zVm_x2$^uQ2pR%BrjZRMdb>1HLW_w zNR(=hV$s@-v#DoM26d2rsx7aC^f+d`QX0DgF~bsDWs*|tyJhP2Y8B5Ui)ls-chd?e zN=gFh@?iA91HTS%x0BC^wa_rR(FYgs`CGW*O;fMg(GTCHktQl#LBK@s8mDG$ga}P# z`=2fS_LjVZ_ATZyK_D}N6YqPV-K&iH-t=gu(IjYlPxv{9Ve6F+-QsbaiT&o*jntj; zx`ZNl6m&S>ctsGPBg-p{L#=^XZCc69P@ zMSFXpsdApUv^O7NQM&+zLSP@UDl<~vXXO34hbK)5iw#m{eNv94<-zlp^i>k759KIy zs(h6=8xEY}khmpZN4w3$8nppSYh$o`r4Q-ch1WQ8*KHcH#Mjg_h!GJ?8~=XQxvCRs zPJsQc@nbkMU?aczlwTx!@0N-jbXO;E$eZE^wz%d5nR@U2 zuFFgVFfWI4g(dO6L?e1Gnz8hugaL1B5hOmb)8g?2&MACzks*g1RIGbhF3D#EN&|vF z&PyMCm7ajs2CWpHP3~VLUD&n<4qnFXwLRPn?JMR{SmOIVA?Ro**{~(7yaU(Um6A>{ zCajGY$MUS$WFU2iiy-!($2rkg#k}e63F`a%v+Q@v%6VNgy*I3kgy7DB33fgrB$&T3?mhU36I$_{> zUj2ARKe*x#;g+;m(R>;IhvE*3`Sit4V9UsiT0`sI!0$yOwOR@zwtw(jbT7zc#mf2w z8T?Sr%RVzWr&(=ol3C}D%S%xZ$8;3H($B8dgmoG8elQMby_WPE8sYzX_JFm0yY8JH zaZ{jCs|6_9Y~Y+uaCKk)kQoMG6bsZy{B}ch*y&+Q!d}BvXMYfg@drio3rro?N9a0?4czQ=EY;^6F*GXnUE+ZgU0O~ZDtbs zDXhw0dUm*DO~GO}z|Pn7=kAn6iIktNSd|Ff%pdRh(SF5#Hbs zOTM{1Sm`(olTRqho;hi)X1>dK5=uEfu$WxRM=;R6@^V~xjEq^V`2le2b??a18g^!O zJf|2TV&GZ>{y`!>S6`Keq~+nANE332tL;<0iYi1Sz50xDFdN8)RI)MThynkuq`N)5 zqE-XBbJLS5w;h?c&LXl>vFW-7zO z`k&9$9@OEw@Fh`=z7k*$_|bflmYx4+2<($e>CPR-tYEi~>6>KVjy@y$f5>~!s3zBi zU00nr5d~2|5CM@EL^=UNXDSdn2q;LG7J3c6I;EFL354F8^bXP$LW%U=K|)80p_c&r zWzMzMx4v@Dul?ifea7IYgE$zFyw7vr_jOf19vvg;(_O+=?;!hF>$bAM)mrcW(5ltr zv=N?JM^#44XLOaDiEo0`d+{T(0Cppb0m8awl0#M{Fnq_g4(8=KcSZ z82AmSb5XG0F8PtxMV|a7MAd*9lJv)3f1T=M5|DZFd@ffr96JkM*dYtl}Zg4u+lde6%>FYwdEGF0rM=MJn+%Nuo zqq-CpMXH9Rm*M#!6z{VFTD5-AjJl@f6!aWQ(?|Sq^AYWK!P5QO6;@D?t%|RP^~qq} zwmz%d^krW;#JD!?U^Y;=Pj~EOQB$QXC0%!KNPQ1_-|>OqY|Pn9^{^V1=?k9i@6a9Q zk1YKYD&UMKpvQhgd|=&o4NtVhP=ZpL&=28h=vuN>KWm~x;cpqu}sHT82rP5eiB>f z5Zi?EUKJS9riT!RU}^o*(N$}qv7lqgt}I!>RF@eVU9HUM>2IgkIaj$|tw*OmaqH*I z(sJ^_^uoGDkD!NSR5@Aepn6a4;=d!8wMw7LyIwb^BSC4_DsK>iX*vDBNMqFZsD{Cr zj|j&inY)KKF|lWi36q2@0$g+yHP_u|U_}&k6o;~X;=`amM5W%&SdK*%(r>KVXvD4z zIT17hnfcR1J}31T<-g+Rtj7{Zxj(ty;`1B*!u>>Rh>DTsj0%V^D6@MUi_OD=X&Vm^ zXP3PU!>W9BKs)2Fp5b|FOwxoHZYj=&BlpLjD)?Y+4;Yopk{MNGT+yPOX8P4QMP=+O z3-fH3p-&QhmCm7=(D2|By#0->R+%4=``TKHn|T}ItH*cnK@9iGif9T51r?f7ZmJa} zTQs4AF&$(?_ML&yfnD{JxXy#J6AP!YH?YP05DU_E`>aw&K&5?OS-AW8A6iQbQ<=mW zAJ2*fe*isldu#it{o@{oH~$U4oK(d44y{d+hQ6*-Y+WLHEib=+Qu@$)vZ3xZLHmH#)Z$Q!FOb^V+_`Z0tdrt(9bZB2jkpu{spFFq>jg!W zUhwM%GSzrRj!q)&ZFvvl-QHO=#>>4Dw45#e8{Q^iG?yED}+y{u+OD z6_9^_OTIDi`x-PRTiE`X3jA3(D4_c2@G7-eiP!(}pKfEJ(uVRxHC3!nca4cUJ}-vt zw+)@5UYL2$P)ymUxTfCd;Kr3rc<)nOl}G%z&mBhoo5#0qco014jD%M}>Mq-6o!*xX z>IV^0!9tN3vP*VlmOYxpJ_X@NqbsddDUR=21b)Mw^`)Bfh2m{a?!4h!&T&Uj;ba=% zYt1Oly=5obZ|m^d&z*NFMf~O4Q=*Tv-HqokB#!GHs!UIprXCibR5Z-JjsyZ*0>u=m zNAXkK@=>DeR`@O5{cq4Q`j>i8f?ya$yauPPi{PtNRhM_nX~%5IX@jL}u^Wh_+oVJdfV3<{x!Zbh^vt@?5Gq8J0f3JiX&f<7W4b zCw=TN!WZU=(`F%s6V5)fT`6tlnNX(N=%>EeWN$g~I`0xUB+yPdNJ?@ic$aP2uRre+ z#4LERKR>3&)!R7uq(l0v@5JdTXpd3qshfv|n6Kd0_W|bR24VG!^8}q@;e>r-{ujqn ziSL{fUgBgbZ43n&*+S0aN$Aw$JNhmihi1OBFGU{q-k)^|^Qe-;*1uvJn_Ub=>uA9g z=NQ569!D0do!LV3=zNq7ZRLmGveP3*OF&~96QMZ^fU#B!OmPJf4f-VG$@sX#@s8$B z+T%Yv6ALU(KZ^?VibZi3`q75am42hpjHEdd*6CLe^nW zbH51jhn2ygkDhq0SdFpwA)c5-%g>gT16pv_ez8L5TjW(936-wF^kOJU!N=kR^ zK?OP@|DriJf`-Qs6kGQbt?~RR6a&wrt5$`-q}=9xg=>E^ZE)6xHa4}vLXcbNmVc)? zXa7xeR&!&I#HD}9eJUzH2Cb38iEFL9uIc8HP*0Ta?V^-kj5KWV;L9v#R_@Ru%;2*2v`w@+bt}rAfxA`> z>CRT8r4D=eYDpJzHi%-YgiNibygqro98%G03+&nFSozTv2l@j`+@H4e7&;W%#tpD`b*1|^f+3VT#v~0Y8#s| z!VNQN32?G+3{F>z(|{YtkO@)#bb1tca`aZQb_1CrDZyqN`d-ShMXiXD%uG!)2Bqw} zk2&EbkF?Dcs2Oh(tzMtvG4a@)i+qYKm@LDzi<1iDpK)oH5fu3 z+0nWAK@>P8e`Z3DB-$&fVhJ4!)4zDihbEP@62CXWDU$fgR{JJ9Sl!Yl5{q8oS+2`+ zR=JYd#fh>hk{nxzf!(f6w&loEvyQlv*vPVoeEh@RhjT`;8SGd+b?%V zS8vbB=s8xDIIfmOqUsKd)OM-XCxTow{dIucYrD-2f^_yL&h>a6Trt}_EY}~*eu=g* zr4j39ZTc74+0f?d^w4Q^>ufoxBVqJ)o06u$GG)~rAVH>BU45*)MPV*!yPDcyFg@&J zq8l1i;Avt7?|f-hcok?pK6IWZ9H%w~pYwjqf>bPI=qr#j3ZZi}E+|n+8QvsZrQr+0 zA*j1(uTnKy7O}d;1Vn7T1E7WXxf0&En(@hS{zGAKC*(Cp?yCQJ@3BB=T&+2&;k~w<&EnxTnBv5O&**&R9>#yoGW}a)uuM+1%l> zvAM)D@{Krs?j5!@r8K>ru2iRi&?`s6jgAzm`qmCA4Am~`9VSC`!}3z)6~~LjI0Lh% zYvO9XZ#F5*8k$2*%ATzK;Y(1s+J%$164|{6kAHI9bDk?G0{PT}>rg8bF2YR=>qsBp zUw4|&YMH)@hkrT0l7ZD;LPOPlnt1x~9p^mr!8V^@Hfx^Gmw8qsO~*)-oX0hSI(xz> ziLP1`(z`|vhqpuRn#`5Op4ji<#clgUG{T$ccJ6f;KJ^4_WjVsTuWn9A<%FHT)zIBJ zQ*b&p_a~KE45zv)LsHr)^d}Sff=j*U{*+++fItP!)u{K9&SlhK{%Q(UXs=(1@XAxx z<2F8UQ_|G>#kg3VYu#V4P+ek?_7~k#UY#6rS)cB{0X?}i}Oo=wV=gPFK zazaunZCY4b@}!@I!m8dpxA@=jFkkBQ9Vq-yi(4TZek0)Li0aqJnE>nc)ht(=k}lV+ zGIO4#E9|x%U7Nm2jDbj5dnoPLX*g09|7~2qnFodP6fQBlDiERT@Wdn(y|`zI8fM8klAtu9BYp|$X2sx z``-}UlZ2OwTu%0eO9Cp}(QJ=a?NF0P80^67O_T~3v}qs9&4ezes`)Tk1?qa|TKWkI zObg|mp=-!)Xce(mF2&XE4L!fLc=qRZ#;{Nj3 zy8RcAEzSSzu{BVlTF7Jk`Q0-5iB@{flGy*~vGrR~(Bme*3TG*{vGjk*U#ft6U@C7@ z3=w>F*R?`EyYYN-R}B|crRiJo4+bNU}uqdyM`(ZK905q%t5`8yHFIEZ59*3KU2Y5W$;pQ|j4wFEWm z{AkjVb2(4-s($Qk>X*cQr9&??^7^CszN64EU6tnM1L)-BQRcStr%*Ba7!p#%!U;w> z2CVx+*1Gg%iVW>`+*JlfH<>}xu5mn!RQOCIyo<5rj*ga2eI%cjSgwG`@>$0nq*Itx6iAg*Jp4Z`Hx_0?pj5D7!3~G$ zH~#oFbK938y2iJPry_t{?7GqnJYnu9-^LSn@4gDELT-O`fZQq)5il$UV>p2k@OIf> zBVdPrje!4m4}ahNe`@%vSlHQVtfbRHCF641u!Sr+XZi&9X6o4RQ0-i8c1V0l?9<2@JM*dPB^C<#CjCU;NEw(QB?wx1YW_QUqOWE+B z;Way1Y)@tGxiR#8QUw=H;QOc~(??r17k&=zKN;d)Z3=1CL8cqRf@uB1wanXxNyitY zIa@COOiXLw@u9-DINh6UeHfJ+uxIl9mwr6Kexd^=R_&_ATWFEPfHtxsX z&{K2wgYXevt0&xv9+^U31`rp#kJ)pRkT3)3{#!)MX#*iqZB~VkWjok2JKjjQm)b?R zGx9db!9pDi!R>KwpJL^2qn7Vo-F`dl%Mj+!pJ5#JJwSB_$1}v&zVGqIp`Aek zMUS|X4>}5Q--`c3s}8O1y;OL+UTSb!gzok3dF_N4 zINf%w1ROrkK<=?$+Z;VPIuyFF=P#tqb|*P!2fF$;c=>ZK|33t|Z)5!U)Ze831M}>? zQm7;k3Y>I8rbMPbW-3I6zn##o%gDQ}{Osv6&`GbGl)%gz>Zr;h<~r%mzei)CF&AjQ9rB*biGT&@>C`rnzke({5b*a{9j*ZK$*>4PDaZrYZ15w+eH3)N~LnB zIy~z=d4Gks;&pibII!G6`VO;*!4EM#cLf0dLYG+kw&fz}SnlI5t;Zm10ry{PE$H+{V@(sYYzZ2d(1EyiQlEWns zzjymUhc;rInD#jrWm?h=MRp6d z2tzXZhKHiD6e13K91*tDyXp$rEFtoP;zr=Zn6|!;Yjq)~DOSuXI=a=LNg$X^siD>p z_NRaZ2<}k-6ZE&h5C09&3Al2mNqHgFBS~^uzsKZJ=-@i^M>Mg1EHd*Jd7WJz>u6ph z4xj9e3is!CZQ1>5cieYHa+hmmhM$KoagPF7|1<(h>5@NRoJ-z*XE_DY)|ZsR#Vq7u zjPM(tEffeJ5K*(v2F)YJ(Ixj-N&_@Mt|;s7H6))*J*Fd5x6mc*vmCus1$n}`)RQ^H z(H3?di0QD1-V9+Sc{MbO9=u!kD7a5MP$ID?WGzP~v9=}R8Ti+J`klcnMeFLg=>&4B zMH*%5&OwAC&vq8et7+-Tx6>_Zs|&wTx)`NI-PcXb5BSwOlEa~9qMbCJ$!w2mPMGcN z9e4^w9^!m%rJh=@fbqV9wb1{!$Myr^d0Uz=U(uu(MKO2t;ZsL^=Rye?yjZRDzA z@f{X)QF-0}AG~Mo)km#-mkFM~UuLBU&pEV4@nDK6!pHA5AINKy$+)JT*#u;<&>mVo z-AxT>DHD(ys3z~Cw8f8dQLfXlQFF#!f78oAh1o3?HOod|a(oaN!*P-AF~;c%y3C@q zHFgRoJ(9ZX;FxE= zM{JD`Ey=hvZ6Zi0|9=<LNG*Lekd$dXgs#B*x%6(|O zEiRU6mGUc?#btZy@Eftd$!hPNPjufdbKpzp;ByK6M#glz!EVGG&0tImuQ1o0FCwQW zKx3P-@6_W4j9GAef~DIkW&O8gmX>a>>YdP7hxQzd=I4bp$A#1{n^dYf@-G&?tkAHv zFfpn?ZVz#jmHCb&JYJ}0@fB#XG8sx2v;Wu~ad1G>Y_S?`~i*@%S4Oun;3s|n(mVJk7On!Midt$WPl8G>^ zE1!T9hJWc^yVyz5?KabE4mNht+y))r$C!a)@s?&6N@q(PD$2|7j&m7kJ>3G@2oshHd{Vj2G zUW{An6#1GzYyHm{dQZ$ixoQ7BNkVBR86v_;_dhk@`BpGk^n0A^BUYN6qxZ=N-(MSZ zM_?@G1G!3rl`e)gN?lll>ha*XaY-`nBnf%_rLrUZwuH$~Lreyq`0O~tEhB&Vg^`u6 zKbPU`@mP8dU;JdaSB@b|yn*Ait`}3iMr$|x57Y^AVYsc>^B zd-|beXqQmrl03}FA}pWFLxS2@b1bn>SX%d3DM+n7OiJI;#3`{$2)nx`bH$T1tk`h? z6Z@@x&n-2neRwJvOjH{`NyQi20FHcyw$z_f>5IS&7)1l;*ulV!-M(%6?AU}LWIlFSJJ?ZvJj`30O$nWtbt_HO^W7Z6 zkt&)ShtqaeSc7m@PKI(u^G{#TeH}9n!~OZiodF{52`hi`v+ zODJf)zaN*D@J?y`>!|!g;8uYRpl&&HV6Sn);2!g|4;2J$b5NkhbJt|CqX}PjaNuC1 zSm~3L^1+54#A^DmE#m!6qtMVbND0R9d4BjsXij%;8s2>>?nFw?T5Qo=M*aL zV1SSO7($Wzion<;dUw;+3ZUl3zS=+-h@_;%b)f@EehP~o#pOwy-n%H}JfB*A+xYyc z!c?wbw%H0U5cIy9UM{3}Ygrpd6P7L&e|x$(lX56|ROop#<`lGR*R_a}Yfua31}hUgx7 zx7Yndcjnku3C?X;g~s;6bPK9Dwd^Z#BrNz;G_!L^E|e7`jj7F17TU}DC7lvztrSLS zhuEu3;!JAH(Kj5t5Yif}w&nKaHYp8_IT{NSgC+)WA$N`-ovcA~#hzQY z9rP$psi;;iL|@Jp`w|_AaD`8ijU45agz9P>)0=i0nA1$iri)8_WXYRlOnP>@0DfiZMdfF1zGsPkru}W!}%f%tCW`&$!1Zr1vTr z6HjP9u`@P#X=tL~p@b=Hx`+L%zicmh-!*)b|~v8EeCXn0>};ZP@X zl=||ey29lvPf#^B<1Cs$TSq)m-H?F%{CZI2pQQ$;`nhEoKtFQ>=;v4eKtD76 zC-gJZKhe)#|3W`UJ~@_I0{*?J)Kwd0SeLQ0@TWs1T$D+Ci`v3}aqzZksP8AS`ZmQN zaw)_HL$7$)2ez{8nx=|WwLG@ACd1Y?pAQv^2@;_wZ3%vs67k!uM55?DgG?vfN<5xR zT$0~7Wsxavr2#IaX+CmX|0;`>t6|Mx`^lm2H!%EvFoV0ufX(o!ZO4gqXDQWM-Q(rL zg5I`)_gQpet+&6;EsgTiJ6W_n%f6wH@MA^haY_Axb^-k`Q6e8*uZ^@;!=NFyuTMzX zA|e$li>M;!mku=`8$Sh*VSi1B0sSBXFe!WoI1d{Q7PmM=|XHgt4iZPS0^tNm(oKhiLa@Fh#iR2N&3b;-QU~vlD64*#q$zE{{O1H0H3C)K)&Y zmbKNUE7MKw-p+wnTe}YC6!O2DsD!uy;4~z&sGngc(X{JP)THrImW6 zbAEQE0?SKy8S%AoQ#z|GCt!MtJhHC%D%IAwSo%xWNs{$Wd%Okk8m* z=vuG*kd$SAi`DPtPAixZ*?U@7KQY`bBs~zHiiv2i=mCxdZGIljePumtl9>O9RI(jZ zmD2LpX1%ebOA~rQUf898E>eu$m&2TP15J;3&()JU0;cMas!O+j?4_O1*u~ApW@)bv zR3fFwd$K5&#cxoBf4aMWe{tPMmH#MdAg#7nWo}_!HN%tFO@zNcJe`Wo;AdP>e3OoR z*kqBfUmEjj_A^w~U_=65*?LC`x7=aNLlExi%_w|)o6V$)=`;(zbGbRSC0*GX#J_#W zAal@vC5Wc?yLzZiq>--ZNC_t=j(IQb&x(0w@R&$pkUs)6d=l4dCZNO?Zc3&5s5i;) zl1*mIF`?6pyMOVIqfl0{Brbw`Ytt%p(e*P;kUmR>B#}LBOTFS5W$&YukOf~M$q95W zzUe9<#*fR5?^Wz!6>&ClM%fe#eiV7U!Z$Q6ui=|UtscWc&7VV_?xf&QSw2+XYe~c^ z(V6kHHB#6d`(}*3b0s&iFXhsQ#b8GSLdV3%HTvFvP@@t5q(+8CYWBZpY;1QW%yT+#1g%mFkt9-_H5_x;}-3zzjmqO)qRDrb5j zS~10oLDs~T&fZ1K-e4%L$f-Xn(MXs2L9Aszp|8p;f0tR3Q5%Y^GnIf^P{-5lhX)6YyN&{ukPNvkhk{3h}uFD&NEIu zxg%x$_J7_5q;i7<`nlQ?;u?lf)tPmWC$`w2C)nw!9L^k;2eTYL!{0B^12E*H>2Wt5 zSEXDrf=W)sTW2cPdk*9ixM3Q8k!5gKRW>s6{t(*ca}i3=xEPr%kmQl=r1k=HT{T%SAI>jJqRtRSPKBA-PGSF zdt-a22K1}R7xtHC!qv^SJ#*w<7tUcHC^+hU0oqr`k{0B3TZA()3V7x~ZK6M8t zF@%p@yw{$-)hwa#QCX*Cg3UqP$pjedS2LD;9UYgpU69d)XAmzFbIHHlk*}@rV-%Ow z?=P`q)(t}Cyg%mdrRyFD)EQ~aXhq`s45u^&DeLvj&xRhkfx0jRRVD}J#}|s8-_h`9 ztMAwJd6xRoBZX^bbgcmU{>*+3IY5n`zfO%Wn0FnQ;VLdnQ?CJNbd4r$Syk|xhvuqV z;VV@;9h$xqtP>oaIb3G6wDD8g%nc3E4SeYWP;$|ZDb=2+6gc$P^ksi7pD6PLyM97i z3LtkpY<1`p^IYK1=X>E*nv7Hg#lMkC(ui(*Ac{q+>!u3jj!|8%=+dld&(VwmuMD8Ti**bb32hQ1xP6(_5)F$`~0q4`P+2{*rVHXUn}^PdYHE;W2cA9PMp*6=aj=%e2C#0vjrLaSJiEmNyH2t&i@J znNTYF_0o~8F|E@r(!WF%?sM_pYJ|OlTS<}-f?0JGIBlg2xWK}%V_)>9rkyCW!OX^<4>Xpu&wf?O6BCV!8_!>D$rsF2>aso-Reo_zrOcp|Yq}Z*H!`uvPK& zdYHrO{id~|8ol??YH$_n%TCsWv-+-;)aiYlWBg~jcvtNMYEYa0b1cD%c;44KlFua9!9L*8nOi)09)hE>#6bj zZxp7I2%eE5(*DfY7*ox8q#}O&pt{s_mL~duwV#>bULT%=phyHPVKc{Y3_SIeB~lMO zgXZ0uS=vCe4$m6E0Ro<3!Yp5BaU&m~TvdfZxuxbHPUN2Z5=xo(`#zWh=A~;DFcqKz zhX3T)0keU6g%Rn%Ntheu;AKgaei*U(=y_&TAX1Ad;5}!B^R372C)IL`NO@Hk{JXu! zx4Uk}^*#J(FTxa)K-uIWX?j-}Ho+;zpD%dDy){^CZXz87M?NBaNFKlH_8A~NXn*=D zzVU+mc(0Usc0CRk@1d4;7r4LE3Y(?H2R@LEIeyXtc!7__?!nt< z>{?jQ#1lgfBQr%B;w;CvVZqN7jZK;>uA#KbPv+*jd?UkxQ-F8tF~G-g&DBz*uioN4 zO#^yE6+GDlW2_ZIZaOMaKG;sh9}46=j`3~b!qx5#B;2KZzlcFj*mvjAfdGWa*A_%pWZtvK`3Dl297MM6;Vc*n-;L zo3IQ7sdm^?1;UY!?@OA@_URUk8U@ACY`q)07HrjT$UY|9NX3IJx+W}wN9D3}xo4Se zogywzUQPX;Kh?+`-7*6b=%jnh^les_h6q1MNIqkloF=nr1A!$A-Kz{K7}!C+MIhd$ zvkgwVdwW*8(aFr_vlu5^tM7LjARiZ<>eB=NQ+7abvivAS)-ZxW7tRhVn0_H29~(PH z=|<%_q?H7go(JM~)-aKt`s~cHX$_jxgwOX%mbX%qp@#CGGU}`2gkUx^%q6o}eWbOX zk4UOLZn>DpZ4B zr(}WBHeA#8>2#?f!ankMG)v*r$>)yU<)@8FKIAVuOiZ+GIKmNTmQ@yN-Le{;k%=ib zp}d4|57PQO}dPBnX_;Uvd=Eqtgvi!bmeQLaj6%C;6@Y@+P%{$P1j=n~L2 z2+47s_!U=KzN-e`JAd{6q7I&#Tw60&-D)EG`0l3)w=Ne=Q}dOc+12F_8{2m$@=_ zGPJpW>YDh--1q0JRdg52)Yv^)a?&qnVWe5dC#*D?1g;ftx0jnXcT>JEuQeq@%ek~t zRBe5I4-Wd#lo}_J3jMc5oo3%=MQ-##f5mBp-Z0ew}E{aMw1arKP(~^rlH4QsU>VOtB+8YrU6>FcQ zu2hNh)(9AJQ;@;-I2oyrkmpx9ys{D@PpoZ!oW5bQyh^uMW|S1NWBEcpZPrp2jMQJN z4>2u_A8;wi4R8!_wjxmUAXQ&kPjBKImq!dh{4BU;rlYWQw*tR>FXruM`gRzy2;VJU z=cB31B8aTtDrj(SN`L!M651jBBX6lin=7f_XpiT?!YuDQY+JUlB)no)pSeea{M*3i zPDj*MBf~~_T7yi~l!*ta6P|XYF4&nl$wSoF-J%pTn_5WxC$T*JL|>F%a+88ikGZdw zZ|5lpz89a?u&$3ep6xXkQXDEEO4nJo6V&Q)$BLq8ZD?U2{~Pt|X3lyQW8j-B{lf8r zWE@!BF0`@mG)i4GX)5?W(dw?r9s_bc6E?R!j21HCm)C^-1~OG$MH~o-^*&W}nS>`g z@X?z(%Rh3HezBX(D~|LMlk3Y(oc0zxv)tJt&IlxkDLBq|6qoO;B|d!29tHw4*VhuAcECL8FgO_cwT5%E&2Lp9J(9eRAkGtb+dPEN7eE|1jSn|<)+cpEgMF|`WG58@(i`J%pR;N44omH z%f@3a-I8*ShcsHYQAvAOQ+(jVa5&M9%ftzyHF|zoZfJDOTDnWFb(85byzVbHHTcp9 z5D;HuHK(ybWqP4a8v7QSeip2bF_9}&h5!7e{>M6KhB*w`jBVDE!jj zQqe%HeG6*YFuCNzdtaqwyTB{z-C=64d@m2(Vy2N4B03lgl)vxgpQ+{zRhEdMemlzi zgu;Os@w0_h{Pue~6}ofoR$ii}`09ZT}x}bo0N*(e~GIwBx_x=%?3lv_%BmyRmSnST z^JFYJkR3-tYG*0$U5|WFeHQ$IMHpSd=|zpG%~hAe4{3T>?X_?i$&izQIk?nGw1aC; zOw7!ywi<2eMTEZ-)V;=rbB-cZX1|+PL=#a9dy)e_#da1*?Ov1FxfNa;AJhiSnhR4)MFvWYGamBHj&FIcnAKgXk&bv>9gr>2x8xHucw7TpPj$rtKBx5Qj$0ScSh92X z2F+>#R9I;89NP=q_!s1#TGV24{rJloI{MLuqgl#IJFop>W&^}LUSBA%uS_Y(=r*V+ zKYr&^=wexNB7cGN9xc`Oj7r*s@QDbklhG&!ORxcYV)%&>BPruMg?0$&cnm$#={B!U z@!13o?~F$_l4~Xm`V$lyx*y;%%)HZ6Wr6c&jfIyV8FYO!$v~dGt!9eMt#Nlq#Z#UZ zp3X^E(kBrBVqy$VH*~0|_Q_TM39pDJ6hAUf9KV)pyDgDHMsl?Iln z$4_Wh=4RPJ%%b z?!pFZfKfCV$mA8&lo)UBP#*jWD0FO-2k$$^uZ&vvoT37`S>#j8Au zDsw#1VPCLeN@y=2AI{w0W?%>uHT(_1Ti_eQYck-q5F#q>SiThDjpMK)Vw-3Zax>Oh z@@o0rIs}m=-f<8p{&O(2@d|X6!c>H^|wfN=dYF5yzANTwTp5*_a3SFsM zhjg8=Cc1UvZ?Fo&C7qY*@C6>f;pw?*cyVx17#Hv`-kKK^ZZ!cEo3_?JdLXxxp7{;GPZ*dL!gKg)am zrQLV|w6@H8*YB05Z%lqZT5_^c)?7mDKpxh6&OUW2rk?Bty0tbxj5A2z@+n}CoJYXS|b{C^ewE`r!QAa6EWv?URwQDxXPeB9WFa*4w)m z^;j3yGezYWd)z0uJfd)OZB6MVr#|exakwzI07*rKP()mOo0C?lEK$1jA!*C{YRaaA z`GLxmFO!S3Q}9J+ldJ?Xrd=gnbleE}~9{e*c{pzm$^$2>PgLXMH-+37X!dIOV|wrD$$ z%J?7BVk6?B%Ww=QFmp~MA#Lu?|5k%}dj;FaaGvLm!~nkH&aZ&4SlEq2*QyF#Y#j+o^@$|(hP|ueNoSj6 zFT30D$OxD@4oz7E(60A5@C}A+$_75_l;#!}R4j@KyoZi%K4T4OhPmuK!3y?D93boW zn>is;l2a7AS`ZORU{8g?C$6xoetmaq(J0%zPCBsS7tG*N%hU5qIm=XwlFA>osz~z6 zJ4Vp*59Mg|J`iFrT!+|*e}&kJavuHv3b9Xk{!55$`FDuz|KCDvnu`L?^SS>NVk3YM z+wkuYJB}8{#6z>XV3Tnb#GV^Kx^0U*ZP${l#92$LV9Tf_Fc7GM*dZ#!p1NUdD|Ws`_ci_sO8~3|54hcM(uS`WTT~HS~k@qNzG82y;j2b=IN~shQ1mq>iWKy$a+T(dki=x>+h3 zyG?P3FKA|2RzsEKd>P?3p=7PU&e`bwdNt3uD?&cY#gaQu*2$Bvks0NM&Ns5wJJ9(; zfBlHW_<7W-XvVf$%bR?Or5^`-`vXGFnMSDLPgG@=e2e>Tp=!IkE^YWpCun5>UQ3m& z%ykBpvEM=qDxI)gf=+q5j)xgw95qolD}lT_gM)_r=sMNTgT~~RfzrGT-hBFN8ZQ6`{yuU^ z15Bs-U4wP>f27*nS{_bgQN!O7%VL#31Twu8P0o=KJ>%c_W=*fXr)*WYN)uY54+!*cn6iH^qcf*9Z4t)nMA~bMT7zPezQ>P*fT9#=RENp(cD5&d zdd9-fgfN4fWu|w*>;3C*au5C4GVILM6>q-4;VS8IxC!4_j{5tV&Mfm>@$VwYE2oir zXomF162^R5kmWz_g9zN+eRVU2<@JW$1wg@zwPSWqsEDN7s z$T_ttJHd1wog%*tGqwk(5ds~JRz(R!&NZulUy>_eej3)WHs zJv9!59o5l`6hripd`IecIoP_665^?;sxlIjs(wg|kiNbcLC-%PWJx^#D6vWGps zUzC2@-?|!k{3EPyji&O%2o^`c#m6K9XS1NKOsMalD_GnMy@{O)eHdBy)#H>j-n&Y0 zsKESp>cS00mWELOQ7Doz>%6NYZV>UxMPV;ilNi%w1pUgOy-dy;BZPYY)zUFB&UvM&JSxyW~EsvO-d*iv;h9;&qZ%fi}hH^^<{ zO~#Gzsw&z1bd9~655Mb&zF4SyaW%`|FDc1V!*VEo!zYHzTQlZ`#|APd?i2!&4LK|B zZ2(KE8RKPoBx?716XvD0B3>4!oyRffMW!vS5gi|%0da$`i?^iWPXm;>s3riE98Q-PuYua3XV(Icit}Q)clgOkT8(<+LMJkr} zrfv+q1X6oE@%!I}T?L-zBZLSYc_QoEL6fA>}$*W%JlMf{UNDLu8a`f`u$W7 zqUkZ$em0_%9Es!mk8=*hg+7Wa|D+9DQd1I}_#6fnS@Y&?i+qxVG626$k)9gv(ncUR zHplPK{M4vRJz?Cq19hbR7}v-O%_!2v5~(m`{_YDFhyV>;EYu48tU4Ada-6R>vnlSi z7pV^hX*7o{G(buXKpH6mGTBvrn*|Ktty%ty5!w5)y&%C_9m4)CAPCK9aZ&P*?Q>%k zgT^1c5?$$?14JQ~UJvC;`2T`XMz!K{CDnouH!kwqFUJOXKvo(A?xW{3t9KtF71i zX9%B~@*^*?LwURr{k87+<=?tv++bAH-F%f{>_f$8m;Y_@48I}Unb8N zrvI8etNf3X=gap_CfH29SoYZBs~ip^*LSKON?Qm3qiyHNKV}_tY3#(y%ix`mW3`dR ztYGr;GoTPkyN39ymjlm2xDf|6v25x7q_t%yO7xu$QVmP54I1+B=!#HDrAqSiSD|8{ zIN-Y*P#7Hee>a)xtk{#CD-r7?t&1C|lV~fO=g`bKVU(TXU|ZOfPPR|yxP0(ANYFzN zWz$0(vaviqnXAF1mU5d#yTOL&y{(m)?%eO8iHSFzZIC{b!*>h*)C-)$p1n>KQR1Gb z)MRLEjK8frd-axkMIUp1UQm|m_!h`CxBBczNFiW>CBD84~dlaT|z3Ti6E zo}si4RFIUYx_2r_3d!FrEJD?iPUoqhh0!s6pc?K{+t8YqGnHMwmX=P#h!Zj$V^2%q zXSWtfmHT`v1DEa!6H9YXDV)7W4^ec@BA{%}ECKJ>w#zO&CodA*K`k>*LmS1X7;9h# zHleYak&-UBRKcwuwRi@}icKVc(s@*ztz+yuJ_Ch%UZ70Zu!~!UM$-T^7Mj)e;!a|k z;6A$86-1Kgl42!qq9hgMpG>Em@j(^(X^J@!?YocwH zsURx$)bR(Ur}d|x%!BYs_sMsKpEV|ey~tR@>)Bi|acD^7KYIbxY-qvW+A~7UY!$mc ziy1yZQ+O%ggVUe_PcJi=m}=?8nwdC-Rrb_g!`sG=jMaI8y9tEBC6z1G>DrOpyAEAP zl6@;?0RD_KOC;Iqf|LP-?vdt zJ}C-am8c6OQSz6Z@tcTRDi%iIgTEd)ngR#--e<8zv8R zYut&U8W?;^c49&&5N9`FP(2)Sn9I!_@T_`PCj;WBk<5#!;@C_Gk)&KqpNAtU@@3+AV|I;~n zERPEw#c=mm<6SXYO7Uf3Q`l1e(P%;YaP&!ftta)gHoYl2Wz3!QUD7Ff9oiLoDGPg! z+P}f>lNyVVdKd6+eaG-i|MJBbX=~W(qpK3I=&9(;_s-2?n)*48ouN2`;%`R%pJnak zOCuyao%FE55{ci1BOjFEvP6SVBpv&V-|ZfLAC0Jh!;UMTuHgZ|cCWebUs-qB@|f1Y zW!-e16>*XW9RlIJ1&Y*!U1qM7p`~^?JIi3@fIN50yQD=1^-MuZvg#10{s@+|@9Q+k z>}Uaxl-a8Vo4zvus09ySrVMq0UcZXC+;#z`B$;eG19=L2A?3SwNW8#!@jBVw+#$}s z?}Sg*dnG%dXk^}gK0!`()9s7K>+A~NgtK=o(Q_L_;GbB$9@`@-1uNcQ9!aWDT`1G@ zPx1HY*0#}}tB#Q=apwG2xUv@dElu%~ix8TwOdH!=1HmeixbEr;`?=HaLH zU*)}`_?Wg%_r%nmz6kxr{+|EE-Frqg*{AjX+QglC`Yq!fl$l+Et5?sGQ+4}OTx1E`Yj?CaTxSx+MB3(+QL`Z zZjI4J#H`Uk8^52%Rd3#g?=nbOQi;g(M~|4(w(D098NAOhv+g`>onBBGYzXtn&cI2m z>CAj_)uXcqM!CR<%)mYsq9$u>WRzWpw6%%aNF3)*B4V(_uF3#lDOTZn~E z@Z&5bI4}P3*Bl@7kmEFaKtji_8wDrKQbyNMwnDT(;acB@lS*6{V3{=`2@}W^%o>`y zoDgT5qt@#-%?ZKM*O>A|mHw^_nS}6I4=q|RT>+PV<@kb1nq&F<@c}{`&iBiiuQf1- z5Is4fn3Hk>+MP0EDLYX1{R^tj*nDOnD%zgs*#t_^B(fFLdQI{7J5h z6T~1JZe*cDBX0*6oBiW#+Yj(rX(f-5>)s-N5t%gh`kL4r8^+i-a45=%%YAvR26iMq zaV)fJsz=eYd}m4*i+s&_Ms4!<+Z}kpo04n$gO-A`Vk#v|m7HFMB*!0Vm8J*@J*On~ z%vRSNca++~D1nFxu%Fubg4KvDS=V9-c@mOPZFD1xm)>!SOF_Bt|^mqd_ z!l5S%Pt|a~hWC}gi{={i9VH_J+ zFpMLOyb#JiFA8MDv^^`8JT+i>Wa5cjlbyz2f0d86v{8BNwN+i_V6E9yRwMVJ1P*I% ztBxdlw#nS(0^@}os^5rsav`x)SrWiPaSz)|H-o*QNX^9;pYBpLak-Kl+iJe2fNCzK zy`L1_Z-UU+7_QWr%#G_Fr9G9LM^_J%$DUK;;@WlaLDZf51)EbuoMVmo>$*~fFMlbl z35Bvp)s+z1cRPE%w^bO5oNy?w*Y|9#HPJ;Ps4Ps5ACUgG(#q={w=$fKZsmhoNb3hX zN5fJP?t{upa$a7Z%jDP(bLF7VoTo@=a}!a{Q{|*XubM}Cg?v(nqMzZ^?Wa8PZWi-& zH)VB&z2h6)oPG6jg@%5H3Ltb_>q1uk5V}PPYE!)AYidg5r0_kRXl^L}_cUDVvw0U2 zB6(ZGa`B*A4=5Y5#C2}+3)av6orWL%&uRG0M;>t>?M8w8hdsOZ;j&$w9MCjgR7|N) zqAmB1D7%%o<0<>^&VTgpKezzIRgyZVXLy&0k5Y9H#cCmp#(KgR)BBo-v3+iwhtvsL zZ?Z>VdV}MYJ%tzsb@vVjL74qB7yb1z#hOa4+*fg`Bu3QN3;=wL&~`Bs`w1ybC&(eg z3pQ(a5W>Etu)xY46Wjt9e-h5%}PImxYdrx)XFw@q4=Vw%5}&3vbVwY?$|DxcEj1 zsg`lqs@u|^hgsQU`L1SL5Neboo!RT9nS?niQDo+VJ1-Cgs*?qosP9?WNhqCAa9WZ} z6Xk3U#j6B8H%sF5Vbj_#dy-)H^ckIA|FUrMt5f7EE4cEgRtd8}sf&Bhafs4<+2N?3 z8<=*e1*f26>sW`I2kPpBS?X@7O!Ot5f0U>s-YqyEOH|vH=A`BUdi>!@$d2S01mA|~ zGx+vS9+JRRhHTRgSLq@~=HF>6|NQ+?B z?$JL8)@U^EFHJ-L@n)q(G_$qFo(4wpW#N}}$7sv3cIa_#9-n~ivqkGSz8$@9ew7Q` zW5tC>lmo(TKg&Jj$g{`@K*`Fe?Dsg@4G>{UJo<>l}w|v-8-B8xyG^KPx8!b!#3N%+g%9*k$_-f__+JSqeV(tzEnm3P5vf_ zhqva$tAmUa{7nMJ^+|!^O}iHtr+5b8%5hJa;Df9V>9C-TI}n}4JPS`;i}_ScY;wC_ zf3~LPu#=0_#imQP!y95`aqC6g7dV;}^R{yGki4i&%WR4rB!CTmr3v3)A3;FBifhhbZvzqh@?E+cw97>-cF{BaQI5VX;yZI zSgQYnsX*Z9?nv}=^U!9CWXIh2gKj2OMVS{5C0}pwlfwEdvoP}%6U$^y=o}h za2*%z{?(A2KzqUErsUJA6Jmeat$OnIPY0~N_iDh*Df9`teN9I7Bh|+4IlJTMf92Zt zgOr?f8)w9!?q8r-moR{H~Putfkk$Y>FjZS&+<+QA<3jC;__H zqGAuzqqRu2_a>#NH5%6uAll^x6EQ_0BE}p+*bS z>fxBeAd53V{ARWy4a=}$Z{*15BPDVSAm+Fz0Gc{%F20>FxOiP?ZJO19JbO(&!l;-P ztMrJm8@wxcOQRP0Xl-_L=v#`LCmoB5c~6^~9v?FEo&=L{@hqoJuf`}^XR6wUlyTMM zvb#*@l2Ju@-GRelQ|VEaV1p?p-mboJm`P~y&}BNZgnoq(7GvQo#u$3Bh5HCg_R zkW_uYI2HBRx;dd0eq}wDoQr7sdd(Sh@7l8(uOd9jGZx~C(VpVuj9(Xx1hpT<=NoxZ z)Yf9HG*o=DrtL{aYn_}fwLE-I*m6^+{B^eIAniJroIADBuvpCp83tiJ>S zliJ+lw`nviBAEk~4xSrqJ2SpnQvX@I>Bi}&T|)FwKS(>8VhG`{q&jEhXf7%9xP5x!a)mx zlrGaP3sd^2>yj;l9Tx?Helm$dtr2cFYH>}CL6_I*E`Q`M|NLDL9Sy7icIKRSogDV& zqKkYinu1)t1t-dUAv$S_NoJ)o)cFnsDj}JDzghDCtYk?3>ZwtpmTidr>q1UlSz|qa z&>0ezPa@i?r$5j8l8q*$kVWIh!Q3Y{2hv%ll$EiVPgq72_g}MsYnB#*fWwa$sRjde zsWFY-g_-=-7y3IBCRo_T8m`Q&?wCP%+U;MaX2K9%-L*{2LAN5^A5*iN=3WJ)6uN&2 zh?;FQ0zA*c|9RE!D#U2BLB>ZytF)Jfh-ps4ZY8eNp7@zuDlWTf5sM{x z-L<-$L1}||jN+4Mnf0){v^~<&lsOrS8H#=Q!$?^V@|xA-$53wS>rcEJaf%WN1?TAk z6*ax}!%w0~fcOo54qaRqE0j9sGIZMzxtXHLd6TQ$cnuTsYRwkL5`jNsJ=;d0CH116 z0xhWp8H%?Tc{W!GUam!i8R?$oD&!4~3EPdt{hTG3>|RCbnC2}Ctbel&^V;qI0McK8!p z^w`LKQp1?SgU=d{p1jyc{t)g)rwbI;JSJ_xmApEaB)`jwabIm75Ei#e!m}FPVl`E0 z6%5ajIJL;*Yto3jb4d3pp=N4aqXhF&UEY0^;NTu<qaa{38#bD>GeMCL`s0=o_wMbGe%G@S~J3!CUZ)H)KEMl zf#uf}BYapMl=psUBa)0md`HOLSMPqKcJVwF1GdrpkwVw8;#lUqI^DCMIuwU`KT~~Wma;1oT^*a4hD6B^YPEs?4Py zfuE1|P}#fs*R|acU7&^-raHJ}+NWt|q`o|+m1S8xi|_2qQrvI%%4@%f(xhg5xtNzj z1$B*4&A?Z1e0gn5biBI9#wUU!q)<=iQq@7hu0D_Rj-KYX zb?2e?ZI4(({Cw}$@Y#sjn+M=AmiYLz3W3;G?nFmzUD;fa&^IP718Mn!(_Lt;xv%b2 zU%p7j*T5#1>9M?@0@lqVEN7*5*QxgECpkOMXi_C6Ua>M^vjxx@h*CC>xYs9!T6~iw zqJ1*lpfa^E6wP&6RmsK!%K4EsLVS76{sN2{hGC>A5>*+KqGB_nc2^$|jXz?zBlt$l z$HA$t)Xsk)2>;^WQfK-`JDq_K8~q#m*z-XNW|>EoB8&a(V2)edUM2~^75&n-(_0;8 zx*KgFfw8U(wJQfRE}rEaWpS{t;AKvloJEy15sUUJ3YOL)%m6y_Ks0*@J}y?lZP5se88{7er%Cqq7L_WuuqS?*4E{ONc_|6 z{261ob$@7e0vKN-sWK!uQDfR7y))C$cqJf-77Vk)4UqDuJ@=p8oa5249Qh;MJc6*M?(T~2 z8wezK7*Axd5zjc$R?SFQTqT7Dh?=`yH^(RdU8U8QWZXN`OP4@S;?E*{U{~092Hw#l zJ%`KQU&>TRE`~z^^z}85>L#t{^3`8)2o%(x!+s*csrnCL=_GCS=`zjvEv1&Dw609R z#}lkcL&f4l!d|!ZlZ`sTSnJF9m!c96q$sKYLb*_+k@a?b?{YZJMo5YMB;PH-DZ+&u zP@yDf`z{WY+SF$z$lA?i?J7lzU)XrgMhX)uxp+e?=sYy0cY%Phuj^%_uIZ~|RK@8) zRLQbKSTQ$bwNiKSW+F?ubFwYnpI#gXo+-It^wLypy!aOA%ngA$t$%+s@lryq4NCVh zc8fnyz&^IKf_)3kyI|)y-Y7Eg{qfD`wLE3uxLA^M^Wi(9l2O1CnYza#8pvHxC5W>QQXa{lmCUv1O$CZ#y%6QlEV>HnmBy8)DM(f_1;`~3&yJI}`T2so$4q><5|NwNxm2|)F6%^9hG ze~@!dZ?_INn}Ui4ovc68{!FDSah}TlP4|9&4s;?)%Xz4FYB4dS-aoqYji)h-G1eP< zn0zoG<)~|YW$_R6*}bEz@HrK|y3jEGPOfOJjatR{MYYgEf$L14&0bv9UoB40>JG$X zo_xPl$U_$u@wdg{lY_VpCE=>K0<^waR>@fivjWL?Alj?%9LT6&b3Ry$8xLo5aI5CG>T1)RLA4w)%WKkr!x9d%8h?iYJCr;W))f@J2mAD z3_ag?wvV47-r}IH4C12tn5x5nlh5Cvaw%$<3o$wreS z?X&s>JRH~BtEY_Y@#1}d^WrmG)0ypNTaD}e^S8bkZj{;+=2ssggs+BxL9^F|cog1K zwPZ;HJ`x+&itJv5(|1@zrnW8B7@RitA(5odp2y6p{t6_|D%5pbc5IX1hmsr_;1O=& ze6VmjlRf*?P22i(y#4k)MS^S1=Qxb&?X3{{OG zEr~Q>y;j5Whi)IN>FYg>$!{j<)OP-2_Qkmgey^7SdUKS}Ebx2RDmw^hG z>a{3*@~hHi+-ovx;>sa#+#h@yX|}xlqf5JgBfahSJ^lmfP4rKsx7)vw-ZxYKf%N`w zG2W)4-(OlD@$dLCDwMpn3O=1_tNqTmpt6q{a&qcOu0iTd9Ca(?X$}kW?}x)o4yN#o zF_reo+bsLan++Ru37ytr2oE0cM~P#%EDRFd=JhfVwS}_3wPb9&iTS@ z5%8O`a19ko&Vp4-l=vkKNU^t)cO|hE-Kn4yrKhbNq@8noU9i5 zWCEh2)kPfTE6_26()6FVjh#{Os~k;dZbsoIp=d3KXn=nB0@z#P7Kk%T#xdvmeWes3 z=cxieo*k+CRBR?itJ_VhXiWscAc^#zTU45PR> z@TFyP&MbvGTA-YaXdOV56wvF_4T{94%5J-^3xsC44M%hq6LN`SA3fC3Xco*W_AH#i z`?MNqZQ5K5Cgx(X>?kI-3$|nxcO&VYU}CKIuS7hFxu?74z>#5|70vnqt}!O!N!q%* zH&6bKWUh$u-T3azlyPF4j|Ww~OB(j*QL4)oTL9`*4jJEBc5c+49hl$CeS$Tc989XM zf{GFPbqTDzMNSmBxJ*Cec~oU7B+OlJV@hqe!imzH`)POCTkMz!k>!L&ib$um@dPF% z4kIKuawBKmS!a7oq^h~HkR}D`S87(I>_>9*f{ zkhEDSLv}9EOr(U_HAx0E@mOo0;_L9rXVM5f$O+pc3=~poObxsZOkb<;Tw)n^V47?y zDZz%K@(OCXBn}saP1q*>`E5#?y$mUwB$#{tIOSN4NeX~__o@Y}GDyF!_kXPS5#o{@ z&ADjP*W>`R@c?gqgf=F|k{hOpq!s5Y!9_&K7srA(2w|Wa0k`o90~11}&neDU$=uM@ zYD7Bum8c}M@ShO-7+CaBgS?(e^ak*QGkGbd-E7nrz-BmKt~SZG$<{?@BQx&%|0avJ z_zzh$@;_zKzEg|;53=a1f+9{lWURdd5y53md}ePQ<};Q$jQO8FEbmPia1035kwU)P zsC`*ib6f&^sY1{BvGv%Tup);<2|Wp;5_T+1Y}ze_P8y}gf5{q-W`#bX;#g$Wq=uu|aHjQS6IONC* zpIiboPKI8Vf0*{~S%3}oZ}thVne|1$>TK(vcHj2~ko{i1Didyha3M*#atR2Vt&;|Q zO6bk7HlEp<{F2H0h*71@7_{-rOHYk zT6!dSq}-K-`qOt<+f2-w&uQW_)Gj2XCU~ZOc7Xl@^@sLd92dSOC>g5=?56l_)FB+K zO2vNLQYL$S#y4M(oinhDLI)O8Pr^W2$raZWpW*iVQ5*Wowxd2?o=9}Eld9J<-KSRe z*+xzkq^0##*XTFYhq6W;1(eS|AM!k~s7_HcT-yz9m>hj5yRtkzDyq9lYp2|-mo8VO zCe=--n^iBrC-9?dtDxGZf_ek-^h!FRLoicL8s;Z%CHru%oX4;db<7V$h4lR?S??76tR$ zgWNh~r@Y64@eQTFMB#JdadVTS0d7N;Mk^nVQ1reD5SqR>p25*WqZp;P`b5T4ZX2Id z(0g4N#Ou7T+QW;qq=?&+A{f@|!3*=LlC7*C)6=8x zdpt(+kKpL|a?EY+ky2idb@Ow0zz;~mh%@0Ttrm2Y$PoVJ*l_=1swFB@`{r{tamZ}e zh;$Z4i_z@9j}zhGkU4{~onK9oI!nX7Ak3xIBoR?aQl9l%EFAm`Yy3g=>cF#QfhgdW z5WD;GX2{m6beh*EO5Kghp=OYHyqgP>i|=&kVrb)upN#&sGB!pw_;#x=?~#J@sOAR# z-hm#yN7dr@8Nu`&mIwjToKSUP7T=Ne#q;ciS64{P)j>(ryWyyZPBhp0v9xR1^j2?o zbl%lr%(O@b#mkZ6jBL(*k(ZA%8YlY{*9jq$k&EMRm$wf~Yv^ycSd8>dhYx)wRJ-Pv zJdxd`{f*34`nbv5;g#+bY6np|l2F9D&th9hC6g<((3Q5YnJrWoj>ocd6=dPv;^9;= zb1OK}pn3p-6?B{5ZpyO6{vDruDO*pOk6;t$U^++$~ z+rUHq$Hx;eo7}s|KF){sgP|z!5qoi+L$MQ6G#5pN!5pEc#G`v!q&;qJn*Gj|dK&8Z zq}pAb$HeU8m(Z?+IZAgpHAO;AB?Vo6k#&?zOZG^~Pr1RyS*_T(YjtcT`GiQX$F_!EJkROzQ^3_p$dO4?f?9t2;54t-1L%sF!id?3hfDx<*k(D$h#cY zU4)1PD0xB+cYloEd_HhW*-MAq^pY4f)_-T9GA#DTuLbah_ox~FYMm__Ukce9E%Wa; z=IS(p-u$7VQ3FiMK{{BTIChr&0Z9Et2ubWw(K_B7yK5WXp3p5)KhCxch1k*se%HH} zA_dAZVS2sOz_%pUe!*rfWXyN%6gu?LM2n}RdKfL*YikXM&qfj~^grmE<&I%}Wp8>6 zMFW>?6hOv2Cs?s$Sa!54NdvO20Z*UhEN&uU)HP0lHsv z8gH)kK^F6hSu8tpc(Lv%YP5OeLtj--Sn(!_-#E(Bnlpb)1yb&Q+`wLnxaF}^iH`YJ1{|J1O5!Kg`fp2PtSchB8U?O-hs0VLGuX$es#FYL-6T*Lr8p1*O~gzdsCBLsl}(WuEeTyc^d&7kX1~ zYscZ&HaXK%IRXEU2%Hpw9P>#;W#u|JB=y|DrZi>3>>aHlrH4);LUpMgdFXzX8z75c zwxJ%@^u%Gt@`+qpB!n|+oH#-58eAR_M~D1Mo(BJXd5E-dawd$|GdIqBF#`>LkF%iU z*KA~!Z!EW#R*j=k609E=^#ZIhknU8k23t45P>zv$NKQ{W8eQD`WHKj>&}A)OOK@d8 z-`1|KrV-CpV~$tkxkIyuh`fT_fa4OsC9b8H2<#%$%VYC1t*w&hT29Xclyzx$%jF(V z{T6A$PMty#s=PI|?_5-{Ea?l`$%rp8F0 zj?RpoaM)t{>~C_<7*QMQ#gqoKyI}yOY*M)5q~$`nNItKyAN+p*$E}lxa3jyOkP0o9R&6t2UWQ@x*<>-&LhpTAQNd0}M}?(+ zY>gRR8(PDf!JnT$gB46RJ@xBC6IZ5$7sF}4zlE#_36vxbzwJ@5S@T2OSaq5hye721 zjMd^z^Gc2nAiRKttcnk5ul4=8R^{YD8S%Cvh>!W@Q;S`^ z;9;f6OobyC%{6xM56_o5kGi@`(pgq!UuXq7NhZ4c=OT&cd7h!5I$m2b$REEVM|#Vw z9tX)58VX`#Fwb-tmE*Z);BN4u#8un9(BO*WZc*KUPI{_=SIqW&f-#abbp#{~IXPml zHx-MAT#9Z5?iD$*cm(QR>P=8g7(LRvb>6&{ky=pxX~QdIh&jg}x)&Nj4C!v8E;)W} z>vNc`sJ7gW-GGpeyemRM8I9Jy(pjp(E zK--(`p={|dX^;%}Z;01&%BOo`kmUk}~}<@wathbFbo6h^a#mLZ)+iaP`3 z{Ynzg9-Kc|n1^Nmh)w3xn|ccB5UA6m&`qn;mONIwZ!Ar=*Uqoif7uR2vfX`9KtzWH zRO~w9Nk1}|ck;BaIT`Z8=)Ck%xBzn-w*3*^FofnR{punim{;OTsFW?KO(cJY<|0Sm zL%>xru#|52u`gprbh^?b`4&Teqpm3J;rRX%HF8d zy(og|%;ZjO+ZaP4j8Lb4cBv0vSKLPtC4BN>4f`3qDVgh7ch&~S(iga0PHNAUyx

    z_Z5)L&SA6pYh{Z@(Av$HTu)c6oF80vm6OZTy%JL zpmqkLBk5O{n`Q9%XMx*9eT^li%3r!`Q5Gl4tTg?Sl+TAWdDtNP-XS9-k~n;=?>o-s0reiXLW5T+1%ZwMi7X`DW)F3542n zUN<;sN&)3RmzhC&H zuuOY@im%!xK>OB3b37Tf7U}WQ;{IBi2mcIc*+$;xYc0HtAaHg`my>SomT!2sJ7iM` ziR8-nl&f;g z4%J|>z9MsJt>Cp>z#?p<*L)jiNsT;!1s52 zVJXCCA3vzOn;tXGQzIRS;5 zjbc#Dwos(IyxZt#{>y|z`iF&XbrwsVJ>W22#3diiBid`tHrCpD=ZIerq0*4|Iffj`;HBZt*G%$FtO0nm9;PSYG~gSC=ymNLgM+;<1$+;s-BoWDk~TX=3ST3%K3-e3;fbC6cg^jt|00Yp z{*y2s`!B+{?Y{}*pnjD;|mTNz2SMi%J|6&?kA&S~dN`{Q3lb-NzH zHvT-ttGPI3R*OO!mZEK%T(|m(ZbMOhue&SA7h|n-&X4r=i*oM(H(ruFyVV#*^{+O* zs-jr#`;eDElp@4qH+B}+=%o5mU`A>*{wGVl?OZv1D&u z`X0TxyZITfkRo7ZNPM)|PUw!8>tIW|nap5=`{X+tAGg!E@=8@Be!1{oAq^Ab5uPnGbRLmP+Fm=eM#wLrfgBJ9^X%PG zred;cp}@{r^J6s`+xw$oGLstd#W=VIQptivnU?;g?C*^OUO_-e9dLRmt~Ox28O%G~ zw&xz$lbGEtwn!uYKzJOdI&s6YlmcNWh$v&irhdlUfsqt8=c|`+ zwdAOtcPpW86pzk?k1F8w273NU>UVQ9cW5y-{KYgqF$$m0jM4b(b*kHPBNwaPqeH<6 z*>SQ|A>mUbS|BYG6E~HRdqfH2J#>&#Z?;<5=2EM#JwxmayvUryjj3cW_8i^PeHp@j z%LxQJBC6=1BGBu@&)$7?5u3X^ZwTIa42L^{rTotC(fL{5bV{Lcc|9XXA1IJlhZ6`N~B~OUWy7!XI&P!%taMH z%sVb&Y<1?6IIAvl2lO7?=8r%P&zgW;^Xno~3ZI!q$Ibj+dbc^-wFe75UN4wD_CPL!Zc`{dNtlW5Unw7RQ^3SqdX?k(k&DkXw~s1mbuzJ?$+inq3qMTnru6D z`B&JVuFn&Tt4(4ShOyZ>LrCbR@-_Ls?bsB4?4|NVrWCWF-Q0$Qs6F0;Fl$XKTrd{* zeXcurq%nZqTg@!M@#TXI2?CWYf0BDv2EyZqFSFG3Ze6Vush@c{w0Q6HLA3c9Au`KUs9&pymgN`{?Dj)f04SCri=f}IfZwAyhdPff+v!S zhYq!$`HEc4K+3GGjipUcJ98@IN=^4z=;4o>+pn)8-z{D)|1=Zrb0ZnJ6nS^C*7Oty zRzMZvq!o9fZC3S0VqTx-YYTF4KICJ5-#Zj@sl}%IJeSnn=*^fR7}?}gPlsC+xDF?K z8O5@;c1rhm-;{gncLQMv@t=K>>ffS(gj+HQhSwjLw}-c9NR=}Rr6MU84~@Tfq)@gZ z^~4xU;q{N?TijM4&~MSfQG# zTm6KdcKd)*Oy{W{aZ6II=NpQf6tagcl3H&hPLA6k?fV2lIPHlnP&gS;*x~qOeYavq z5=o}sc#T-4vS;wVJcG>lIPLJ6z7jMwroB1yuxg=vvQN~bAYl8nXp?;$6;3>xtmi%1 zYU#W{*Oiz5w6(e0mSA!M{SY zmwiZ~#zj9prNrs>!rshs>x!sE632ffin=}sr8FuqRxdjut}NC1hc)p^fauo%`k4uv z$CAo#r83_YLV%XZRV4w4D36;~?9t)=yXN4Ihuzk~p^3QZ<4{39xwzhb^rT)oROt<2 zX0Xt^%DY1z#H0SYA?YQ8q^1h^4Va%avbZg4aznAu5|zr#5`)lc@r|amJWu-qh365G zLvi1vL*psbLs$DSGVEhYxGM`YZ7z{*9>*_e zWXyfz-t7*+8E>8n+~xbBM#!8fBwU%@y&LhJM~jIIVqs&xCRut^j-|Z%S=AfY16O|3 z#}+(4vI-HX6|hlr1YUci*LQG>oT@HNK*}iqG=`hXD;Iv1c%^%DC$k|h9q=lcoZp{^ ztG&+7(R{N;BhfI<&UI~VZO$b#3x_~o+PSg>|7bHkiaoCi0yxdAY9UH8d1_eB(BuSlA9YM#fK4`k;N(M?YJ_?n=Uv?{R(tj`f4V@-a8B zFZz;oy)?o%BO?9HmheA>)(((#&$0r0=>er#me%7F^F4{RJZrPpBWNpNZ+yxm?Eg+x zjQ~{DO@FJZ!vtC~G9LfgH1pOWDXwAAr^D0G1{YOObI#HV{y2AR=E&7yvL6Pv%O6-p zprXp_+mC_LcmHe;J=+{4BwvvZrVfa(`R?;w$gS5nuNmPA_YCOPqHt+S=ce1$o_aUM z5oDi-?9>`nNX3NXU5K5`)0`V!U;-|YGcTARY4R?*j^$*85ArvPW+bpLgR-q#k>k`) z01SuetMPcjAmNrr*2GEbe6Gm{UcVUMr@G~tG>KcfFy5lRa#V3$uz@8Q^gF~ZuduYE zW|R}M_rJ14rP;(f3WkLyWwREKB2}!X$JoBY+j_+2+%)-tW_NQd$1yuZ*p+ii4$E?{ z$M{|2o^Hd-5;m-Pgp>_(sh}!lc6CWnit4^#xLHcMl#o4ik5{rN>Z}?o-bdmgV?m?B z=ZYq(8}{KVw5iwsnj&Tpmj+Oj@I(b+O^pf)?71LvBH((zY$II%QE^aqqJq%1V6@cb zVGW;)X@K*fn6K|26zv`%))pEuaOY7w@^U;p3$0kAEt2Z5&hWKiOh%|>drbFo7@r)2 zzrtSC+*mvXw8V3)YJj3N(pOzQR(3oCOjAdsPLn^h6j@(#Vwd$ z{D}Tc*|A>LBn!|xa5WWEP|gLT9e~Y|xR#oUiEBO8#JN->Xm3icP6FQ|T7vd!(ac$Jo z9?8L&$*FlG>*zEpVd6C!Y{M!Ms=mEZjc2Z=f)d@K9a}+GZ|tK*#2;pLY~nZbcBv6_ zv>mTuQM>6{d`?z#dOrjpCA4%GEH&oqM81T$FeXg>-XEWJ?vH+#!SPqT#2dgg-9B5_ z6+tbO40R4?Hza}nfGd0|`x{RV`qgW2Jx1|QJh}L$&0l?Of}(vKcBLG@Z9)4JCt?`U zg-lWhHIWO%F***0{#$1~_dEZO&RRTcl*!zQqMS|ZV<7QO+~g3C!;n@-1@(%}^@~OY z?+)915ewMQXDivsJfzDwwq}oxL*yu%$V&Wvh25;1b~#u&Je6u()nR0N%&c_7!Q)%5 zrTBDx%;m%iMtB)L&e{1j^~=_( zCYzED(T_ax(scG7K^#6?e1<{Wck8t4Z7c8FoK4GK3g5K-NV4Y@F!()?-TfWDa_zKD zlpNIKNY#FJh3fPCa$wnJcw%UG*KZ)}IJ*sAknsp7RsKzzCP8BlM|S?=RR2SZwowk9 z;LcwC8*SbT7UA=_i=4vz6L!!8Q~Tf!X6w{5$vMASoU?d%ZaGC@DKA>O%rU#(^~Ljb4E=l5%v{5PXpM0 znUo*0H-vP)QjD9|>uBygh&t^d+AE}dl^_r_@`$wCbAS1fEP7hZ`p0*3M(G_o$#b{S)a3^K{G(LTTe6N=zpnpbG?vfe85gG!HD+;QcU{o zDWX*Aex7C^AgWC6;}9b%bB=!;`~xj0sCw(VjUARYVq722CX0*OdvO@c@Sc-0H>tY9 zbR`NMeyktWLS)vy(wUrF7&^#z`#j`%81hAJjW@zW*>vOiOX}CPWKc6r4y+_AYXpRS z{r{)&w^JSJ@IyaSX7xGMB!W-LwR;R2lI*6Z$lWkR+Ne_sp65=w_&5%8PbQb_C8;#3 zcSgv;M zQ16nk+2G82TMc<<#Jkh#^-b`&K?}i$G-cE2##Fan=Rq0GK_VjNbjk&GQcY)Az{=C% z$|`8o^6oh5J3ALE3!M@8TSntM|$Kz2^Xc$*;3B=L&g*U47qZ(6s6~WJ&q<{L&EZ zgo>ny8hCRE?|rWm3zooOHZW!7qhop!x?{!mWFjmxiFT?6Ss zkvAW~|G-@NqC~obVzN_5BWW!N*6noJ>yI(h{KE3w_vuQqLu&pnB0)w0i^Wf1qK1Wg zNSBOu)cWzE8wr66bxddtXFjza*Rj>eI*81!vNy{|S8DwESS=cC;vH>#^g_3fD>2MI zu_Tr5{dnVe+SLaW50~2V2cn$j@oYtc0))E_`PR#9_Me)jt)D(RqJ(F*-23G5Mv^n& zX!FIITk&i$IGysPiybSqNixrTs!KOTI(K{0e9;8|PPnQiVmZUe`H-yUf4HjrM+QFXu^uy^u&a3tar8w5<^seSr%TjWp zF14p&T|oV~xOXh`&2sVsGxewGcXxjJQUvT7{ZEcMP>oyu>cV zj4Nh#!a}Vm$5wPTV;COf=}^9Vy(A2&C(e<&LkN!Pt)H={W|o)Yy5M6w>)m)9Zw4|K zZb2vjyz}Dn3W|6(I`@+&^osP@73T<&*Wg2Nws6>kyfb68Nxd#*DPhqcNZ8k>CrB`vSh* z@tjd%I3LHxitV_wn*2QDL0a&%r{L1~v9=7DPno0G3xm(?McVVrjEL4Vq3HCnJ?3!h zFC8NZ67i?>g>QX32$vjYT)W`;d6g7m`6>dxO6*&a^5K5wHB3ZSl za&k0f?!20RT|cu7CU zy2aUiLX_^ab?l6>?)wG1vexY>>UQcC1CqhIiG;yXIW9MJhtMvDn2r9k)UYJ&)(s0^ z+J|4+Di(V=ff<1$#h-&KM({V*|1aX+E3B#YUEg&&Z76~Qg7lt% zQiRZ3L}~~{L6MI1-g}=)H}ud#i}b4WCQa#q5IWM4(2F2dN`O6Z&bij_zxLXDAMWeQ zA=fwv8RHw@_q@-2bJ&k$w~pMcC*zeN68G<+#&(VV;>gyBVeMXFj0X-vU6g8$e2_jA zXEJG`Nz_dW$+yjyGQmOm&}NG@i(FwZIYY>m&|GPNK-?sT3*aug^MP!L7Gw{2H*3yo8 zbV4Iuk{$ulJ@l_)JL$J#`#k5hKVLPU9Q=JWZRaaL z&Inz=3)Sz5B#K?@G0y_68hOBTJtJ<8-z8~d&l+w=o(lAL#@W?7&4tY!8515pc0|+QfU}ofeF1cOUXfV4XhCr|IGL$cFU0qQi9(@c~AyJvCef zz;p0ErBAJgkkUEOE2sXlbwxb9P5qN%oy7hCKhYG`LRZ+|8+dM|)!ud)9fND{n^$uk z;$f*Xya0ZH7kZTUXSErVCRr=sX6TCpm|@kxzE!BE?k;&5_m16rzCjaP4i$sja%!lP zWMv7P0*Mh3Ck|`kK67$z_Rxx&cBXC~C8|O>yBBP_7FLx(jdd`VF~BwvgeQufv}BS5 zM4*Q=LiK{}&v^OUQVSAl3|+}}t^0&uDh9`48G9x^eiV1jDib?ET0zU>Qu@eD7I|MT z+!+5HF9XXBH)*vcZ$x?01d1vyPSP5WE~;0~aQ3Aa7-4X&t!5{Spwwg%ybI{`{eob> zt;x`PcswS~_S+oOMyAV;_F8U1Ee@;wtj2wOzWM41n0Mm1J{cl|F$91c9n)`7{xPDX zhIQ=CxGACBZ!zqrL*~GIa3@FE$B{|I?Q$e45|$OrAppYUGMW~JMZ9o4vY6gy_gR!e ziGu^Sq`v+{8AGE(&jn^4VJ zjm6CygYqE%>_p8iMLqRTZ|XV=N`%hyfysuOJ5yJxW80Xb#F8cvBTPcZv&vE+JM|uT zs|-615aKoE-DsiV54_gPkKQqdkKcPe$jjEK4tt*n3^)QI`2Qi@M*fy=Z~wP+`{t!| zJM@1_wHb6>8p#rnsxV#g!pGOzuaP?>(L&Gput4Mz&j8w2bB3FW;I4M&NOy zyFeKQdvBL3*6;#)(@=3YDm98+pU&N09>b7V)9}OY3H){R?p|(lv99{#sNVF6!9~1m*WI;Ec6>m2P=1K{wc<)uGO5n^%5oRr z1e7$rUu zOn*%Aqm)=j3rY{xr_{LUR_ra#?{2@Ed)0oO4eeL)IE5_F6wy+-99GGM@5@OcEqlWD z>dl={gRnf_ufY>O;D65owqGJJdr}Jvj`Q+N;72#3G~sn3ruNZHm5MRJTRy%q+L69- zd$gfvdJn~QL=(MY9`~)hMSmXQTCP07VAsQkB-y&7}mdv1CxGmUAyDAI;LKIW=N+Y*FKgKU?sMMh=* zYNHdm;Z?>Zo~-kPdVxRx5=p|~bDy_=uDhkwC^LW(p&D+(GU70sPgc(E@nV|dVC_Tb z{_I7%p5agD^v_nJ;xhwA0B1GK2)4U8!XG*Qb;)HG*7M-(nQZ^eHCLF7nCM05ufEg^ z$IO#d(c%<5BMz?Nx#&NrwIwHxkk)R$*VGk5TDJ3(=^O`Jo>i%Vy0tU@nUY^E2plW- z^0OLy;vUXg5DM%2(=9X)kSULyWY-n5S;_jT+q@E1L+{)6UzWwiDzSqAJ>eV_TDu&) zSQLQF6s5jIuOB)bKJ|Wfviv0!^d+K^sumn&{=JYW=RO;QhlrOz^~A8a?xOd`J}F)*?OkGbcjA#CRgoW8oEYH z#c!pz?LSIykKan~;eV9gZH;IDD!o$yrMKaKD!mV@iMI7Gz&x&~aH|CaPP%}}vN^jhtP)SYW6B8;A9?A9~ z?p-6MnkC}hALORR z{nba^1q8igq$+lMqNImLjd0;*Gp0jXo|ZFgYHh7S!6b#%J3_C|EQ=DWB-pr=7B!GA z$V3++w6b5ErLk3+%0L~%doUl9xt3;uN>ZHq@QY51KaAXKEQ_~nk1UNWZ7`j!8E*~a zpc7&OdU1boapstENZSbH41`d8a`f6Qo4c~B%@upmJ_b&e(Bz(IUeR48(4Wd~e_mA4 z7ucN0?AC2OC51~1ON1bf1x}sq{`t>|cYHI#MHG~g++WGFz<8m0{GAObj1!<-mcL@f1L`q{C zP>xmQUJ*7(Kb5`vdYNmDrMcV;Q-hzPWF3HmjAV2lz2(-VTkTK#V<->B3g@Ma9nY)I zIm)f_?hfqD`A85(%koqmA3KMrG_DErJIAuJPgPsPtDNO6@kZuA_whv_HSo%(3ZnFj zojplGO;!z1a$*lqx7f4Hs@YsJkJ{LG4B(pYHE)#Ejpc@;Xo8c|sE0iAo(_HLFuG5k zIL@nNt@oM3I$_0>;NU(+`~%EAC2%60lf{@5BKM|?`&B^Bf0EHpyW?Y#>TiPsCTuQ! z-+hCsPnQATw+!I>mi|xQHww?(#p9RV40Q?H2cxD4=7i)d_KvPIRal=*#?g+FP@?+J zx2gov%3UnadS`0WiF*S0^<7SSLJ#>H&fo!@{8}EpU#i*K{mLBcoqOQoIi0;2)6o_$ zAD9-&I64Aq-U3Mp@1&GGXfx=csQjhy?v_P-SoE9U_Dc|METH0(S zpkz1&Jr^s{DW5u9kV-V&796vyB6jUw;7o@NF3G*d*E3X?)$qvZDVH`4L*+iLp?;f; z6Oh4cVI`wq4nVVA?GQv1Lk*oFk|-4rL(>YfsUy*&$YUdcF$q-3QL5+_%oWOV6zVK> zxp7Q#+PousRnwk{Kgqda5 zzml2ZIrAqiI*J(=ugJN`^Nf6<#|{3V8^h}v{}gYwZFQi_p!7^0B77FlvTI-4)bVhL zu1O&@&I0tBijn?ZaGo+$Vb%lye#^LT$upT{PpJ@0vu>W(HN0cAuvAp0T93 z;2?oc1CaxQH40q0N*%?1{uP%}R$0JFBmqml0}1scJhWeN0J+Yx?wHIWgj0U4XWS3B zWk|&;3VZ{_yBA@YwMbPSyiFU{sbSprEw)%E*;&f)Kl*ET?{o86ukYwiJs1s6nQm6hISDMpLpV7DtjI8G67L$Ee(5oJXyS^@`TY;% zKL6AfU}w}%icD~t660N?l9b$}h7+Ng+DQD5uJ{S4R!Nw6ar2XlTlg5Sr?nAG@7*iw;%IEwj!7#%r8pnue>Vkj(C!5Bz0l#H9x4#6oY;$Y+t{})d_S8FqqgkouY5*dO4WjVUO`;_&|79>G!#8{+>+4$4KY=bx>7p_oprDJY!|pKfvk^kQ06mwGY( zc`J*{G~I;w6fhjF0z>TFtLgldU%ijHiZOPd2uOl4!TL?rv0)P1DS5ac!xoK3PLD zvLa~0NOFm<99ZU;ZGiUp?7!`C1gt30UMWj}GN>o;&DtySwRQR1?x9#ge;WJu7V+KM zdwSEjkcXK^Mvv?q&fXaF@eA!xAvfEbpR+{6ay>bcgoCNhp8aQRLprQD$e)V zCJr#Dd><02kt^`hu9!FqX-`fxv*n1Dg=cbMX6&6QpFP_7(80)I4e2##wd1eC^y+N0 z$-jK*5G`h%$o}E^QT?)t4f~)->dSQRDNf{Fwd}Fwpx^}Yq@y@ZOX={$n~{gjZDn5Y zWzvs2nQC_N2@Zu5M*GJ=6ssD5lynx)ax1 zBChtBkFPxk8kd$#6~Dt-leWCMI|iQ(P@Lz6)p&VuqNwatrcb`GyObU;4=o-~t2Py^ z=#S-MN+H{8l~T{K%=UL7U8LOiYi*4Za|Z{6CUqAa>=wXnCEl9xdXX1Y8a_+h;s?zS zyBf1qh%-J{?Hjt9=i4LstYVAw=cMWffd9NWe2Zlz^(`XVZYJI~`}#pbjfej#PDu?H zczj$95)(AnEGRV%vb_J%%y()xu7sWTB3PXzD0gQo{f+Z$UpXW8%GMFCM-jpKb~8TD zUpt2fZzB>VYo0~+^Gp%%JMfTOI7Q)&&8j@JXuqsTK4_uj#Y{OT$peWU03Ju|$xMA# ze5{U$JorHIW69ahn_Ey5Kc&<6f=X#OPYIu=Y827P<`WTjg1Ca9w8rS`fI#;_bc2=|xTn{QAC=q#B_#QeT|2|W4B#)jOV3Arw#hXTHaf`I#KpGHj8~b4eC+5Bt9na4f{>tLv-5;Yp!$+1r7Jh`oTR5z4OYh>TCuObz_m}zJx|cPf6Z-Gg{6G#C3H(XM;!~H2q6w{& zoZoG6V*q(>aUPo`y{^0#yapq%s2(`Hk4XV$Kx6}T72XtH_qH%jY63&o+G`HD2ncG5 zGt}c2J1p;?2AJ)NqsSZLEk|#nFGi2fp1GhW4CNiKuw(ILB3uNloJLILn*AnPvHw-l z#Au{x??4>I=6P`apU3sjZM>=WJ@}iC!2sr*C22z$`Wc^qapM2F`A~Ax?;b00b z{2&xMY-vZp^m{}^cq%Iu0no>Rsgz9w$o+lgTq3jRO4Rr2GoY64uK4M-_Y+Cc1(y2t zfcXrsgJvsLvzLc@!r&xjp284;e3oEl_m1$~8ZjrO;(1chl+z!?w2!5wIp;nv(#DpV z`Kt6#@rxaWEHmBft(Bf1d6MuBD^U<>_S`z8{)AbbI3Pxwc*)%5@NL&?o=s1^zw~dq ztfVp0e>>j6#IVCMz~{XVpMuYJGvdJY7@1_8$Z-9 zD9Q@C#;zko>iHo+mNwkTTt2DZAtFy>SXxp%aF3x&P9?3sXy<11J|sRD7)Vy|<*Q$} zMfs$5k6L1hNd|ZU8EQ26t26XPyWxZfEM$Yd&C)u`U}>Zf zmi9VTWJTbxmGSKPzRaLncW#e{p{e`scH$nnPo`|xY0w(&@|m}ks%P^8>Gq4eq%_6z zI|Jd-npyZ1Do*-7dYxaLnBk@cNyMA}i@K`8-ymYLY$yAJW`&wYhT)q^!w@>@(5@(#sME-bzh zwqQ=!%fR|XCh~**QF}*S1?RB$#hjnJ)ru@yJ2Mt{BhQR+tzj;&=y@e-LehkPolX2w zwcQ*>(S1zo>P-2JwU^i)_HnU)ICJf@vgFsZPvOfERL=eDH%Sft$_>;?J`EX7BfrSs zW==S!29s>31WuP*1pPWSH<&HNUOb$q)5%Zt0V{;IGA@H&1|aA??+oX9r)17M*@7_zS*$ssGN)yDI*-{#$$RnRQXilX|-d zull`0hkxYXNEe1kuhQ9=aR(f+`|==FXvUipykrSvAXP)g@W4R`Jxv8q4s_w(^shB| z%ZBj8(WZLsxM-@kd9E2<s_F7?(c6h*8gM^}Vbhmuh*ot_c z-!IX{bD3Ih+Fa_IQfc5Q%pmS_UB8N%zL0Z6V4~#+F+o_xZX2VlM*2M zlW>$edL$fdBc!>Id1?PLRC9FLD4u+!ClkKlHH;% z(ICgXn?Sx#k~k7i`NB}h+8r)_E>Fhg9By(e(YYnl3|8~cXD5hsxUIIZ+uKgMCl1bPSG!F4k8zx7&feVz7ncee_r^o7jYa9dMq7+6k(x4ak} ziK|S?vE<4zln^gLs1E30d@!IZNuE49*)opshSSs$Ob$vrB_^za4QXTVkY3#4MQlII`$jT(RCoYOF z8EK}tqVVXTZTLhAu=V1x6pQ*2clhm8BUHov)p z$Q9APV!uNDa9)=&Y^_ZPbSR^%Enn};^|Dd9JIBh9QTdHoo{#CSr6p%`1D=vV0rBHF znj2-kgK@UXlT}0i~%n8KvK(rA-x>w^)by5E1|4 z4e;Y7f*hI>`V$M-*CSz*5Q8=Pi}oC{0QLWmeBA1HK919${_lL;D(UZheE7fe@%jHX zAGfdB8Ty@%%l4^QRj~;_sz>xWC3H=c&83BTEb%%gc26WqsY_@MPs)~U)#a{}5)S6B ze1A<$m}P1a_+EQ`=jg$+#_+wVFfL=2zC?<jcMdX3LuZsf(@r8d2;%xsG#G5RyZ8&utkL=QZXh$lV z3dAJX5TMaFU7jX2`JCVko(LYVU=yYD=w_`>W>jqsJ4d((m*7B3`F86 zBhqxo9x{@E4SB_{JVNjLJ*dsqB-lhpMdpC5XX-(nlBvI*E7F4QjwEDxB}pVDZ}6q* zD>WXOl&PJ;3FJj9k&7nX^3CaY_dN%9?D^O3cjXG5w(qE`M%V!SjNLx@p9tUUaYs(E zF1P5cI+dF5)^|_)ia+zR(75^wwLc%JN}pnN*G*i|_P(u@Dbsg|;x&^e;$jIqs+~~J z$UyQZDO&aFxBZb0-VbyAQ`^{ER~yw%l&(@i4l=FgNzww54wZk^S@&nzj(=yC0_}ed zx>2_voVQ%Jdy~Gtm-NrJ+2FB?KRTCn3)*==u}8~K*No`GA3u?*gqdFzV}eqR>7{A8 zg~euwGWtHl(DSoKb3{0NA79ZwpOmxNO|7a-CI{N$O+!vtLf}&WmW> zw4e7b1SKI3DVE{-cwGD-PpCBhTth9&LyFx z^xT(lL=2bs!vHLeCw}G_IXJ>Lcg;nsNNT~z-i41uC|IMn`%nUvv5I(LD6}lNhdL&R zge4Ffsj?pHmbQxW=C}$xILcXhf0X{q6gkoq<5DE!Oq|WGnl&EvjTL)_yf6iVaT_2Q zH@*zU^?wKBKS0Nx!m3mC%M0I_&s*7^;0Tg$zTH^k{GE%>0lBz=;-?dGkKc9iw%>K} z{PP}#%epv}`aI`Qd6lOpiLG3!J^yE z{)0uIJ?{ITSoEgOROK+`*Fxli(xeT#k2*{wzSuj`@Z8r2WlZP)Hhx8(N)tMT7rF|r zRFHpDcpoYtI@(Ttw(Q^ zF~>z+*c-j^%Y?jyy%)zL>T2mML(NET82OM~vNL38G50zA(NbzV-Q5n8hxG63%@dn~ z5MM`_)GLMF7X8Y2G)1Q%P<1VSgXjYEuAML!f@n;z;6^;TK{Q_0xfo1s(`Rm-l~ncY z&U^oHDI5LxIIYCQl7Y7Igz! z`;!uTir@@UFtRw2!kEQ;;SJX!nbOcef!0e;9l^T@rKy+jn$c{fM`uT4G1rVflIjs_ z_a8OnIqgOtkBpPr{n$H0rPMVAf$eXseLc--S^&FQ;{?*(Jti`PSTBdREAqi)$u$+nWznpvwDDe-#eW?kIi~X*BQupP zEDe0of;Q5KW8aFSvwkZ@{_~2Z4muMxrG2f40Tzq3NO?r6r()lG?@Uu&xJ1k=I{+f* zkP}EFejE>+q3C(LrLvU<9|k6B;z92G=RywZ@xK%XTLiGG(R{G@3b%4?fE%ll6;Z=d z8O+gPVUk&(fqNv$IkR}uQVYv)<`?6(3)H%#8vK>Yce|g0Le>U#6UU~n0 zqT@)uSEC2nN%JAGUtYRMjnzWFd*#!Xn7Bc8uXTQ1ykS9m-xfte4LpHJ0m^|Hf~I)P zm|Nf-tcO7$kAgXv{j&^-f^)^c?cd(d|F(bI{5X<3+i4u#()MN+97X?A9#22Xx-5^c zg@!l&M{e%F%*aWTGp#M5mIpooHs&{nym3c33ZtsZxea|`mmBDa7VcjIhrk*4Wo$0U zdtGpc?Y!&^Sh|JH3FdFp4Ry-8qIYcG0Y2{0BS{%&fTQlDMObp?CM0l^7<>*auj2g?Eq1fvn4}EtSUmv*swASLK(x8(A<2C0DVc-~3me;L51{)Yh^3c%7+f!rK@2}@6L&}WHaHZ)mGP4xBo zI{ILD>4rq|V|w3ea=)JkebUmA8U2e5Wb4!={^aqWttffglIsN-#1IYlif0!&X8%%j z#pN6`dA3KhH=r6cIN4r9MOGARl%q7AZ|az&hpWAdJ(+L*(d7BOWseO9f!GilO{`V% z7L?F3fW)Jg{H@g@CZ-7n&UxY4;pED2|B+m1)qrvCbYJq)aR&v8NtYyPfBM!&)wf#9Y>2M zM|oM{;QeZ_e$4FsCQR{@h3;aBf{)Ch&ex^LmWQpJwv+xn3m6uUm4uOto`{NyoA3cT|qOV`$r-6@O5QG zjS*Ww8%|Niv9%tuJp84@YUXm=Ut=i7jj>xUBHru~`WL5u)qhN70B7~_R0dMH&8>2# zpi;CGqrLMhUDT*JJUR+GcKYIU+mz13-09)4Iacp}0A8gW1}7|k!T0C24x74VUgQaQ z9l*TOG7k*nxr{nTx@HbuZTR~qY<;17}BrDJJ74*dQ9-GAqQ#n zr%D=VLZJV*#IuP-{RU13rHR~tY_p}EK)@Fcjk$-Kz*IgG#mc|o3U_!MG93!ocQuCQMmdRzsFVsb@3nJ!;`QY;Ld-DpX~fx<~l# zmvI&m-T#RXV^9&)G~AB!B-p89jZ4N4!ttoOl%&u|H-zfX$c>T2AGa>$Se%iG_W1W* zLvc=39+FiFp=uze=8(pgf{eO^3j&8WSS`N4;Y2#WS*NEzYNP2%c`|i*fi7$8-ZcZ%!7CbDrH=mZ>g_nXcHvQ4KOa{6)L7N}_Ry zyU-#gL3$M#W#Fuct-(r&3y$$V;@iX=k%`L(c2rtH8puGM)JhQ$(_XOMD`?>ws_rC5 zKYq5VF^ACDUh<^=6_9@GR8sX8KoD0E2G%Zz)Suzn3R04^f zR!c2!--Nbve;oTVBFuvtuaI-1H03VW=K1y|g7b?(@;$yM$6^y@^j)XTxRlJZ z9BM0_GbZ&x(xEn%vW3JV=uqE89!GEX(k=Ji&LBV2e|6&3n(45!WlJ#AoOCI9@KWkEH9Cp#^i^XMt~JXG7u zoXTyX&%m#t2U#2vPvXBsR2Kit(jwb+II6j?Vm~ZX9ua!<5lsU{uszPOpEV$xMZLZ( zoT~zbb3$a5zy+z^@#vM7hgS$SOqItEq#FsH%!^5+eF>E_DU%^$e;INFVHF=f|8@q2 zfrCZuNV}i2kVo$^sBI$Bb1hB|_#>4681qy#^3{veZ*ttHE=7NaK}(Zf?yCSW^_(|< zC+1r&w^Y8#kiQv}juV7}cc-g&gqQVohDCs?xiI7wkeBnx=dm9>^H=@o<5&c_9qrkK z3@SpkQ1cF^W`Fi@Z<_EHoo-3i*|9(6;s)zCnkya ztH+Iwfbge_;RueOx7>R7?Xe>&ridQ;ebBN$GKtzzAaW23e}!Wig52VqQ(Ab?(R z@nv71FLe1z%taK!c{}z8Cs8vbvt6VttkZRE+I?gZeUj|4%!65yJVi0>a!(by_?O0c z-f8bg$f!mFRyYMRaGjt@f~ZB~-mMCe*VOQJjsSeDqR0Bf!J}1<^_wrFka}5jDB?X2 zg+|xJ9Hp!5G{OscCxr`8?%?U_U?V8`Z9F>Blzj)}_ z93-Rv-14oFXVqFsSk~3h-$_D)E3-6c`4d0O9E;DPc>_du@3T>XR5el5^v)v$tP|Ov z4krbaZQzSM(KMSFse&)r91QQO1qE*%&=bi;Emwt|H+;EeiZ|h88zA(d(j~pdeMJOg z@lCv{M|^RU?KN+g?Ny~}=dXRalbiJ?Yxo#r6r40}vyrup=AzwYdRfi?7L+hu?;^EI zSmFK^zz^+R_4QAa6%)^Qy7kyD4M=yZh0q(#GM|#_Jd;jRvmWc@FEga8Iwc33n^V4j z)|ys*wtsJ<*fws_U-V@gmX#`2Ted;gVeH9ut&rgq>aQJ~Y_fMxTRv7EMoO}lm-k?! zfo#0i)}I`BW$cd7hN&BVT{%e5kP$3R_`DiW`!Y{BeSXzbyj5;tsgh1rt`wqsc+El8 zM+bC1Qusb3Vk_NA82Ked1ZI8PF|6EU_0HpFTL;PX^db7v&I=`LWOmL4TQe{HPd&KC-+FMoyU;&+@Qs_l z_24alo$N4}%u5*%kk&VHHm*`ViZ-L|>S1&PCg7oZ;3hWf<1Sep+*_!z27vDBH|a{n}>V1PS2H4m5>N; z-cFI4A2i{eFf9+BSO}y~3hRD+`bi~6r?t;JmmOsX%ZzlmCaD9TeYy6L^J9n*?MAS9 zJi9g#y6UCf5~+V(&I4~7kx3nasm2Db(9!nS0#$6rdXVQF#=P-iy5ynif_CY=X}*72 zxsaHriU|J|K4GaX1d*vqW@RDku9{rKiNCM|R7>;P2yw(KHu0 z-TKg7QFi;s%^$*p^LaXkk3g2wBESm*4vEpH`3lTlw~1)sl<6ROzyZ=w5?8lybRJO-x1IGTZ%W zoQNcIfGlp$zlO8SHe$hP5qX$EE=|jwE9-R&7Noii4aoAaYNH>wXPM zy|=W_=aQ*yiK!VIilKAHSKuohct&3= zZp(!yG-)S_=yN8T>5>6^a>Pn{&}aA0=cPZCo69T7Xe&b}xnv{QMQBRB$y;`!m7ln! zV()b%lA8utw1RjF-JWLuPzmoA7PrZWX!!{F2`pahInRU=#iu>>6Pt&X9021?QlkHh zA&Pg49gwQfYv)=PeaoYJBS(<|EdOxV*Dv)e|G`~{{g#J!v=4XoUnB z;X_NxlZ(quIP^9-U8kbVotlS7D(u;-3K=B^PhZ zt3p2S=b0xLGb(BQn4y7sh*UUzN7ifZ?<5D@lUS{f(3{O(;b*1mQ`L9ljAS$xeTwwv6n3RJR}`Cmai-0RlN0)6^GhGaVTsox&RFZG>r` zb&{pZ0`uxAFxDD?Ur(ozs!qJh1X>KpQpb<|KTW*d!(nf)>rbH zKXfHOuPhR_WsyWO+2TuUWpJ{Ai< z7xZ>SeZL6^k`}6ce6vNKA(r#Z2zNKYh9xcO^cM*y+kR0tSx_1hvP&IwJQ1FuyZ1J$ zo&onY_NJLaxQ2N%;x*6HiJ+G=VPvgbZo>bD;j#tzrt7d%Qys&-V}9xjyxjeeNbDyxT~!& zx9EEkz|VME7_iD>F%}R9&@(9qZ;$_b77!{O-|}RI%{?bXJR!|zbMogX|Js1GWP|e< zGRW;onUm)+)|RXNA@9)0`BM;+mhV8QPUx-sTr?-2^kROgr_7fh7ah+FoHN-|nUI{| z4Q;vCFPN((8%!r@V^9n9lzU#5^m*3(j%>16}uM{F}MH@te8cpQ0y!gYygem+8>hx3ePA1N20u zU4Q2)@e)X!gaxE(eMdFysh|sFMg9z$Q?orRMN)DukL%3}asEX2^;L}lUYJOzh2_iU z^PpM4maHtnd79e~n8X=>o5ZJno5cOTQ!9x9p~}>n?QI}Orkpa19W><3n8~_#+(YDj z6K<`9DBz_PY{;b#U?rlgZ|A!Pub&&JV4M2q!R8o{%ePJExn%3{C1e5tQ zp3exp&?S%P(xNo&XxJPvtS9g9ZND%kdaOJ7=3Zp6y2LeYGTM#E->uZ4)ve~kZoKE%*~wor07c@rU*grm5-7?=#)Ss*G& zRtxnw)vU^=IgOf3I(IY2tcv~crAU>T1F{M~Y^obEK{Geb{~!_GG-PSffO*4r<%y$F z=VSxwp_pAEGS^W+D#~smio=eSR@*sQE3Am;qp4kQ)KX-)W2oDD0wBNB;})7Gqf(-x zk~&QBu;}kc9@}JQqSKCrMn)=oqcp8xN%Lj1RdV$?0G|$CVXOR*F1<3F%Gr|kVyp<% z**ozhWX=<2*L}MG=Xbvzs`M1QA6*yEdaVQYqWvD$wsLkob;EAL@YU{ zEZ6eL9St$CZ|h4##EkV#n*=;45HQE@uQ%3F3im} zt5q>3zlO0@5(KDy*_9u@)3H_qpR^ zM8cSoo_Drfml<_M&R@wCp+aBi;Jd9|ob1;gPo^%K;hE(t2jeZ&PKB}%{JQl?^h)3P zb(X3J3h7zG>Vq@heZ*+MpFPSQDT;1@gAWdNKGj=l*i4*1YpqBb1HJpVi$46nbkV^J z0X4GRFC3JIGIo@9o$Gs<5^7cS}S zRJD8Ga^nz7oAE%}-p25M6wuMz{MZanMdu=?=Cv;HQ(Bt<_jVw-pT~AP?DO=UDUf4| zRC!tQ&xfvQ2Tf?a-jDDccI#Y`pm5-u2sc$*vJ1~)sV=1({XlEzi*r7b!raJls$9LJ6TP)kjiZ|JVT;%(0ZXH5Y{=8So?r+S8G)2t4N3f zV-xGll5|`9@eLyA=N0vfRt8zhiV=v%-FscvsZWDl%XPGzt$7kVV=5nXlG)s)-Pppc z*0=fHGq6^)GbNL!=c_oX1n&l>>~N$pN(DE9Yv+@*Uw`3*As99CeV3#J=5FUnRSx|` zwg@j~(Qen@%&vVgG7UfIci9@rMoy3ItwWMX zS?ojAJCmy-Vl@J!Msin^@-n@;y$k)mQKy}EqNwPhm(_-xx}5>p`y~d%yY6)ptV~P; z-?|gaC3Btl(Tba&QmOYQI0E1gk>eD7bEyy#TB(BJPj>_vrCsninm)N(Gg5e_spu#o z=vfOh^rx&q&Xw((@Eo>%9P2UUJg`laT0J_Ndu=tSK4*O;7zyY1T|Wv>a+MrMts;(I zJ`uX_FZIWmV|Ut7y-9&34GE9a&z6@AqYA7CPKL=1xgoz;*v}Ud?yqxQWfwGa6H+4k zzK7+SEJPoX?htHc-VwNt1W@|)%OD3+iP~2x#0c|A%e3`A?BcDSWH@o?b3g%oEkr>? zd^>V^zys?4qaN}pqf>AYn>qi1S@fzlF}#uJV9qv<-C~uX5c#mQH!CVVZ!5rI zySnsbRoOUI4#yUMobS(EKlt){Eil)rdAk)<=)=6NLm!u&I3yBoEN&3}gg2Q02Kemy z0H2-elFz>No6l}13>!RYT{MpTHc_i+=tfs^eS5lE+Pe3`!o;9g*yqMuDnKOEt`E01 zcywY^*QB{yt`V@5U0^RrW_;T$9|i zFQkaxxzg~}s!rAw<>`!Gp3th`7T&tKLpvA22+Y5$>M{O{W*-O8>}plH{O&WBO8)p#}s zVi?*5J>OSxIQyVHxq1Hd$5Ef}6idi%bSSWk)X|^e!ir1u1%vxj?U%dzKPRTB^pe?5 z*_u7M$`3(u&#xwlys?DMin)|6`VLW;2DfkCp4jiM;KtnMO2F3(n8C+ZnH|E-Ekf*~ zvhl$z4tTPtvDenagHu^7QuQ5o087yoUG zvDtcU#1KQAI?o$l)vhP)unrQfHn@F|r=pr{S50&=rtYg<(EwW${@gyXpLeUUI*zOa zM5Ip-o^(ElQ(Lz6O~Ry7Cvuz7j+vRTHw*39=Ev-w2YB<2n7RRP|N}@#Gw%7!5vbJoA z275BKluRM1nk??SYc-}TbczEt%4ZcsT03So+>iHD{)hrl`0nia7l4Q^r5~uO3)%S^ zrCvV?wn(XuM1RJDCjNiO+)tc3S$QT|cs0w?ou+-#zXB8Zy^><9D(IacWB|WES7;Ea z_|y=;d|WQu_s|Q*D}>q5xo2fZ*KfA4bU!O&5EC@nY!^jc)l3^C zrG8nPl+Da{wWO+X%@usXq_RT2R0wtc#qVovDCi(*A#_<$4`i!<1yt1Yepl4N|5Vh) z{~s#qJY-T`|5Vh4e^=D&fr>h>m|1vpOwan0Q3vIyJ6AucN&!BJ3^^BnhQFx8BM;n& zDrmqbZ~MsR7SBJP$|}_v4VgaPZ>uG@m@m^mfY7OE6@S#t@fU$ zCiFA7(B#93iZ`BGp7hf-7gG$kxzjB{-4VQ9Bj(6Yc1;#?5m?SIcOBF6U@-B8B zXDwV$tlsJu|2kfE=uy>-?0y8o_x6F24QVda{jhT-#ix_GC!U&j+Cx$ZCFC|5nbl^} zjq-}dN}*7qD<8l+sd$Nq7Ky6Se6~C2TGM%srWtQOshBv^Ff&l727h@*D6LTQnRQ-h zP&@>sd8m4A&tJ4O=M9Jdi02^N@C6brrYXEw){$D_^zJRX5n^s1u&YlS2G$UANRk-s+1BK8P4!JiFIp0k)2YuUt?5 zT2HQamZ1lZ;wRgxIY|AjXpBIVeJ+0micfw{LQxpXU+eMy7!D~dR^Cdr%n`60Ra{1(h`y0J4h!9 z9YH$MLXjf92NeNB6G9DDx+tjhB1I+i-aC=dyP=mr&d)j5Tzmi5-sgNh=P>dy0|+CG zyzg^A_jQT()MC2VmFn!h5sN9DeCAc?6vnU^6&v{m(|r}|(PH)#&x96(&cLSKpPsa0 z&TdYrE$&^jLJO-ah<70(rw>%j1GJ>QCy!{hSwH2C2~^6_KAgNaJJTxb*>}Pkq0168 z@RHwYm-%*W!oWYXfcawBc9zleGTh8D>lo9rR=m=7r+ERqO8N%p$6y|uGAw!ZnB+3o^l>S%K9#?GSe zAAyhj-sObpLs$`KU9VZpOY=!pPuD$V>Nm}k{ii9Q0huC~U8^Fx8A)X=*9;nH`I1uJ z*LuOSV%}A^b_N=TjdN5lP(6<>N^Ygf5VP?x5ZM4`_etTDX1JO^e8f60R3Q*69E5IQ zfC%ZNhW~9Q-v-R&6o8o=47!^jD&Vb$DYl%vZTdu9N(^YXbrR4^(%RpQF3&sW+1DtC zmHo1syLb{1Q2T{*vPo0x(QiF@`86xmFE74eFni*qo$?QgqRwd`@o3o-d^tCsl69#L zH;q;*5XjMynEzdI`%#oS?GIaigA%Skjp6*nTWcVuhok9}SaYlP0lgYHp z2GHZdp|OGWgMY9s5J&x-MjS@1SxrRnna=jC4hT)fIK_dh4<#$W6!KNY7tEvdS6{2F{Y>#19ENNI`=@M82%nHz(|p} z=&+X58MrPqZAejGs-0MXq~wpeeV$iZ88T*ws~*kOlr~8-dhP^quW9`ZfkwUgs3pS2 zeVPlAhWI0%{u;?vUqetv7&-cC1u@9G@A>nse=IOK{a`wEv5c}c6$dwqRI(yg9-WOS zTCFbmnp9T_>>>C$lHH2779|Tb8WW|Ab=XQcnHiI*jgm1k(*fmS9GT(EB_mN2DpXN? zrW5qJU7qgJhZ1!kSKY&DqOL|)L*Y|%Qf3(KSZz+hVzU9G2c2s~JDMj>&L@yppr5^V zyAzt7)gQ*6yEO6$LbXjs)J+OF;rx(lBqY~wKC1sbU-QaTb>e|yx0rjk$?mJW7%e^m zMhVy*kKx6=!fS(w0zZTr#fvN`= zD1-3R4sMG8iNc!`ZVS_2sG6h^X@zVIBg4+RTKSodw-gYf-`pr4{``!+`{sU>kj#2T zb^!72tGP<5*%Rq3qv#G1J?TE?W0>~g0-`#jQ!)`Rts4^(|Ks@egZ1?*dHsIpBbulF znfbYH03(9^%GVHf&-4(FY$b5 z_i7{OL^J@C#6jzA4rY*q2FJtSx8z{xhEKW@&<@cC$hVf^pN_eR%0pZ?ek6ury}2Lw z3%OA<749{69O#EHL0|Y!B89_~SoHrqH=b{dD;&)5JWZz?VN_ByVX4Snj`pi0ar1|3 ziRAstO3P6Oqh!;ltt+ynu1g=cvqx}5mtmfO^)ubX9?U=^r^@{ZMCZ0$Q8vl}g4@yVX3)J;`uEi<83T=#}VUux9*YAp#r1a7Vd?k{Hc0 zQyV-eL7E}`Q>C3Awi0WwaurE-Mf(JK?oWJ^$FW?+$}s{PE5bu;p9xFJX+qfhf4PB> zn&#VG?pq5xR1sh;k?#*qDP#M8#i=^2R4A^vYG;-QS=k~ezK-1R;`RxOgT zb&wy{k3cJZIv;(*axo_&r=h)S-1%cPwmejL`1R8Q*ImESbRa*& zWwmldRunpT9s0_ODoaY7{71m=!mp6_b-ii{koGI07o^yNXep_bJ(b4TdWkswZ+ z-|>3HU-A0WIZ|-dPXiiT^9qZE$KVqYMV4n-_~Ypz`Xg>%HeWZUw4`jew-ACOS(8Ir zu0o)kkOGhAckBkwDewt@BcMn_<%@+}x08o<8xc+ve6}P`_WS+=6}#J1Q1ZKau9yB} z$M(^N7`{lZK5MrY?`Ol@u)XtL^6@_bd-83Tqr!ZrFaD1BTQ*#R{cYP3hhymmAU7F2 zL9^ynjJG+te7BGN1VC=Tm-PQywodFkfBU-2?m+Zb8?PEHyll=F?6M71co zWro{HBrr&|9)nXFCps()Y0eQXcDm`l?AMuG9#)+szhRq1mt7ynQ^(m^oqWZhYiR1F zo~aUal5={Z@O86oz-Gc?URlrmk|guB31P_x1U!b5QI%O_GXPy2H>Z zIa#rbf>IgPor0mETi}C7%eRs}e7yV|FApNXS1``Fo0YwNz=R1UG&K}j=-L_1Va&*& zNiJyY(Cx!T7uhbJ;ul?=A7mJg0^lRBH=S!Km(9{8DxAB|m@I3@*kgC>XM6ILeQ<-+ zHUr1hUZSx)z;EjZb#s}&6%vYsYN(Fdzif=Vq2CT*Ryqjayt*({~?Ux#Gua+X!{%;u}A zMqs$I%&bvd7S+zXI^8@XD%?}3%&q(+c{Vs+CxY80OmuZbr33{2xV z9pU$R-T0VRnCp}hwap}lx(`FsM#dDBK0!>zV|frZAuqqV(SrIppBoW8USm_J`rW`o z#1KKHvO~d8$j$B7&Ib_t94>W^hzqt%q`WhH4v$S^9jTBCGy>Qnf2e7(NY%VS2uNz( zM>FL`1k2H^uSXzvEaI+-R<^Pa)Q{{#brzj{3r z)->ks$8U@9R*$9aIlm@&IYvKNuq>oXc5gj+xbB%px~*hIpz&K@Kh~-gP`jpwO)k@Z z)QMrlXC0%(ldG>el?~DSg1fz%xc2^&-XltXki8tTNxrA#Pv#NbcZj^$*q*SE_zMgg zW1RMN%MBXf%C?`qNBN3WHYNTnr*OqJ7GA`M7hD4&`Z_i|a@d7`IJu(atR>lxDBWya zJ;B9q+f2G=qIw`KTo(ABLFV~^UOOd0#Jt1#UfJTJGT*PujP+g~`>Hf9LGP7Sx12l!O;uKqE-pkXEAPuGTc=%QO zVq}qG+h=hsL;Av)G+lbCImj2t@TBv+hHR5&|rkDec`8S7|GlI`B8xponVmWrON3&B}!pGA#`FbjEI%-JSO zEIeHXt*i(;gsgwz$a7=fqN<=T0#%SXrFPp7#5olh28|J}O@hZIT<2n;&|9`49(A;O zopkaU<6j#S%=&uG!`FGb5>JJF_97a*o>SalUU#PNlHJ+l{20nY_?}7OvF9nJEQ!~| z1Yh*L?IW<9s_(7qpS6@A&o!bKwVlM?#(7etg*>HLZrjH$p zmmG-@MWGY2PzrcT*MvQaGzur{!F=@heo&O;R9zcQR14)V2}qWyjw;G%nNU<%#=b{cgOuJ$H4JyO3HqaB8?zFku&1<>RO?#pX!fK z&JIH6v#P_wI}pfr!YWb8=}c~`TcA*|>F8MHvhlu-76cN*ck=A8W3qm@QZgA!ZFw$bSrPyZx4e<7$)A4*UEE}Bf5 zPF~DJrmg%w_naM2>C5!90A0|+j3$S!hB}xf;aEF>wJ$g4*S9yV6I6YVs+v_>mHMVm zdYuS=-_uL^O%78DX*6$v=64>+D7Z}Gb7jW;GfYg%w*=5r9A6l%rvu)LL2f2LDQEgJ zp0|ac&ty+il{y^}q;F*^rn;lo5u0rsRhwMdb8{2)YUW2Gv$G+NrtSdsc@JkQ26BdQ z@9$5jW@8I~swJ52sD1-wAAR2;_J%n9+QRUjae()O-Xo{uOz`*E?x5x>lXJURRM#;kZ1SqnGf2e9B&?0H)!0y^u(*n2 zdY$D#&&W+)J1cRjkqk00D-Z{50%U=GQffmSrCvAiwu`fa80|ael@4Y#lsJV=@aw6* z{QZXRnMlCP|BL+I?^obUphIXt2_;$lYEQ>j>zz+Y zT_TMfqrXnJ!5G$VcM_;X#R~?9G|ljp6y?!&je0^Mn7yQ)TcXtkZ*RXHtrVjwk#;RU zrAd0an_h&-(bXE{-v(y&xF=V65Rxz2-KZw;d$7w5gA#dr(lt<*|R1-|u_tNO8 zOYUAM=wZhgyEuBk~`&@kxcJ~*x{kh<%^7|~jG8TT%>lPy> z1;gQw;q!X&_e$~C-l3o`lt}a29ND*37!4VgThPqQ`?<0iuU79#IRrCx@e8F?Ed_II zy)L=}J_)U1WR6*xt`2?FJe#{G?x-R24Mda)q_85H#6^y#B(SPN#!MbqDbdHXG{%+3e~M&Me;TB6A*F2<7p zLJ?)5)#yt9RiQ6CsBC?N&$Y3v-gj+lFpA0*YEdzwE8~!+EBQZ46FwFsN<>lBM?XK0Vq_+Y zs&m9R-ayY1fVIi(V{!eoW6+YMoZb9^uzC=*mftharYE3u!7Ug^CbX!I(6E#xkOvM#ls zUDOT>CKV9=zMiN`Y0n|tAs*SyHYqy&`J0zr_A5VLoC&K~3eZ=~84=5<$f6IyJ^q=H zB}Zs#Ptepm`Z3d>f*b;PtT#EK&R&OuYeZ)+-H;Vr!HTs#^?!BQJI^J;?y-MJh%y*w zB`QXKly@J$S`2jAd4=_xB~yM{XvbiW!9(ecTxsI_8cu4W;ASkYUwDZozU(K$nemj+k5NPCp~)9I``z zJK016mwfT)kEeR~YNA8SEEY6D%7xtN$h3D6v%CP3o%yM_1bNCEJ{s-qVHpNk^-|mU zeZ&H=eGe$xkQ?l+N@*ERIOJ7R?a%wjWa@U;STM6VpAYw2{EuPAB8I-!tp*Flfc0ZR z-EKVszlPCd^_5Yag2WH&okMgCil~lHz4_Glg*nEG>j{ThR)7Qg^%n5Gm7Q_?fV9m8 zx;hOo-{%14`&uc>Z{|D8dnRHp0b3P04;0+EjN+thVAh=^ycd3DG?Yv}2`-YNsk`KA z=u~B)j~P~NDL%L0RHo}T4tUZoR@Gayb+#Xzm7bZ8tZriT>`Y-O7v39CGjgzq2tD+9 z=K$BuHLK1;vE9YZ1WaC8m~J7pe0I@R@G`^zV9B9(GN-^Yuc}+GP3FMPVoYepV^geC z%8g|JWh`rjGMUS+6|n1f=9`IFsKJwKazIoYFR?NO!c7+?1keHLTOJ z!(LHqB3G=EH)rb>|F?&h4*r~OVt0RZW9}Zl)Z$4tSxx7zTgPC`L-a>@Aj|zf^6S2e z6G!&1!?HC=;YwUqyfAmgAEQgq2~$(KgF?qIH0`e&9g6+e6oSZNApF2qcHz@F^Stx> zO#;+ok>Y_~09iJoIOaD67U7sZ1)V`GMIMg)T-T3rIgd=w8V-1}4{u!jkl9%1uQZvw zkZm?NL5+JOT3_Wu z$i48Jb2{Q_j7wYBw)OJJ=MYQQ3f9$INL$%&QMUMRCUp6KAn;%S0uS8b|8zW;Sm0!S z30OOL8#my6KNIjZOUy1o!}c=si`jr1k?_mP-qfT`y*!bmvZTb-yTXc0uY$<%2f^Z9 z^R14yo$Ie$-d_lDGBgVe6r5E3DCPQef$FC z{ncY1mlp64SwIgaJ;L32>nFMgOfivO%=qIPP5wMkXbY4pjq%mNz?ud@VcR21H|vz$ zmtU#q&|vS-({RsV^s%fuYPui<=ay!+u;dr0N20s_wVtzTp>_t%q{*k{H51oo!3G@A z{hSgCQA<;|x^I>*?&~L+63*_P`n5=GZ!bnuwC*`iJEQDpfG4N6#1KNr7Wk}* z5;pZn}uYJ?z13u&twvH{5Pp<-nESIgXlzVgCtB83 zFQjQW0f#!jspRxQJ`Unk>;2f>Z~vY##m=mp&=I6p8Y%dq08wb~W)Cj%k8tAh?#~9_ zSvG&m>Z*N{xlIpPgm$4JvnF>g(|Lh8tNL-O5$<;2{o;$= z=#{R9YvTI2=-0W|mA+KVx#|VY#lH`rmHIK2p-!`u8krL=Ds;=i~gK1Gp_BqDJcw+^bUye2I^#tSgq8BBj z;v`g~b$1|};{H1rE)BjF3wdq&JewIKRyW=9veTjT$M+@anOMHlyKjUxXX+0tLG&?_ zC(gz6nhM*u&J#jPs{2mZ(I_9Dw2ylgC>-&=(e=Fx`OMP37%UxzBJ!g)^;u5N$*--Q zjqgk->CQoAjO3Jt>MBd$t3X%ya)z&TEk{x*W&Cl^)8}4th5OVantVwz$x1`|yHwZX z(Ky-IdpkNT%!0d9CGZjc!nZY!A;ESe@wYu|vV>()eeXApw&|0_s$J+{{Pk08AYD7?e>I$h2RhEX%{ zPi@~mIp<0KB|pdhB|mq_8WubGHGFfMkqs=~N5(n1Yf_V>{m(4GfCl=4gJ!`>Ewl*1 z8J4Lbva)cLMZ`pFVG|gu)VAI0q!bJ+1$sS1A`0yCeOJg(8O(ZFTUncOr_$v&m#zo`Je4lcCA?xmGx}l+K7ftC_zcx z|I@M0vJRKVgWFoi)~F8!0#Sa8V0=tStK{)`xWF$q z-6d{fff+|}mbS6vw}EJ%^?4NMh*Tz8OnU5X8xN{?)>pl*OeU!-Z9Eyk+=ZKhUDlI1 z`IFba=WY`cI(N$lWyFE3bjMvdyki#fQ}R>wDqiqDnn?wEX$oeF`yOJ zstKd?MXEz?PVQ{hz>WM9=R}DrFmJKmQ2An5n5bLheL0B!V%34Prsi(nO<&gySrfY; zq)-N*SQHXfXA`N@T;(^nS2zUi-UYF37bBf2IY`u2$HrEzsGCJ4ZEn!qb>(GNYX-#a z{10OI8{;KGpl(AfYvplhh1k~MAtYd3{sD5JdPGGDnc8~5yttP)VdiSSSh)@!ZjT;& zjXF>Fz}2jks`garCr;|jqiiQ@Sd9jIe`a%lc&g^75PptMbP!~QAHmXW@qPEniS$?W zn_dk_by7RxR`Ul;U`}C#0L3d63x_~fqa_sV87F^tHAmD(^`&CoX$&vpwPaV5gT0t~ z8vE{^RXeAptoa1#ohVz0M0Q(xo=)cyP3&!iW>3Br%Eefbf4-}yYf_1(A{qO>v?^cJ zzm?Mh$BplufgQJDN{$O!mA)WzG;dX~3U7i_GUPEDMJ|ceF`wIJ?n`?q(q>lZc@Clg zJWq+D8%GDKuNE(mPv73W*5<6AxHRZN@)aQ1%L&;n=0AQqZ+U3)u`eItSxFNI@O{n) zY9kT1CI_0ogyG8WnaA1$7y5OS!LaXv<1gDeWLd14PQK6qf_DcTZhL89L<1_O;C9eE z8e&U{Ohr^Z9{#z>e5unw2};_$OJW3Nt*p?kcT~f|jRP<`d96x>3Q&p)>W;R!w%cl^ zf594E1r`#S72X`5yi5%1NlmhzN96hjRdn4>4@q05y-e_V5yqcI(7UuqOZo!KByy4I zrNz|zb{jbWp-#?Xg^#5&TJqbJW*mGRF=WAu5|HE>e8~j!| zX<}w)+i8hBfw8#v4^>=zzYY)crLjzfFRDeP`1-yPy7M416JM*{B6qmq+zGd^Z%tvL zt2lLBt22QIb3*YsnyvH2rsHvXamOQxFt0hOoCZZUAZu@kTXg7?J@38g6wAt58hjoC z7S`{%uliHgn{7~APjPD#*&b-5DCktn#@`dUJRSWGtCgQ&>)mXnuGvSoeC3qy92APX zl`fHH(N=UXs;wOU6H~oCqDB~!Oi9Z~m}te^%StYT@2QZtv((8w7PT9-+g5XHZhcwD z_U`c8YlX|Q5w;M@Pp9PM5lO|9?s2MB;X$G&mK>^S(&&$beJ#n-VC8_j*4DFVI(U$j z&G86a@YBaZ*N$I5S%Q}<3#Hr{5!JG{jj6Be(`%h;_iI45_qrbRX|uSV;+WvO^DHSeZiFI%xMy zVkeUkC39=ZaVc+pkK_3-c^#G4G#@U~+dti?!cuL24;s?=>iq$=j%83LOcY28NF{e4 zoZp&XZJOOFOgpGzJw;?8WVx?ITvQn}z+$_1=Eot! zD~AhL3DO+~E5S&<@8!mE)se<0x${TR8)?4 z>pwEocM64&3a+FkQe3D;X3K9&qcWOlJ4cik%14apGOc`Z_5~o?fVk$BH?Q?ClYO}t zo_#BKuhz(1tS^J(vjFuhD#{joAMvz5j#PpG~?*0xS4a)P35_mz-`lxFNfY-)<}vJWd%A zryBYslI)e_+$owRjD876ibt$2PA0)#`?9N(%a&l+!+Y40gRHwa{X&G5$nzu9?gvz? zAcnm}nvvLg-*x`kth`xC-&q!v>dQmdKr0g3af#@-fo(*VtsDi8`6WIea*}d5&4M zwpKj01m)#|Z{qqcQT6X!zw;PY*j_zkLlf2ZAqB*o z$rwIOSI}XatC7-XEEL=|cbwaQgDFdOOzaE=X{-3ktu15BBL)%cc^H#iuHppg))P}r zdfnBTt_ORTbf}Z;Y!i1Wc@Z2?spLV+$vbEd92e$4>7Zib5-k@d>~v>lseAaGjMTev z3SVyHHMo6IO3Pn*HsZL#K2@uCb7Ow)GMG4-A(W^@-Gdj{e&}wxHcd@U(Qm<~F#^c} zS)yh+i*5jE)^2xzHJh+b+N)yytUY*TyKFe>T)lHn)N0vpYa$chZn*v>>e;En*;pD- zqv4GSSJf9j7_v_OSUMmkXf@_wQG=%vd%O##UH^nM-G?U1J(#WBmnJ)6I`KU2c;O_Lyt{+lFTs?l=o1F2o%Mw)ktQbHY(aueoc>lo zBe1Nr;2})-qgk%TdGn?43V~^w(C)OUV`ynbcT}yH?rlD6rDyL+T?)YInr64PUsRac z*vt!eS7RPc>xuBXGZh*v%UiK7AKz1{b$@+hJQND=VRovxC3shpKITay5_@b4O0Cxn zgZsX6O9euF>-U^>#P6^Lm@?M*15GoqklyzV+jA>1?)s!r-wV?CYXz#u{gtY2>sqi; zU#OE(TgKj|58&m{kKWa&8S{jb@QU`%N8Z$>%%7N$Cez z2T(V^(LayX3xp)$AiRF7*LXx9eNIgLHSugWQ_I=3|3`Bw*Pwiy*UqnG663B09cLcd zwW}kkzY?Zrh;D!UV!|9;xr9v^WkJnHQC|+S5x@$7FBsCMKEBnHN-R=t*M^ukh21k( zna=d$2&tI6bdJ_|cF`xBJUC3tbm>S%g6ncv3PQ$0;!LTCRnKL_Zl&7b_>Xn1P5`*i#heX33UOCLdMOPM_$@ z*V+q$yt%p+Xt^bpc|AR&t$iZP<(-#hy=41N`l^>nOi(dRf`8NIE$6em51JeR+PqKS za^stnDa{W^n)h>xMbgF#*@~7ErQ?UgXhLuF|9@&8NhJUl0BuAPddInVMILZ?JothN~VdJ zL?I|+!CX=xW1TOK^B_i6*q#|V%$RkGZ0K7LCI$5{@%389rmY-*KYMBCv++yZv$;ol zYh?VS2g>(($=Wgk1Jm93ASu2_b|}lEauFyatG1`M*S>vY9|LEX2uiJ%91Rcm^$#^qZE$29()CgcLhsQ|3=%w0_R#)xGl& zJIkn4_H`1<3!n5wp_R@&t4==q2x~+!$8+fGq1X5ex7xOaEh|Sn}H!- zb47n<8D=(Nw02L^`VHRf>FTbit~4wzL=3Kd>^EkWtqZXqxCj5HvL05Ty2!P2qfWRE zb`&h>mrgNgNF5*`{NREOJ-+ud=ksFiaOP|JY+(w6Vd78BL~Dl^cNJ-ffyMSd2--qb zeKbIu0yUr5dlQiu&#t{kTQ(-(=XdSNYkpM$sI|@aKgD~~Zw57_sJXrqv7d9aetI57 zFr5z8pyms9SuluS*g0uck>ZuL?f<%5f>vRQY5yes3;m4;gnN>5GmsTkk6C;4Wne9E z42|!th1syw+1tv5qSK(8(JKb?G>+RP{%oS7EWdm6``aD6Bb2{+^cOUBWPk3~2M81T z0atrZ9={ev=rz%NV0oOU98t;N@7q^t z;hORm4{o!pl~6rb{KI|~n4a@k9SR_NFu$pGTG?D%D}T}HM`Q;7rqj#+O{Yiy2c2H= zf2Y%n5BCCe`g+fQ(dl>oS314C2Y4Hx(|@NntgifipZ-aK-!%XoK6c~3==A;nrqi>Gbj||BX&B{4YBF^P>Morx#Cop_eN|hoF0Tv3|>>j|g2HCspG|zeulP#ImaP z=3)k_m3v=-?tRd>#Ffq1UJlpgn9q``?1_tT;Z;AmE-PCt2`64xms#QSz(&8&FzoQHi^fH$FRyb2NswNnQ5q9SQ!LNd6dNtaTr3X6?J& zbI~k0r{qsxC*jEh8?>wDqhM{m6@+b-){abb3F_0OIp~QrT*=VB*ZvA#g^D5*Ds>EUMm`vLcE4A|P$L zZ*5cM&>38I%f(b|tfJT-2f*$%wp7+d-@XJsW%p>fB|op|wbFHEB;i&yt)Zp7-g~En{!9dRY(UI&jAN4idKVayWTUgQ@N3rwt!CFkmpkw&3vmhfQL$ z=;RnOQzJr^?LwZXT8aZKzaz5}IPTmU%(&|hGfBp)B(yjmqms-VVS@upC>Olpdh<(-?Q%L*2B=5feA$bSR0ly{h!b|kdt{i*tI#XHUS01U4|a~`z@VsAuSq>C#+37;zQ z)c5&9WM9e+%H7gSmY`oue`480(#Qib2~kw6S)*4ov^fqOWm)&x&OHISeH+=l@=&to|ieVQ-%D(4?!;^qeLk$_{b5kgc(&3C<{g-Lg|p zrS~N&2DevrvjWVF%5ciiPCH6;9@}~tf3i2AndQ#2-_wCz9ukQGp$syaN%YfN$m4rD zvIwMFe&fCVkB^v@!gD~v7wlQfnCbVGqU&YX;VA2VGwBx9D5nkQ@4NVxYnad_~$ZKm%=eQ1xH?IOeQ>Se8av0Uq$Wk~C3qlBGr}bf-9h#fYupiv3M=aXh z4`5;xIULe%WPfgO^6f9b6Q}jJ5R122iBQ8i^5;?Pl0wBJ$CaY%=jOGx-v%wN+**>| zIq&d%5OAb694DE3|MORl!|5K`R8`(m3Dbq(@!O(uJ=g?>=gRwKmeX-uxNO?bbhBra z!ou!t@6Rg{?f|5Y*w7}-oH-?c4|UX!O38Ad*LBLs*_tKEjeeLk>dfeWevXTZw1{6V z?(Wl4(z>q~%&u9-;IhXoGU~E%ytYDO7WaH^R?d&*_S4v z2O4ZWvcH;L3D(QBZmXBL9Cv8YrsSSa2^BsOsfGD*4Oe|0+jPwYAZ=tr$*)7de1_%`1RAbSh<0;^{6fOB>K={rWwTd- zv%o^|j=GyizQg*uXs%5@c3t=)rlzod_I|@e0sRd)ZfD`S4hsmDK zgk=_2tPt?oBVsA&RzuSaI|%^e1PK(<^45n#YmtelKQ!ikPw0Ysl1T?>X~KCNmtx9LE4t1l>!v z;7>KTDIGmNAi?y`vW-L1CQ!z}=l`Q-fAU|__osmL{oghFBcNt)`oGldVn7$R zs7zo1ACc;(-kttv5OCKp*bTvt7@XRhJpn2GC4$~J)C61A^Hv)2Q`qI!L%rSV`Rb8( zcdWZU-&$G(XR!{lf}V}(_$Ob>$w{?$5S#XR(AkzkC#jq}Fe^?r^pL?t0m(i8I$TwW zjE_$0i2Ogp{}5JZPjRxF1s*O^W`>A5W0DQ3%2{UVnZoB~Hf_J0t#xD$N_1HZ7X{r_ zZ#~4Tm^%tWk)|@G?45SbY#c7#%z4&lD1B~nO~g^Ek91l_nG@tVs@Bh$q=(;Nh^)oaMsakDa#bcYv?y>`ijLzp@iHZoEO4C{{k5yrt*0Vaw2^_6DY%{L;@~wYUc#Ws=^&F>O-r?4aNX;2=4C$o0MHbzf~R)_04H-iYyy zHy%tLi=<>q^VDd5S3k&BQ8sWx-rb_bRYOb2{o`AuO|AR^9x`lSxT(p@Xn53)j`fO+ zkF>HU*>u;EbN9^m>c@IEcq1}MdRq%-SmGj-3U&SxI-hCC`uYBEQGBldxQh?y zqEO7m+9TpL>2FbdO{HE|>Ep@*hSAqAM~h4-OPQMAvt*@A$-=br3s0HoG8ws$F$MaT zi6gbklIH^PU^XLY3m9}X2=Mcc2&^ihiPBLkef!Fmm|}#I3AWEKQtfGFh5Xn@*S3dV zpqBI{=H9IdU__YC2rIs!P1C>TmgU05#Qt56dZ4_#ezZ57Q$0o;Y{|)4C^Obo^GA^G zAIE$-mNy%0sFBU=r6*#Flx<4X1zC4kbobNK{bX;i0Q0%QL^q#lnwZSf?`VZc8_#xN z!O+<3KKB(?VS9t0;rsJT837~VDIi)|G2yke2Nc`@?*7`CW)U}@L0Dc@&7!@(I*?Av zyFcxT^go*TBV)ilzevyDKAph!Mh`p6Tg=qHmOVx1a>F+ z7?9xL*`HtM3$!sVn7HP{Aql0m$6@11f1ZTBC?G_~v+(}7c&_l}NCr}#mbEt?CcVdP z7C>{uaifP2nLkzBHZ1fpz-?66% zp}SaHZ;uui(j>g1Y=g9HYiuVbTxj%Tm0Q}L?)1zw&zH!j5HsrK4@A$yCa|{5pVz;y)2y6Ps+m0k!>XRp-5|+3fxXAoc$To^+eMRXL&n_qb}$!x~)C2 zk^WFC2h`WxQmnL+u{b{tf0)p3Y_%E+V-TFA2_V%mQzP=eJZy$<6eJhI_j<`t!P)hBCj^?9m?++A9SmI!S z$O_hbTc?)_EuOZnPvg+AcplgtD*UBlh2!(b#`M?4G&`bgSbRrjhph1WyKpDDY|D|w z^BZSbIsDsnw`mIG(#D^dGh35HxUd;f*9myGeEpOiRQe}b=3;c4wov3zXxy$b12rry znV)ZHV)=6OH3v&Tm@OvYg>;501CV{{f?UgGHNdsq>bFnzZd(;8}b^g4-7Zugc{ITZ`0? zE;A!jdY0Em)LZzM8D#J>Z-gd z$Z(IJOz9dh6?f}^+uvhk5>qf&xMAwnxxUm_zC8Ok2JQN1Af)wX%+fC7!KXy zs8i*>%!e85mVf*zeStqQe8GS7dC3!KvVhI+^@H~Zeoeob`D~5Ai2q;AeDr@~=7&@e zI%ouvANftKPV(wn@id@oi1As>e9n++77+OUbV?_g@oNEgqen*8xD)i)qFdr{>qTsS zM^6^PZxWF2#qFBmw|a8)Qgt3={OaT|0M0EsiPx###HciVoL2g~-OvAjwEN!z?SAa) z6PL-If4BQZfp$Okce|hb?{@zM#Tv5io8x)GBfXCCSDfYhsI#b-OUD#tBPP2lh$VrS z>#UzDjgkSqJn@J)O;jPSVTsLUMA}2(*0WXLe4|X7DDQhtw6*YhbIx?QQwBx>&wFc5 z3!>ED^99pHWl9k&e_R+6i|w1T&sm7G7~(>6di^|hor$=B)odVq4f(i>b;&yA*aK;6 zpS_3i9Pl4zBSwg-36w=7G(o3zvas|wvpO?IJeyrGKj?EQLUN_}%eavw=I5s5yR3#cm_|RanI>RdX(UVtJ zx7XfxA+n8cIb&6bzwiD0k6~!Rfii5AV)Ff9`8`(m@#8y4GzYAjgco+4j7`W`E%RkA z-|sv$CU6TwE0Mkc;G>cL6(_l zzSl2a?H2{N6{Q&p(tY+@cwja6oGSg^G>L8Qty1*1e{ld{zv z_nH;qJmc!otWp~MvWig5*vUy|C+P1^K>e31gB-q5h8{IF? zh|gBn^;Q>>bKU-yLi@*efVnghtx|mzaGogu)cnM6+u0JKsHLY5^A=V5p)2TIu; zlcrASW|BX7%-{qxQq}Wn8RI>(#klpiw%3JM`&J(p9E5SbbG6rlU3!SemuKVgM~GzS zI?5a`@SHhc**&mr6?h5RDC9{qT{0c>hpqcv#9g+})@CGqtDA$Y3KTKWg+Ne(l*AP; z885{;C${tHpEB{lGJ^EKmk~~ywcv%R3en%bZYbyO-8NsS~-1le5MFg=6)^AVy%W6#xciONi z@jYlvJ?bqs$m=-6B5lkjWXy!N(O!9B{X4&0q3}@@Ngmco_12CqPOV&hi#-cX7f}aY z)??B1?q@%}U$?Hgoo%X<_24KEDVmmMwrM~E%Mv)CDn5Hu2-hte{{;KuDy~ZINlRiZ z(pNlf)*E(0j865l*zugj=r=C>xjfj@6-Zj^>vJF*?c0>Kyv7AtbW2!{;?N8HzbHHJ zXt>*UZKn$%5=0F`)ac!)5p~oA(L)eM7bJQ~lrYgpXOO7Tqn9WVqm15rOtjJK=*GluWzkyty%LwmUZ9vb)DyN*ecA;3@NWfQbK$u2->L2H(UcEQI(VKxMH1m zzqFPD$AEcG>a*DcX2S=&5p9ir!RK5c!QwrMPZZzl8Vg6#XBATmLutm0-l$c~i!nH@ zj1TVzlS_)f@f7Ag+ZzTkAoYKzcI>%M=w@!dUZ8TR;J@X1OOx_q?6>Q)AS_SwxBF7n z@c|>JY4?|EhYU~@yel? z)J9u^h!@lLR#%uleYdG!IMHvE+t=EB6S$+2Y^205bGmBwZMy3fyXW*2=5ZW?x(!FS!9CsUwNnDWV)+!iFu816{| z;Ov?I!Px`Dx&MK)hx~)H&-9!d>HA)8W9w+4GL`7!5Mb>p@Z^JoT?w$INcQBQS|(!M z5aU!!rXSZ~AouA+STxs&r>;xO%L>#dC*PAv$+26L1IKp+KKHuEEp5;I>bFYkc1(ST zR$I^l4Xf+86jf~{lM;u2vg(X6D%l_+LIaCrkt`>T@3Pe9WawVjm{*j2;l({8u7}g{ z0Mh-k!`cC!Uuxg9u}-$5-P6SJi;q^4Zm1o>)Owa2)N&tzu@#%W-dO>g zEo~k@PoM94y*2frX763;R1>}0I|idl984#3(YZsy>TBPg-^zANOB(Krt?p7Ia&cy{ z{wi>%K`7tp+|N z!V)YG?CG_t!;g7-TVj0X0{9BWQty2g9@bBD@4yZt46;6UFPnr9@>oo=EWU7X^3jL3 zxiXfpE^g#dRp+6|lX92Dco;mAzAQtS+vQayb5BT(jYAXPlVxUw%-=_y7ig8zo2Al* zWt+^fDP_b~+&|F_q@_y-YUrFbX#A&N&qs%^WwF8x0T{e|3bmeg7Nn9VDz2|Z4Sbj0 zD8*cKW_t?>dn^B={>ZkVggKh+`kLJ3u%f8r#;c7TgDOqbD<03z|VKMmElAQWH zY5^=YIU0l=xQa?UObcuYyihWqz~o+M7{R2!P`rr$a@!sMRKo434^4+u#{RGdMl}5o zFS&w0V@E>gsLU;H5Jl6vzjJrkIQWvs=ChFUK(_PJWDyl{_Ay-^msAI_^4~zMAvz|H zlPpsPSbdaJ1DNaAvP;7w_1IX{DSwYe5^ub#C;!}_m*n=5!nd|D{}@}q_=Z-g zxPnD;Ko2;H%egeUtH+=^MiTalP%P`$1icnf?0m2o3^(SX zAN8HjKW=S|f6PQw<@L4=dqZwJ`tXMz0S?EAdvU5>Ze{Mvdt&fs^^aTpEID#-Zv(>N zqH1*f=)#xb+^Z>hz+-`(^o-QXecg`uPbPFfrM<~Trp&ka{kWgY$04B|u9d+9;b<+7 z9Ri`ak$3BFg)5OG8LwEAJYx#iB^Lu;oM*5YL`wy>r*&L}5e-#(3Sf69=51vB^)p}! z!(@3ZjlwHRZpg;%{x;GUPqX1yWaqz>AYK2^+xvYw`Z!LrWO>XSij8q!u+LG-WN|IF z+cIuBOEEgAl+jm+fsL++{qVDcr>S{KsY|Fy_+FPj#uUEv9PMJ@8HVduI#CZ<%pCGT9DhC)k^<4E1So5h_y2mM#W z^MXFI$42Job%fhQ9q*4uJm2o_sz{B@4dST}k}E%2knQ3EaP{J5-Si-|^y!WKB-Ls* zkL9M5>0ZMdTuw|$FCsu z;oWer6Ob7(GJ^lm239(!bp zSuYD~H%&TldU}V1_G6uubSxP`mDD1YUL@){XA#Qt<~`-q;9ArF>-Q%8iYuWjF$DDvQ*Z&SrtkUL1~leHsQB(9 zFE`Whkujc+{jaaFBwiJ68AGsYmi^55gnN&c34UVewOH>Nl>YbcJVk1&gr z%78n)wDRMHg`d)py9@d|Tym`C^cs6KFJdKKTGX+miQg-7Np20*0g9Fw0Ih90d7E>x zoh@>E+dd%bb11wT1E}2@ZP(*khK$XsHU&;W>`HNNsXU~ zS44d1!G$%^#`+uaWXtuPZZS#MLc#;FWN(Kl$`t*ilhys9}> z+zj#$T|LhhPt#kjV_wAUd(|0=Fj7D3hV&GKo5pu&Hi1=jYHj-XoS%QK{Zx@C571c; z1dnT$3;s0=P(>&{P@r?pWuTi|d9k9CCR11@A>5RcU>yABFxE-0roBU=z6SR+Pp5a< zYpa>mBvQx~^EEe^LBb93PHdZ{q$E<%g=+^|SLrw6jYvy!|IMEpX&gE83GU#SLHlH{ zv6F9!I8Dkr6y~UIq(=fW%BHGna$^@V9u1i@;ZvVIFtp&Y2Ed=K2sN&HhaPR4#n+-s z0kSu3^xo7`WF(TRV8bbDAvT6v4@j>QS7^FoRHmTG!wQ;2j;_-z{f6!;ufkF)^=+?~ zZ$K%hsZBBr2iYijk?iTz(`wv?_aKw6jv`M)X@%b3i30bKRhVeo_Msx_2grO}VSB;C zRS2KDu#ls|8Xha@p$d)JTzY2P)|W;!x1sDECT`^d>+#~05+)S_sSf#1kJ14m9BejM zs;<=_IKgaJv9FsLY;X8$0PjPUOZDgXBkMG8Bz8j3=3!bYtd}`J%)8Oewx&Qpn;y{Jo=eAh`wlI%zQSh~WlEBnlt7 z0Dj0qg%uf}5_XtQ3Gw^VxjI$145{kF6 zol1NId>(i+$tAw)hzw;K6UQkkvb1=uv(qk9G=23{fB0SUMCtyEOytHeR!gph?w%Rx zQg{#m#l$v0k|7+=rfiiE+0IXJegZp>?X{K35tnfqAkiXue7cZT0O0$kh;#pA9~?lh z);Z2%=(qC;Q@Tv|WtD}DMuVknzDnJegRT+^v5URuZVT^d5f~v9wBHxgh$vtY;@G=4 zb&|d(J6W4ZpWH@`R|0(Ipi7^*rPE)8b^nRKWC|23V;`U%T3Ar`a+g#ggM{fqjHn(? zon*FjeD3r|u9LOCj&5Ec8eqHazhY0NVHBVD3k8L)tFx2$z13|*Xwhj9)^CzC?o5x+ zxIdF;FEyhc47Z#KYD zpp-af`{S&$3O{l*CvL*l7Bu^4S)%oDdc#bHjCn_+qrR+hg-LN$L&%Sf+mCFXz#Y zdGf?P*+efI`hbN40e-Q}qCYP)_xcbVSGrqL9(u)k&V}`IgF9rE6l{fmk5)LRPw8$M z?6il(E+qg2H{|kIJB(&ntx0_T&W~iXpV?Z1k5<^<3HU*ilm~1X(lHxuD%c=UeQ!CR zT=o968WF=1W$&9{@4K2{Zjtm99;JwPr6y9&58C-+<(O>#JfaU#C%eu-rGNqA~0oaqoS!Z)0!WEb4MF7Hii}gQ*b9Pt}u$om{Z*aqos2m%W zokav#5_tfx@oOF(vXQ!^Cs3rLn(=J(EVS7aK%8g%8*wiC58}My5^?T5^B(;wpSZ69 z$58U49hd<=AI=wnZ&k4@I3Jk}i=|)bIRDu{I^~A*tdtdI^#Ok7cB(6SEs=xi0KelC z>{LsN{ZL~AQwdpBHi|>3JN{)*{N(ZyU_>Ok@Q=GSB7?i$SqZ%$KluJ5S6iy%`sS_t zd9op^1*Bgp#1dIETjz{$_7(DvAbKR}(v<6|5~rgfHS~I8En#j*dtowY5!x9U{=3_< zaaXu=?Gu2^97u}Umhe{}t)RePC)cZSl&ki<7xjJeM-wD_38gK?c72lmHI<7&_XEPD zdp|P!HEjPuW7MTu9Q9lh_tEw~sR`(|CAi1X>RrIi7~ScL zq{-#)w2Gvq!!}sKtG;~T6K)QqcJFWQkWuj}oTvZ9&Ic=F2f@trxEd>&$AX-<3)Msu z)mtm9Y`~xHbk^v3t70{@5!r{&EQCv6QKjPe-JWR!@^0VJSJQ21=*&>215$IF#s57W zl2A?k7xLGj8t}!P?yb|)*OD*1C%G3{jVFowK^)rNN>=q_o^(rJl{xXal;zbCcPHyW z1xtiB)Wr6g_*(V-NMrQjRN`y@tJOR{Kv`RjdD+JQ>VsG=zIB!yY9=)xiS~61O<4tX z=|Aa>Fh#nlg8iZ1;T2zRvKsSMaU^h<9FadB`F=aRuLD$nv82JRD-#1TDHxM__(A(w zchD{+B^d0kB76a(tm2um7%{r_$zEl4u8cmjihC#@7SqA4CU~=EImDS;0!Pl1|44wx zZm2?6BbuIdCU}<*&A`mNKsv1V>WN5ysSOvdt*VRMt)AsGCFbP>GwZpgY*lbeEbOGOI_Vf{_l*LO~)j>2MJ za}wGZ8vb6lZX?U-NQ*0jk?CY;Nz@DAPBB2riREA>u+|}OOg9mVD3EEFKc&VBjp{F9ZM{)RO!Ji*q+{=3t>(ED z8h2Y8Z0)?;>FRsDl)Tn!d)2*ZB&r8ehur>ZNB{o29nJUuY)2FPFYV}|Ml%ILkH#q) z^>^6KF-K+TSapDSCb`t~7@;EEU#YpN?>OL_8aqj?>~c#+6BRU@JgvYW@ex$!VkZOB zeiD~gxIhOgJS}_pQ|k)%@6= zZT2>OyDb$i&Q)fmeH+f#{~*#VMa_K2A7*fvegYCZtS6oDZn(DQN3V$v3!?gML}Vy2 zDS_!g2o^2z%Ae`9(Z?<3e(P1gyVeVvA@v>_l5+zO9(M-$4D6%%AB2J@-N*4UgyU zpTn04p{}=V7TC$nE+{hMF{r!fFY9*v zcCA3Zvn9goP)tbd47ya<5=RwFcg5B7)hMp_;ZJE#u(0*Z93JN5#;z~xbaB~N-#oP@ z$-k@Ncr;4v>_aMtS3!#aJ;%iQ`M52^c-OC>ic=pcAVd_Vb-joLaNTag$5}sG&5ieU zqK-6l{4=M0=r=2F{2$UhHX?qTqC`837=%Je*Lskw23i?_!`tw6yh?n@IS-w5$UAS{4 zNC4FgdekMDc-W1oY05j%%L1k*CJ~rh#O8#p!yclD@iCrd3yj0&+@6?2;z^#^$m=z5 zq^1Mi)kN2_<0^oA$&EZ}`|oybS-`Fx3D~t!|7F(>ApcLh_T>chKkeE+Hka#+XKNvI z5^#7zCnAJo1DGtv=E=1Hz9wx>qx~{sI@5dbT86r{IqFdViK&3gS4ZVnyl>V zA|l%+&be*zWX~6pz`G+K=99-Lfy0a*A9R(RMmU)OC;RCg+H=8`gn_N=?t)LdYHH_zU4Vf z@)fuk@9dJi zr%m zd$%B)oB(luAvU);Myl`SIuNAVC3J7rc+m?kvp&@}HtC zCL$9l|1}G+lbM|I&cpO6VcE5H>0uGkJ^Bw{opxB3D#nQTud}_1B#!fEi~Y-Utp%4u zTA%ToF0>&mpm2S^)kf#hSQTy*@$Zz0VFSz?pf~JV9nb$kaZ_qh2vqi74A`ZSB<*!A zidCm{y>eUVI?otqZ@NBPKM&*$6Wz2K@Z>@)^?eP$Z$BMhGz!D?4*;EEuc?t;A)QuV zz0zB&y_#^PaV*L0L+3-)RJQ*5{FW5CJ^_}TLs2ff{xD^=T^Izd0NAce|82W2$gXMn zlx2T_LW<#Ii5B11KgC{)nYgcGabt0@uo{G(lW(2?rTAiRFy*razPv|Ic4B#V9FG_{7^-H}Z942Uy@6 z&K|jXbRh_OwBl0#*x3Ti-AhNM^l9kibgXjGOaw$f9`P|nZL?0G-p0Askv3Fz_mMe;|?8?a&pVa>fbfvXROai(jCUmb>WA{&Ezp79YOOBn9HhDTm(_Wk| zaTZisP2#I|uWK3!Ps(##K{@^+P}WHbv0~G=TSf-?RKRF^&gC4>>>G^@l^e+TvYF>z z=(5Oo_wA;V`p!jXHT%oQ z+HBK%n{i)iLZCMbzsT_*u^BLC3$x-q@k&>e-HUOJHt3l&(At@gLnGGvPBJ%>thdpP zqy@4isX~P)p>(8g1uKqJQ4&R9Pyr-+Vo zl3sA)#Mblq|Ikg-{iU0hO#yV%AOAx)&HlG;I$+&tSpcVOBw6J9L*LwZA^(aVjqMHm z$%E;5uj&D&t7(r!KDMzIw2&F3EZe}ik;7ICprBE4LXKpH8JELO%()+dLpZDZp-`)_ z`JKpl>VbZSrr;jsyIVHl(etahu6w6gCpFF4g3d4Wb_3@hElRn&+f5g1MW$Z#`pH8d zx;&ccwrt~8S3~61vK)sQ*Vm3`%@Ju;mYk*4C=OX2*_@|5`%GO_9qUmd#Zp$cTgc-R zOCn(2m{0WkRaDJ`iliJhwdI1)-byReOeqIv;mQuJS?wywtz0{R8jmRN_!?jSO!MKu zZF|m5)C;t%u+QSIuDk0blC@%0Qe)G-_5q{un&G(W7T97;Y&ubcK5wo^8=TEOV?*M? zZ^<7LOxZfByt6b-(AgsjV?|=IhNtrfC=`DM^1i1Dgk)Mo_<& zcX;8jn6%ben`2{W8vg2@8Lb(NheuQ`jloFEMDH-Bh2NtKkzlH}NP3@JE!?m|Rn3T7 zKEj<<#H4~;IKD#hGj5QxQ0tYgM!#!S6;xCN#vSR%9+R%P5F#kB=O8F=l#S%+zxS>y z!p_q+uHD^;tKRO8e)tQjMeD_&NXA87vNc1Hdyn+mv{$^Ujcd;H~g*0O7rSAJb^ z)!WJiHS%RNQOPr9B<0fkPwF{XAKK zk4Y0YCEz^?s*y}c1K`vAE^uo;C96@=&4>Ff2x%^iFNIGL(pmEP6-7L!R;k!jo>^_TOzHZ zxq6{b>dM+;uKf|L8QrVEjX74t3qFgVa2Plfwd`~YUlN77DjioatVqXBtHsTTu};gi z{PY?)bgmieN4 z5G`GdmJ|<{_G#4n$dND2a`sY`|*9z=fnF%iCZI85O@nbcW(unxXQX-ok9| z`)7=HTg{IHL=MUqW9~36HH${~@uiZ7eY&OjW-UG7~YVTF=cl4`dC?% z_r7!jl#Y9Gi=T;NV~(ZD$`UmYu1a0)91^Zy1-)EPC~W)1opLhf%?cn6JL+5M_0I3j z+8Rswu9*$}II_pwb{;>z?ss3-uOyqXU{Q11l|Ri`4EG@2C*+3P-9I>_N=m|{@_s|= z%9nc_OI@&9AGa2E7V(VM;${(o<3HDg1yu=*i9-_}j?Y@}_p0>0AVc-iyB&9&dv{sA zi@0HFZSCjElmt?#Vn=XTu%@J%z>b++tkJ}#G280S@4$4A+Y=Bk=cy7W&T=DEUSTK@ zviC@}+i02wls|)Ji^^<;s+0Vwe73%R>iNE7=;=WpK$o5WX(GV~2wNWd_49;p z?G640JB(tFp@M^p*IAvWc5 zPryan`0cYBg((DXPNM@$-wp&=-y4`|or`}zBVPkd%lj!94HQ~)sPwV_di0WsYsAuF zE-sJUIjexhns;v240x7}ZqWsC{H{L4!p|1m_ahabWd7q>X8hZ;-22}=%S`{fXE|*R z4S1G+|I4#{{J(mZ8SBZ90nhU5|K?c^`L}0z<-a`3e?7_m_AF=qr)N3kAJ1~#$bWd2 z)6|}FzQ}NPxd!4lTj9fA^fm8BCLkAQ)HLTPGaM{oNFGAFg`pbtd-^wC5=}UWrsnhp zeEl+oeRi>j1+J5LtQqcwulne~y&X9l%;`@`>uaQ{%~jQu@27K)zG8~Z7SxX3CX9ws zy6jEO#uxI)*@JW2157vbzap)V!RVL96_Mbnx2*-NDb7%lhYX=E}{~*L_rXwcg)+vbmlS{bVCh=_AMUC=^gM_P+KFZyIo?TA8axu zh-P6_(nV-8SW{lr25jB_mLoy*m3tCNAE<%c3;{b=at#M}Jes(-wLjjL+fiqaM4v$| zf7w)>kbdqI{qZK$pG|-n{G_TxhCOR<%K-+`I^hLvSnQ8K^kR2Wbk=^Itp+VJLqF(i zDY;j!oo%x|^O()>4$9MNJ*$T`t@juA=^L!0LcUUBBq!StRJo>{|9+h~>ZI2Q$zvZf zDP{+bRI8}sh7Jx&7>0^lvaW{&4Bywd7hID7zxYD)Cc8e(aX9(lOO8UZROvt>E1jcs z7qM5lUSMQpIS0(jctNwKCq5j*SYd+T-tx{>i zYJ|^52cc>?+b3!|t&*>TmVJTwB5dS+PhYAeh}+T-1-jn@u55{+Q9XFfinKFIyG;qz zQ5*A@XH7mq7i8MR>l}Pq5ODdq{fACb!H=yhbnfGv7EJo8Pu(aaK;x&_tpt?#P_0k% zl*)p#V9ROD!bzPk-%$Gm8P&ksvJbCCj#K)c-~BOJsOf5Y2+_3Km;StN&b;!H5$Ph$fbI|J26ug3 z`f-xE@ad8Th;HgmX73B6BYh6{{O%8@ORReKi7!vvCNz{KpLQh5U~dwP!-wu!xu(^^B$!}Z{}jS%q)dN;&*qpek%0UEV*{Xy$I60 zX={fm(!X|m@@6|$Z)snn-0D@T!(q(Vb=f->7>lr#z&~Ji6pc6)=V#J0i#b8L2+<>y z0c7Z{sSXyP*sCW~@#{Y_DjCoRGo+o3YG~ouBFq(|tyC5Uj;7FPv0{dE`>r^S>c-`7HT(8)LYH@nCU*=X}Uj!-UGp=0^%}dk~y; zvD9C;+_UaXNtoZ;RtF19iAT5U>PDm)syLl%te{BReTj8mFQcfJ<;jNX1I!p?Wgxg! zd8QwNk9#)=Glh>WY$LckBL*CIK^CqLQ$0nDwFL^h?!Atd8K8zOTO8Ul*lo+Z;91F6 zrn97XdShmDiR#MZ{xu6&i_T=pT>|GZF{{I37;dhI&}B}Lr|&bh-#!`-@pzov-}q%- z&Cyy|z?m23WcPM;Y9;rPfI;wi>8a0h;pu}+{+*kSOZ$S#0};4LiByjQxF<^fGvBao zra=AmTEBW8NPY$|zTzb`}X4=}MrxlF)PsUG+V&6;wZP8P`S>*?0gjs1V^+s>^2Rth`+ zr4)AlM=8voc^2H?a%e+F=$ho&XC+#G+<u`>XvgIQ$BA11axYIqU@6_1rXHrQFG?;VNBYC~NxP-gPp7xEy!T(RWz6P#i6%Pq zM4l^QJAld0w<{Io6ULuIg+XHoa*~=1(=~b?)+lN54A0rRNq|*!N6QWFBn~*meF@h} z7dsVr)b?cg&8=oAb;AkfZ-+O{_=u|Fc-k!mKm5Mxem^wVB=)V>`d2Hm8pgk+!h*<4 zsj#fNRL-)-msNtM!$?8f%5#$HMaE>xy{CyBdIO7G0f{F@_+f~YFxVbhYj(|{wg#kT z7nwWyM?Xzmso)0rU9Q3L;euDSa#M5TUx0aI<_@4sqr@*`-oB_Hr`vZKnU*Lv9S=Gk zvqM5bdjfPu>5A)0w%}FC$d0Zz9yUlSo(?b(PZKOh1KxU+p6Cd@GdV6)eaMz9rMaPH zL~P#lRoG=s=@9AS(kvhsVf%Zh3N7mx)v!fev|s9}=6YEQ1y`ge87w5;>2$xqk~m@$ zBy2PumLgEo*&Rovvh_|z&)%5Fu|Lm@T<&6@2BM^%sbL5{+dWaR8$PqkFR|c`Kxe0> z>N+u?cP@eFy!C<2;uQuL>R%8l$oqg#rVrZLtYS*yPiI)Z5Y%&-FQZaDp9$@^<_>*b z>uG5pL2e|WII|ZJ&!Z8T$aU>W##}9fOhhZJ(wd1 zGW~4S!PnfBtZJ`KrE7=`XUFIiR(_9r-4MVe{Kn&HSf^_m`7Nz*&EZJ2c-xkK9Cy{cUl&10!m}HQvJSD#nw_VI2@UJEv7CwTk2@s+o~dSGxrF- zr(g$+((942+WjP2elJuD*)ql*0`ol;_JL4u^pWGEk9Qx=nOs|^-UA9TOWVN@*bWq~ zjX8TBVY^rarl%M;UW&Qh+KFi4IUYQcH}=l*?5Z5CqZmcRo%ES@a(+ZlH8f~g{&q;_ zw`(fU;2PLu7MwHcr13)_w?z_aA(#@&MByeL^-v_ z>Ct!8sDfp_e~fJ;3Wz@;yh01u`+E&F7Cset^H)QcW_PEoZ;fp&+o(ib;o{+w_>DxV zjQq7-n{6V_oQCujWeBB}73Qrg!DgRa{4brt{!JTKm#oE4?~cg!WDS1l$O{FI8B!5u zT6RxOf^v#x!ux&FPj+W%W*gYkD-<$StllTDQ?Yg4ysFR6h);4H$N~kB{)|9$oVos` z_5Jj>*4Ib*Z>?{$0EDbJE6T2Uk4pCDu43~q+laPT$YZijLqi{}t-C-y zx0*80AB1J21py^70a_Wb6(lJQlGNjX5PmP1dKb3i} zE8v{Yce>ItGP2=rS#BxUAvm$fo{r8^Px&c9A-^(Tsvl#!3x=tui2EyEO#$yBeLlgZ zt9v8+Q5#A*9P{bcdS!}cfxbUiA0Hw!dxlD(yZi^*+4_bbMW9nfY6TO!SnjhN@^u5>fLmF7zr0af^XF;#gg^9 z_MR67DTWFs#|E-*o(^d6_^)3P8pGJUM8r%~#wlMjK%0at(XRMMx+L|o6|WL_$sMpI zO+hC-e}v8o$ha*WYOcZ`qzeuEY)Ufrrk?g%J#|e&-(8E&Ydq$_ObbK}QhnsJ&WVyu zc=iS&lV(hV!H2p>12*9$Np*Z04 zJE-8!$a%MDTqtpu{o+wl2l%>*%=X*$!Gkwi1G_aVnz6F~1qXgZTm-<={>!raqZNPy z2S6_2z;dTrOKPDtD7CR~-}ZtBrqMI5re4kOXB;eYi}Gx&MtMfKB*ru47j zGoTh#PoNvnOF!5~7MQ!^5LQxT+})0znrvEhzJzl-=d}*U(WXy|UgKUi-LW+UQgE=X zP$Xg3k(KK+N~Yf1l=l*oJ^k}UPU)84mA5?R6s%;IHFamjvE@kV`%1cfqhO;TV)qpU zj{)~>iri;6EG%Pp){h4Nh63ODzo5W>F@Mfp8Xx)m3kvLi2?Z7dpuqm}|AGRaIS&66 zJKl%6RKFIsjwr)HjWuW0n61;OvzhLL1PJ%HTDra_@x+=W@)~*L0$v*F>afUFp33pn zTQ6J&Et{|7Pg}6~lU{?GYL+fY@7H!^GHDYepR)!D5^GfL-Wb7Xd|*(b_ze2okOze` zo(auUW-locjmokdRVa&t8ZKN(d!&ouC8ILGuVpZ6oX9YJRtl|V7=9!Fc{2u3{_r3# zKLU|2on`OaB5NL2BqgyWc~)sL>g{BVkd6dEu#-_`CzCNP51LcX2UF6;Da63ItT!v_ zw(GS=&%d&$28WO2hFV*b!IP3zud#dKBg?`Q9c={&Dhlz)fMfQHIQ+KRA9Clr5{ZuD z)p1o~Nn_&i0}?$lk<=hMKNk%d51>Br7z#vCM@-_YbW>@)-)jpBSsjS+!VpMgIGHn# z01*jKt_Ee5>b07L0Q)D4cO1P6-iN1RclGkAQLXXi9og>)N%U&r4ma9vXZEI^|?Uib5F7up6g-4D^%uRW<{L%iKWRO4 zJ;Tbms=G0T%S1b{&n4PMW5pD zHZK!?kAG$Z$$mEy<)3V|M){XE_xMtqt0yIWvJ2bomm10G*wlw*<TCK}SRVt0tceb^yT!d2}!Q_^?b8V;2}el4cm@We2z@w3Z)@$5?F&>JA(Cy_fT>g#_f2KNRDmkXf>&OsOj zST<dj(K22lCB@>Fz_p!Ha%giLnH@w+YOc>zKEFAvjSRJpA!BKtYDpFt zgHK6?7*c#^5zU!)8%OhEQ=h83XtBLY&!o}3n$nxmo>S_e;Ko3*rFBMn{;K){$RO>aMLV4o~#Hb%>Qj z*6ctP`p<;?*ThpotpF8=wPS++etZSMYiAMgt7W*x4M2d(Pu<3cYB#$$p>DO~a&tym zKDWH*2;N~GU)#O4VNU_y&eBT#N*bw80=khTLkSbz_FT=p$OQVjn*rF`Gt^J~82-pC z?#-63oki?C^%JhPZFQJ|^8?u8hvK^|!CFTVIsp&Q-BPLfmOWX^iwQ^QTJhTq-FW5S zAH59%1gzOYh35<%{P;NAmKnIQMcfHP?0W-e*eCD?>^Yavm9&!~W0p=cL#&ps>d85S zl{Noo+I~xSoGnY-q%CLhK!-u$w=k`RVFjU&{ExKmhSFy;yZ85N#>;zegHuo9!Yk&2 z*tR==(rYo-6O1HF-Q;FluQy*2{O0uzd&Qj+M_ynFeK%fHUsm_hO+k%!hWPp~ob(=e zqrp-kyg+5!pJBq;TL^F5eZTPrZJ3`3=QA6VT3-x4b-DGC6X7)$EK`~^4T@i^WNRbm=x;X0r}~Mt(5j>N z_%4?6s-VmX!vpfT8Oj6A6mJ!0k$T`M7EpnLD_WWzM*^3seww`?v7Dk5tr-yuswI^B z@AOrwE8BQEX7>%8R8hJY$+k1)fx_p)%hi1!{G_fSdD7sSos<2&^uf#j%ddk2#T5vC zcQ9IZuQ5N(+;V7m8WB^$vp9+CU9tcSH={qE~L6t?8WN@k&k$e zRD#XiLTSr2Pu_&)PSraVf^;Z|gBE2IN#%rr9ii^mXA| zHum=2(|IbAHguOY!PK>{0$N^<7`QsddT2$)B?9aH^=#RZWeM}ISpXA+m6L(&J(C(z z@faS0cr%rE6n*Fe?DQ}+G5dSJLMR#U^IWUxJ~_QP%;k+-BC9NMu1bdR*p9GDQn(~- z3MwWl&3smpuFAbV^IDyPhRX{2V=|*bCp`4tBCF`*G>MceN~&2&_qD3Pu1fw;@&j8P z4xpcw|7jrArQpwpj>sr!+i(Gkq`qcHTkLzg{0XBn6WA90gyOS>2C=P@P`3KjSIrx} zhWpHUCuvD+9?`}eeKdi|0^OHBnA0)^W7t-Q%Mv#9Zo8F(nrQ`-{C-c%5e9{=4H%Za zKwa2hgyS~?1_RDp@DttmzALJ%sye2;;4nm=wQ=(*Qp9?yS(y2b5SvxyUJ4}CU^Ne+ zGT-e`42xLDtUpU2ezZyBhpF<32&ddcV9d({bPVaL2NA(uor{@?-q_hze#o?^{lu?+X>e(EB5m~1sFM9& zIOvQS7^}jBroZKOWT)Q(#Bfrq=0A+JhwJQA#$!Og%3l03e95A=ZD~Axki|AFPp1r{ zH$wKcS4Czee`wW8{H|eeQJ8rsgBg)71x9{X%J{0NsQzvIAGTbvf)+;P` zGbZ({LzldB>2%VBcwt4j2iqz7JK<eYk;L5qW;qnKC+A zZ)p5i1?mVRq#hvhbSa6Z`Aq*^WF?uTwvMCmeSLBeoh}V%##C&#KwwZ~b8zX$$ ze>3G}O_Wggk`Il*Gh!ckBG5*!hYVh6zu`u9bj-E9wJ$YN?~$vp-qQw6L77VG*2At5 zGe3wo$_~xeUkq1E**C?At^((@Hd>^{KJ%~~6Dkpuhin;Y3`NGi=;urUQB28K$vb9Y zj>v4`(|p*BN-qbtj6A!~@-AzmGM=j~r}=m|6s3=IzSfKH`_QtLbj?e4B<*-!PILY) z0Wy234<&UdGX%|{~hA>UU_+lBw3v%F)nNphtoKKwe_xrDu^WKkPJ)QzFjWm`Wgv{T5L(K~vidPdf=3wh0>%$Jo5E_Ml{@C_82rAd3GHb_T0V@SJl?{vq7C z!R0kj(_@}>5WahrG)$AU(zOGwkzqL2yZzfqs%{`QBV1c#g&5*w&FQA2#_L9%9g{>1 z3N`5mZ!#+$9@95-;JV?|hacwPF2p*~E;l;q57#FaorHB|V;j~<)t%@pt$F3qB7MC= znu1)djFZ;;F&+J)sMCADR&;^y4#UWzdf!M4P0pnYm*Xpo6z6TmT|N~G*bywiSpG2ONU+!RT8t(B*9x87mE(9;9J>7|-)C!A*6r^&Ahz@V_ z$2qU5(u5m+lwE+HFu0EQJL>@_WPuh=$=PqHqH}2l?&%O7Lc{t^2HNhG2dKN*of>a! z3tuJo;A~8m56_?3MUy>OjbAbLC2+Md;e$G_zIWv@;SykvnnF07W+^HJe^KxpF{-ID z_?l}4p8TA+MA5TwOh!mcUJv2*x-al9jOX9`!Pw}qc4bTmqL&@2;1BLC!&^cveLop& z&0FTQ*A$nOY{)JoWqvCdA~Of!LDPS|4$Yq@*9TE!zdYb^{puJ}k(0|@OzsHY3LOP_ zxHE6(pM`AXX*?_$98OPp$-}@kVVM;9CWI1iIQ4$wPAd$<7!~PJS*;0>o=jRbxs8m* z_;67g{Xftl@Y!Np)eSpo{DU-};Q+90!3x+cVAXbS zhKO)Af8`Xf_Y-f3UkXUa*Ip|=FrsmgwpnW!fo(YkZ^%Qb*=*Cx`+RYZ{J**FV29Kgwzm9$^ady zJ3^F&psUu<&O4dhE{TGJHN2*$qwU2w2nkihz?7{}ub;ZFxp`!&U9h89oYT~;ITKRN zAXh5GCm*%>)CMbpt*A(u+}D;Go%2N8ZffwJvAFD+F3H>ri(sfi*bA}&$ET4t|2w}K z5_EvrV(BQk(QO@+5BJC~!#m{u)m7gNhX&br<8u+Q&nu+ktt?^1QoNNvhR3EwKGau>a-n_n*{-e%^Fq~SgkT1lg zZG@MHAvlg7m)F)cXaTW|ro!|w@-SE$>J214=C^de;xgu(PF@ZdKEIRlRRN$Z>y1n+d}m2FDm?jHEVHVG$XW8fML#%Cp=&V)w$k59+Hp2n;LD?|KX`vg7J0Kb_j&~X@W z_~bg-uJ;~>DU@}461NkpOG*wZJA2)nz@+uauil6Gw1cHslQ$7e!K$A$337XeotZ?)B z*?$`jXWWs~Y-o2W=#$yoE0r#}4=n$E-B1GN{uapEW5VG2Nw9_2E5d}{Qqt4=AGq&c zAQcCdJ|tLvZzQ4!XFk$Nf@FNmp4!9Q`ajIQWmB60*S1@s1qy}Y?q1wAP>Q=2cXt}3 zIFv$hO>lRL6n8BUg1buz1b27a>3u)X-un-{Gw)1>Px%;!k!O}EsK#s@zV{N!Eq^L2?Kvd)A5(I(eV8r{r?i&-@R!^t? z$c-UoF1A%wrXO-7!bWw)Fv93obP~`{tz+XKXwQ0zRMnPs;lJ_JCu2JZ(dRiJmF}?I zVrWd&j(@2$N>zH|n~kb%{SBU9_@JcxOyZ?NUTr={KCGrJ(bv}`c5lOVyUD5D!Ob4V zRil2R#SjK$@u7buBz@i?oyV*+b)90l! zEYQx{L<`QY+hr?+hP$Sb&O4t`UF=@Drv{E?QPQ=+APX|<+ZDG>WlG^seW%Db45{{zIHi(rRqXzL~il@=Ly$gF2y!~<5Yll`N zEvM-$x}f9C>Lm7_dE_AwrJi1dup3p=qBxoO^Tv!Tqe_9O#;KQS`4nc!@@Z;3+#B6{ z?63Iw#>5Q~b^?$?I?k6==kF^sm4c=_G7rbNG=!eW#eJFXihAV!A6HxZKzv?F*<4sm zynor)4gX5o-naa{(VOD1J4JhRhrrHP$EQ;UBPw>^Ujj7 zA0rRx%Er&+0{L=ResTWyXfHbGa#Vclb3~o%|A~u`{{!OU&2x5p<4}@?T*dj-6~Ftw zTBE*m!Uc6rIFwRS`IC(-t{^^Jj5KZW=O6artKjbg7CTEzfTuGHt1lX_ka9i_j)*N; zZEcaq1CQREYZ^x^3|h8* zg%17$U9H>*B?Pj?M-JOVes`_`D1T6s?G6tOt>zJw!(g?Y3A=2NdL939y|0|UkmCrQ zOW&~DqK{(dD?h4A!NvKVc=q?gF0?=P&@w()>;u#eon46>7Q=V^uI>o&H1DP~L<$BW z*H0EOSX!Ha1&HSVEK~caY3pf*h5zaeZq-QBOH*8C#@w~W==m)hN5vf-SZ9fSC9FR6 zkaz=ad3pmD9?s+C6a4V)K|Bifa2syE1y#`Fev-5s698cTo<+>Eh(57lb-(@B1G*b@ z3VG4cyl}~5+|>Ac{c}Rh=TdYA}w(BV8OA>`~@(AuLOK*aQwD%8flZjnNc_ZTicYjFN^B4 z1~&Q)x(@33qS-B9A?mAgND}AgbRjuuq#a1rCuUm06Er-E7MwnlJ<{yze+bRY2(2>Q z_QQVGWK5>((kvb{+9)*eazu(z;j`{6ywNiF-&;WQC-Njhy>eyB>Z+n8OMa%-^npSP z9BXtN5&*{(@ke5`P_D8eMTZ0F<*5YXhXE#sS5e}C_nM$V7}6)3Nn%C((k1hxkf1s?jzp^{V+nA?{<=rfNs=Ss&2h@IK8`j)$5tpVT0w@cfwq;>g?Ppu zfyM3+d7~#1)Md+6WZ&v)HSsiglT^>YX+OyJ^9m>}`3K@xH)Fhl~sE+!TY+yAYG-tySoT*)5d1 zO{dfJQ+9#DB!n-D^sP?MD7I1CXQJPkYCg;*po_)%oRB`I!U8aG6rwR+v)x(=IQi=Wx zPfY|!KJX`+97Sg5JWvGRXE*bI$~6 z^<7>=$akWGAQfq)&)PHrIF!%7zn>(-o>L*>uH8Wg+J34F9U5Z%-^Om6m6BA$r#$;z zm5323IN7j@5rV4`)^XD19U?!P zQ16fn%@foXjfA+&-jE=(FbT=RSQc0PiaWY)co!aHf9re8A@nU&mCFj zPs{}wh-vb0YT#BlIM|2%R?(Wo#7$M1k@8o}dnU~UyEbq(~?Cp;H=XSd# ztWb4$L*7|ft{Yk1FK>&&YW4Q?$Aq%qBeIONET6+`O;LfFv_cnBJ zqY`3G#eJEH30GBd*u)C9$r3-P-$Lc1usYtAyVN%EUuQgY&y$v2fLDzWz2 zx*b+eM>?ntp;gEDFrqa2a3RN~Oc9@{E91Zykk4c*YEWMS$-H)j7SqRz%sxId)?jVJ z_$CsZ%J8Uo)+6cT;(usc9D8Le<#kA1Wq%Pk7#psTgy-mrwhvp>uphOJ@u#Jwj(HOw z5N}0_C2>btmOH<_2p{ORP|`6&>H6cbjJD6^?pD*3!eSqTS@1{aUC-a5tXjH{Q9lXJ z&tQ|T?~xm6mx}*sm!|*KF5e=w%O=sOv|F^zax;G^b&IWxhYK#|Qv#|@A^1>gy1eP< z+^^l~a-~V#O}UJC)E{tyd}WF?*4^FmaOG7lCf5)}uZjlq765DL%H%XdKyG%uWhbB4 z3|mB`y4CKzjc&7VE-K+60j;Ff=mycLwk(Vujc{;nFxNMq!nLE6LIPX_fisH=m^Z{r zn}gK(X@5a`?@SetLg`Ft^d<|a`y`=EE11x{{0Lm*-t~p=WHAN z&a;>N&osvTCThlcm;n7E+PSl1kAgjNN<|z1&j1hYAv!JcXXFIoq;v zAQVK1PQmyNLynwioB&Q@&W=AczQS8LqYbZoKw*uQ<`bR6dqyp za!SUaBI&IU<(h%8n95ONljF+;ZDOS?!Yq+wC8%{ECQiL3of8cgG|HB;TzuJxbWL^k zx}D^Jrrs*JMmk!@b^&{c%_90I#(tP?gC#K0)0t@x)cHY9l|}A^TZ)tB=kH487xt^E zaB67z^v5|wt~7;ph1Hc`pG{;|CbFChT9S zC!Z)AOw4VAB-Y=ux(}?6&(l})b&lawNJ#CKaOb*1f&*W6RPv35S+!(^Oj??=)Yr53 za&}p%KDJRme;3%;dE>0xFo|>YPuSUI6m)@$6!zH^v7(9D*5mt}?KtDhtooQLU6WQW z-nEIMv-TruUqt)KZ^)*En|oU_Q9iu|oN|A-Pd!FN1^rWNSGhIfL%!nIoK2%%-UQz* zh=4buYLAcDi_~0sP<0oVp8Y4edwKHStbAd>_M@Yl9u++GB=EsFyjyh<2v|Ca_V2hI zn>#~QQtz3&Y|nmdM54_f_!=OH<5Tq3!jI-R-FV(Wd6zkD|G5h1N29CbmWzt8JT@W9 zkaVJxiSaxU}u-|zfbTu5U<)O3HDM#Ic*s62x&fMwN3FrRlo|I z4uoQ2FGD&vB~n35DFZOKH`b`yymSvu`qLXs#Cfh@zI%Qv-HCET@XTP$aU%7J-?v?EG;`R4B~F4{Dz%X?E%pOXhUJ00Qq5yXopF97uv8^ZJ==9J-ed_LXx;TY zxgr=;y2Lqhlh#OSgtS}PrSp; z-^48Bj_(n@pEabuYy`UCC>h4m0w785i)au*>PTi1H~K_X}d=Za%M47u@hq=IANe-kL58hr78^ z($$ghQsHQtQQdG?^n6>eI4$5z(~mel9avfm+bby@OZNGL^UMnEi^*)E(U=xx}4 ztESd^gEIV$#FlYVp2c3sp7WdJ_M!zgIM|z9$q650>v4~<#18*RsSa$>oCqXB1-@E+yH{Kf5iAAQCW#Hf> znW(eO7%0R)TwHjOSk<6`_dX=)utYHOt22Il3J6#GX97Y8_DYH0Xuqo43|x4%Q8Xq} z?>4S$HGnJh)CJ)HE4InieOv^~<$J+)0`ceIalEwe?d&fn;ywU(X|KOmorQW51uSIg z(~eMX>qeSrW=K*)K)8Sj1@=98g&A#myL?I@P-zj2BpTIjb*ke!g9sK<{|3|0adOt} z2Z4x_J5&u2!9uPt+?*Hk4EPGqCsy#i?zx9Jv%u-B$!J~h4Pv>|PH0KeWU83{q4A$! zp_N%EfWdedlH|_*5M+z%x4rDzD}JefZNd2XnUm9P>isXyH3kn=14zn@XQpC`<(A62 zPEEu?z1f6+VK}c-^cW0!^4G9~sY$0(?Nev*&1bs(3Wu=pu0`Jo&bfT%BgGgDByRI^ z)2&~by45M39m6)kXJ6-#5jsviU=l5J*<)!h@yYO9o`Ekq)zyP-zxs%#IhH2d50NSi zwmYG0tcQCZ0_5<3TaXo;=4Zx!y)SWnF56~ z6seASy*2nrbsrb1hMj{T&H{WL69o7xQEy@)5-frRPQzMA+s;UmBv(ExP|M6J)=uOm zpvK+C`OxCmr5ga|c1aNf-t>6nz4WAM`s2d+_Dyxxi%Mm&`?gpwv2HaQDU<)b1w^lk zKkNmyDclU(W%MOpM{8@eSy2}b95Tx}(ekHQ5Gt@^bS?E0yUZ91z~*MppP0S)em_YX zeKqpCjJnZ=#$Fm}v!%_FT4&KcntSoBIcd1kM-bI!Spy?oWoA^S!Bz~j3@wSL0x>mn znbe(F0ey~}ouRdT^#P;adlv%sY5Ld6X~@~@K_meQ(^$Te>|25zlRg>hm(Az8S-98G z4&SWKyAd&~#?IRb_E%56onM|AkTWdTYu6~k&@sBMFh!ILmla%0d9QW-==d*JE%&#R z1VX0Utaq_80VeivYo!6@P5Mduk#FXA4m`_@^PWct*H^96u6vy4CAH|`F4>6gcwGtG zZn{q^(O4ew=!));-~@|Bj+bI{rASf6Hsxd4LPGw>ebh{gPUv8$db%hwQ%vVX6>#4B zYBcqGo{CfPmg03rKd-<*-W7`L`R1^gK&-$?kmr@y{QdkEz?E-DiaI(ujKA~C-DrYOr#(rrE89+Q}X07b-ErHadv2t5z@B_fhi z!puyh8o`_kl1po;jlCtuBM`LTBq%$D{byNA7PVQJ+VD{}Xz2YDg{@f$fiEKpJ-3MX zjb3S|eGhNNHA1*UXKc^l|D?iw1>ZL{w#&@OFVFMSVf3G*%wu?ad1!t5`RLbJ>B-;A z*uZCVlqYfv?G8z6LLdi0Nxv*#u#=osg-l48B~eK<@K`L&j_vpPyb73je(X&2$md)3 zc&YfY#W`$PK_k}V=dbT9;U^YvTIvubT&IeL>(aW!3GflqV4&eyYx$(4WMu{`BojER zC6WHo(eT zyM`cfMH-Rr%A zIx4JvNSKEg{N6xve68{4kM=U|dMhcHn>QW4d})$OM2n5X`v{?wU$vNvr}1UufPUvS&r~cgp_D2{kR{_WnflcN+ie?;KVfM)Y^yXhaU_gv>l{q70|C zuz@=y(y68Kp@s+D5+u900}oid4230y;3l{onFZm{%^(p%06fRp&6R|y8)!}GNpg%f z748KQ{6_lE`mClrffg|Yd0898j*E4f=9TIF##>bG3VohJc9cGLVJyK0q~^cw{DRS# z)1rj~t?Ne>1zNn4cGuETrr7g;|GWkrAY)j| zb)0WLJIi&3#9vuTg{jR{Zyn4tGS&}{@C@X|W7B*WX)sLZm2H1{1{ESdwaTpDofh|l z=gwAa8fWLeOC}rku~)2LBP{C}{Y@L4M)vW$N}?}2ZP%VN2~KchCzQ7XZYcxrFET|^ zWY4Gy4<=hSwdz4rAK2Fwh@F7Su09!v76HDtnxQA zh!+ZoieQS*dWN@m*=w=H2{mv#vKC!;jTh#G9L_4r@PYQoSb*2wR(PTa>{gI2JEz6i zrI}%oE%Pr2_H7s_KW&Ky>V%*n5l2Gxko7&*^(4->bbLVump?_WmtFm77Fu?utHei@ z)0^4l)B&GFDOJKl`bI2LycW;l@bU zPiOiDPObh&$0xQv=exX@eD-Chrmr3k7*UG1;;X%w=fU4li(8;rLr|>WK?$Rt-nmoG zvkrsXHSzDKSh8VqrxmIL^XpCW9R-}MQfi;`qTw<;Sxi487Z`ZK!+rvJ8Ptf@8b6O; zIS(0vLPFg3ukblOlu&(&)%}zp{=-E2rwc5)Fs9qrXhKjrWh|OH3)TMDnwpGOvBa!O ze%hxoZ%g9M)N$dl+~T~kL_?K(9(pOdg^NE!+{y<9lUp41^yjlW-c@8Tc>s{7U1N3T zG)I1QJwMYqDOX0{B+UawukscQcmA4RcX-sUy@89W^DXsSuh**vMn4lp;IT7>+$f#UR1;0t$aMeDO$ao?d|6!jpUoL;nZIov}Iq#*5$Y)@`6Pm{8#&( zg`H1hhizn?<(*h3L&w`N6pm|Z>#gq`*OaFva0RU+ajM-+x%b$}rw@dEh6Zz_OQCiKSOSSRBSc6x zG6FQfloQC*$ZGj%=?r~vJceEgP(d0o-xWyBP8MYjTmaH(n9F?&q4jW!P%t8vRoFOd z4z`M|S`-Pg@y1O^W+8$&*sGsa9WaNA6vR zwZ)6=ebLjJoz#9{n!*E;qr030O(lchx=4+Pq#?qct$#lm_lZQ=$l#S736Sh`bK?M! zG<2g0+#^_?^F~I+hs~@}=a=Y9tN*UD_xk zH``Z)k&jYfd6w@+EEs?XA?w^=%W zD(i)7Mvq63z2hBUz??&-Ik|MhQzpxn+k!nbo2MB%v|I1YQwX^IIq(~|mlk`~L7ZRZ z7cs+wiJalw!JSE31)u8}N<-$4+r-guob2W8W;^YTT4Ej-8U(hmMny5^^{W_V(I>?I z*bDb1|4tsRw10?g!J~ZfCY`RM->>cnk7+F!K`p%LK9J)GYSEQAk5rCgTQ*<6<$aX| zd%L0i26+Id$YOTuX^a0}e=woN*JmvG%Ep_T94}3X%G+YS-0~%x)G!IX3-Ws3O=7P( zXY+!S##k5eC9 zv6h4>%S*`lM80jbRkj__iZnv+CB^c4EI10ZB31-2X)+XeN)cIXg?0K~;V;dGsqv-3 zXBiCegJJD@DQq>!BIVMQ7cjIT=e-|Q)}qGuAE85Xoq70_@V6gFqH3b6ECYZ8qD~6&kyV2Kz0TX>59X+Xxc*b4BdGUD$bEqk8o7|EQavC$kdA5=?y`v8}VEvNft zc@>Mnk3n>lY zmJHO|EcuMPMvC63URiyS+j}E5<_OhICf34AKV5lw&o6yOiQI1#dnOJ@Jl*BI-cahN zl>YT-3`SmT;n?=vQYcQ+m=k6zezV0RB z;8+fT7xOP)QmX{%(`!E_jxaPHM2>}K0Wk`?z1B(e+LcyJ)>q{ zw>~U11HUoON6<3RFAwX-bN{qV|D?G^R_JRvM(9v`*3bV1Z65Y40+CN@hWq!5DeKzvq zR}2N1*EF08=`{?yS=U1=a?QLI500N&cjL-OAEPHgd zkxC@B@2j3s(u)tz$Kkes558vLCQp3N>6f3@Nvg6cMV>rp2aB8rqM9QSbF=8pmZlc* zRnH6T7FHI_)BC6FMB{6l;cyM}m^`GQptID4NCG+$>7!{W92Lo`PO1Cc6ZUxY~`oS$xQ_hC=Z*J3Zn)Ay5M+lX0se333T0z;_^VFmVqMf~a< z;d{M~C?((u*fZ?a+YViBNq}e_C7Lp*5+l@siHxt7*k zKE|_e4Q}ewuOhNwSuU=Ga3&M;9#E1kotSEW#HE` zn3x}upzJ$j_!ys?E?V-rfv4EndjeNXe(9H7#xFu+Q zNwQ^hb|}YM##qrg|KUlzAs3IkFWTTd@g)4})^>{ZJ}WHIKr`=oOBmx*Ug)3BW{kxJ~FoVGOZV zAr%{CWKWcez!w&U5gr^Btpgh0#JWd8|0;%Y4^T3-vxMK#GurJTw&^C`cD;I(wjC$) zKm#&uU>WU@VRE>`!-`{NBt9`0`7|vUX3#q#TJ1nFdvz^fp){JndmBAx0M3~gT~;2Y zJ&*9fx+T#?Y;rP;{uM(IU2TeQ9ENTm=c7=77>lFY*vg`e>m~^z?10M_8H^F^h%(c+ zXs*Y%<(}UYs%S9n>>e^`@7|+M)#@i2UmnE2YoN(gVHl%170HhK>QNMtC;5qn^!Uwn zi`=^wkGZe2b~k0lPv4#bUi9xi>kPqAQm&AbT>1n>kdIwe3iSHKRGP{1cKpAA6TsVE zTb-BPL3`V>9DtpE?p?)^4I+Xsbwk8grmDi`!9}q>Ibi~CqM&Mq!otckq!XYZzCO6z z$fMlWHmCI}FRVAh*yR|H4(HnN?`Ql((%bHXJKLmN@l6d;Jlit!rHo9$mQ?9A-#_FW2oJVqx z(-Oet3?9ugmXmYo(&xLivU7Ebbe;O=o6=Uag>&4mUuE!v%0h@vVIW%bmF?C%+=Hu% zE#lZtmLd56Ux_;a^hi|l=8Ub;;Xrht57E^Geh9%fEqFrT!!3vRj#CtXks!qlm5EUTJRY78P>1T_w7sBvV@8^(WT5K>!2 zk$`9g20b4u6>lR?n6eFaWj;>sxQCW*9#Jjrxr{;Ou2l*l%l~5dI<5Z)!-t4_q&58) z!nS zW(V2w64AH{t`fQp`5}$_bg)0d#v|r@cr=AcLtR|HePPAY>aK8NJ0oG%_vty3uZBJ` zOJnt%mY_Or^@JQ0THb{%z&%xoCoSv|#VN0+#`Z(KUj>{d2hbsIoo~HR9UkHs*2X90 zeA5>#&Fu!m))c7oZPaA+W(F-sU}~J;vX7^q71rhPF%>!{Y*-BCFxD{@K@t-B=)+ir zhoJB^A_8sr;^oiXL;)ZBiCnsBX$b4OLIgAuQo=VmvJhELmBP8++7YjLN!`I&_{Ms# zV{LLkFfHvXKh}N&jP|~6?%&(b#CNJCLa%57+BpHYGu8QOdjHuY2tR!|Xo}V=^K$O_ z5!McS+TXp~R6zj6qQ5^}zZ`ztkUkJ<0xv6TlaW$0Y-ab=tj6^z+pF3*%ztE(cleY} z=zy_kqcAfo-d)3rsYDDr<dsH|iis-&#M7M$Q7nBUP)?-DGeubLMI2I+n z@tXH<3Nux}Rv?0Zsimoe-i0`kg#n)2K=(C!f7$9!b}GBj za=8aeYi}^a901P#_*puxA|a2 zHFWl-Pp(6+UzXAVL`P7>PljRz{bjj@7Cx%UM&IH6ov6?D%0yGo&*VPtnXSTT7j~yD zRBbz)(dw!j>rOF{NqT#r@mH2!GYHuW&Kxth0@lQ`Mp$h&b+1jBJNLn51di&-TzoMK z$LQE(nX-lh+)BYxr!|brzr8oF2)UR+EpdKU`tXvd4h}(lE-P||?PpQ__Kpjk(+uin zsl0=U=JGy&esv!km;D0Cr5)j>EWsUm7BpKaeMwT5YyS1{Q$Jx?gY(0nNzg46aNz7d z9?azT>skNvEVlaD?Ug7mG8Q^O2z4?Yj%**C=sVPDN{b4p`hA^nUdP~0LSn=V!b_*0 zA~2r`@*_4MQSNR&&%O#0dAY)|3FyC9KkMj)t@^U_uW&M@%^|_pPxfrg&HhA_GmoOx z#Rr(s-mN%7JT){pcq2hD45xCKy66COB$Uu{@IICM!WyOPw2o|<$Gyqc{MbVp)Mcn4 zv7Z%=w<$uywyo5ITs&fv1+P&^#ZXEx;+dJ1$bo^9BNmrq@oS6Hc-MHmt9r9q!3Or7 zK|Zmu8~*8-yF>w*zq7?3EL&Haf%DPJ=0M>T(dy!?!_0XneRA$tv-o@O@nh}hzp%fs zr*qU5D0{$}_1)jj2amhW>?fk@n%_PH(RRCNJ^?oUjvtTDcvg7KreF!ys@c~klxPh* z%nS7O!7WxjrWfeGxF>+z!IJapZrqJpjW#H>=h$3FIY*PiB~? zB?5H33p8ERhNmz$I=c4J0s=M z=MKxm_#;1pZg82KIrg!D+wD~{3OarC-s7P!cjehGXK(?(ysG+Wo@x%|&-Bk&=CNb9 zl=gJ-o6(LQsnki$gGi?3W*fv1L$+*+of*8H13(i(v=3SYl25BD!$f2Oz#|zBngN30 zmg%m8cq`{r5(Ps&B{-JFQA^8qT_65=#xDyC*4dkZEgT51AIn1r48irfBKxyqDw0c8;HBG2`GUTsB}+Xf*! z4-r1M*i1DmTG)CO@`8W{H_m4bPMo@wQIP;RJ5OZVb0zhX``?W!;{b`cuN_o3pJ#1Z znLPYBLFp45w&j89rNwZ?w>OYj&L{9%iqM(yngZ>}(o>UwaCui0__FfmQ(%*$X z-`I%AjQX?4nH%SS?7eXXin;^aGXMkIl9>sDy{BykJgUo}JdZ-K_n7}*_TC_G&l|ll0Hk`=_FHjwS<6+hl>z7*6)Jtn&n!t}1iwfY?;(wd@pj?cHuPo6I zau|YtJjK|O)OMUuV!Fy0UoX0DI#gJ$iEbEP_&^}9p}+uSch|+iss6f{Bl2jn9*M!; zU|)>yL#?z?&fiQm5EXfNS0H5@`5AXnp|#_YHRcO{xJicnMuWLo-5fXT(%t>HP3PAS zS1Qj2&xg(deKG^LM7PeL=B2lFQJ|rZiY6{MB_zmR?Apufb2mA>w5ejRaokS>Sx&t1 zSO51Gz(yM4U_PO_7Wt(i+)#0dy#!4#NQ0!vU-mV(7B&epL5*ZEtwM0_7r$>ZVFyr?gZ_w8xiXWT<++&YxZg3wIDTWn*yXu971Ph-3w2lKQ=8$Oa~VBf@z zVQorJ+(bcP7vZe<9;u-`*K6T$6UJLrMf6f3p?Dt^pnKQPCYbPII$TP)y^6n1`)E~9 zK?g$k@BB`3^vwoHl@WYOKqei6&yC~Smcsrt4d+TSbq_!keHK*=6&xdgd+|Sk1g$6I z(n3;P0g@wfwsyO;6-|1`L{P2{7ikuTkq1d{#)(GUhq16eQcUk@y7aNeh4D{;~HO1=Lg{}o%?APlk8t?Iw+ zz+1f!!RQD{*&vCClF*RY9PaHRoH<@VcQirPm{G=1f6S`ox^$kyxIs?>mUBSb;HR;c7xo?r=bAskh&Wwb@=HqVe4HDkdWEq^6nNmcKoN_WeAob zTwpp^%3cqd_i2Se33R0XGl*7QGDY0uYpztm)3}Xts8=z&%6H4C%Y!f)!WnRF-;-C; zvdVxc*^F*F9yoZX+CHXR7X8CmMoVuvUiN*wl0DbNt}9ow4mBJINU zWdv4|N#`(mIc>SALQ>V}S?QIz?|0LN&2QE2E`%?XkS~?WhcV;7@ zwTu(AYvt+G*EROb#x`mmk|Bnmb6MMvkEbMGrBn2Jg6PXvj;z)-7%v6^paGitZw2>CL z%RdIV&NMwE^1-~bdN6!~J#Q}`A0&(220cxP-Os(#;6CP$<>lYKJz76H_D)G-rf9>N zX=6?xe=c{5DhfUi+xhuNVZ^B)U6kg^A#IFXF3$@RZq*6Wc~|nu3d(3kzpU%!T-yer zVl|R0MDDX73-Z)c8fn?f%=l)DKLW>XP{StW@+VH%xp`@T$C7EJ@D;O&Ug&_>pIrVb zRL~lLAG}oU0lsMG0Q`E*Evk``+C?5N=6wz)`mj1%qo1WD_seJ8e0?g_M}s7DIhw@B z#2$0fHlR9HAxDrNY7kUg-&wl75=|S2?yFeAO`ULE{1{fv5hV2Xk=QtjV!cU_>`hK! zW?9vn8~%zkO8Y@Et32Z&f~E97(Ho`4z!}h9S5H~|QT5e)1&r$_vu-0!AoKdMbSa51 zVqdFaInu9?JWlTB$R$D5>^UHNUe$ZOg&YIs`nq!ibL@lHQ{S20uPlfqO*f{b=?H}o zM5b@n8yYmxok}r$2jW|`j0zt2Tx|K;$>029KcPH5pGTkeWzstIDZGB7y{>z*<_?{P%uzJUtv>qVZhv;R|u&FPvIn!5Y#3P zd9FFdOrdVCx*UbZRs2Kkap69{$I&XX6t8bWp!QOP+pY39jMWY3U#F0nAOi^pu~3s+ zv+5MPuLk~u+Dk_i!bD=<@c`qK2mgRGh%~;Z&0~zr!Br8S7X%r5V?#g*>DH@d|a2>gd)b zgQ*oz2;Ezri-Iro{9L+eb^kNyo}OP&rh5GGz3|Y}kkBxXRLd86soP!NmfDRLP0VDl zTn}b&!s${3?kOLgYRZ!r1<5Ob1sZmPLx2u-9*zr1I`-9p$lffD;R1n^4U+OnE0Y@- zJ*JHN*ccvQ%PZ_?dRFVo9hbTBlqx9Q(%_7@!4lWYSSkbbM72XZk|S?xGniwVpJaA9 z)53910fdZj4tPY0itvxsXGsyISlR&zZ%}-;_bhj{J8$pL5jV<6<^U4P=i2YL&-&lJ zE8!h?W7nW?&YK6v{naxKYnSzLb$gyvnUoA$;sDTsdVRgk#H%I26Y~lDA8WSW^zK0* zhy*ba#&C~We~7@R=ygi#W%VBocrhQ&s~E=%>WIaOhd`Xbu1&18toPg;rUMfI^F6L@~A_T_TIe&czP|W z_PLo&JnmI>StXcr8iyJxUl2*JI^`Jb@bFwiiiGK=t@?XYYJO_M!5kxy*$SC z&vFU92wEGWQIKiXC(bwV&m0;$Pd@Qh*}DgSZmgp_=~-=+BEFReE9#XQD;2%!9|Heh zc#g)XpX&Pm;_%!_<|a{C<#XeM){CW^!&jgW!e^{LXO1!)unrjoxy$k(}KrsI*8`1XqJkin^C0#owr_3f*S5u zruhq@hHQG5{2cE?#W~v>GfKUXqWP5h_;b8?EScm43N)$S4;~~hXS&(uCYZ3Gyjk9ay?Dm|`Q;-_@`LdUae6kER#!QV6PO?X!?)@sMuB)ZD za;8Kb<~Dt)VKy!Rv8xrcja7_U>>dSXE1k)zyE5FX)?pzXUS3}|K8u{O|I5?Oj(v=^ z{kuJ#em1rgO(NFxuz@37qC12U9XjnKGJosIPyRT&t*ulsyd9D~MtkpYdp-T74;F3I zbU3kSlQ!KMhY#lyh^<@O5FtS$!K}7R$-6N<`uS#20Nk&1B|RxCp8){Vl*Y+4v_=Zb zs#_4cI@`KT1)W=T%G^ycKYgPMbvU4OTu8R$$pyKK$Tk!S=KFoNv&lc|!6GjwsP1zr zFH=#Q6|v!JR{KV5DQ`H+!F1IvAnii3zYud9XgdqCKU984aR4JfWuGNvrdU=LdI9K9 z&PX)hRdWJ6Nb9le3UVp6_tKG%=3UT#A|3f*h_h-@hT&}Yap_l}qRwpK{=B^?$o-#M z01P?8d*(=+dxmTz)yq6wgtQuMRJhR4g8GQX7JSWyI(8E18&mQps%WOBYXRJi5>&4l zY`>eV8t??NK<7D*Dqi(uUSCUVaG&d{1Q`Yp zEQvJ6ZAH4LLayD4a$v-YP&^z7hJSInK`u@&@tRJl8AqO_9p~ zY5Sb|N7myIq>B7th4dOlLD3-FcI4rwixy`mH4~SsvcGp~;!R|n3&IF6tW?O6t17TI zLit+w2H>rI>0j z{OZaLI>wQruF$ZlxvkHlZkP+4!EewFF$ta%-*+ghh-{F!_vw&)q_x&>;Kh9>-#>um zSXUoF5-BOp=};N%NL+u|2egpN*C^Q6f*8xW>Vs-Gu4Bz-fN(G<1_{vk|-I z@*E+S|G9L25f;1RMc|42`6pyh1hk`#dz`55Nmbwd7CIj7HHTt_x%4ib;%0VQeRoIM zra#B=hXxHH&qW+>LFTTMq%k91dBSATQyu{xGVCZgqqnHBN*!u=`tae4{=4@66?jcP zoyz%|B2fUjyTsFgQg@KKJYArJ5!Yqd3L&xO=XSZV`@Av3g7W z(gvP79!NGZOx;(P3rMmpE$PFe{;&^wKom*8{1gC5?0kR1@Vp1x=SKw0kDU6isKuBO zkn~y!+Y=GO$nZ=nxdAUVgag$lB$ zPP;mb?(!dc_`?6g+k1t>-M;VMDN3}cAt5@07`;b}=skM$-iaWh^XNur7`?ZM-bpaQ zD5FL<2r+s$dY?7VZ~gyky&La3*75GV$1(e}b${>sy3X_boH#Jz=Yo8@*dAs4*P354{+H=QYSls!N}WrKPJ{@Su(pSHO4MiTdfDlS0eZF4h-7aZIQ16 zB3Xl!CJG|i#fqctTLixvHB{F}bDF3dLF#mS`NY^iNtFB!^BJ^Ma8y^Zu_?B7e5XoH zxL+bq0D8-I_#*`wJ21Y z_Hn4jU6^6}CU6&H#@e0It9dO{@&&1y_eho_{3}3(>R@{csG9!L$;q8GxEgMoWCNRm zPpS5BdX_7zH|8tH2oXVrlA@%@_P*{^e6swS)6F=k z(_w*^dJlih>^`zRJ-}ak_)W|nk8pT!QdyIg-8c+&_;#g-#HKs0n7NqP&Jt-E3I@qd z_=XA%i}9)Q_+f9_0Rs!cv8Cpds1?3kuyNHQ=#fnwZV--@^l7dZ3xda!GQjT5B+1x& z{k*q@uf>vsghfSCaHXfF-fNA&nbeZnRFw3Egi+e`Ro{yR!??6GZ)KflZVv~sO4;rh%XR_K3ZFFbKS@xznP&L*+ZhTv52|wovZ#&+$n9zZ zT377f4iHbJzWH#Ta!PU5tIYLR*FbU(z<*l%g&)+LpmER}B`zk5?9KPP_xu)Wl5zV? zr`OW>HiB!A1HEea0Qe<+vvmq3PAbpz5B?0jmgud(ZjqQ3war^Rw+GaE(m7_7!-~sd zZ$3t(FSRHMNPKrl@u9YZ_JeXwI5~zEfcQG9?6!E0Xg+bJ#2ua7un+R=G`lw91(u=B zsd79|@G}euk7gJak0I*U(2UlZy`d`_P3C5S__=y70=wif-2;JSae9BaN^JzYqD zD+3(v-uhqinki}Anx`0Y9W(o($1a5E+bJ&}(pPS-_DQ9Ex;u+@sC10Ykk?|BCZM^j zn$a!$)ZMG_lc$s-`&uM;bLGH*S=qhpaP2#K7DA!^m@rg1YsoB-sE9lZwznX9Kv04CX1S!LZA}qFR{teS%i_6|nOA~0sIKN45-1Pb^Mo<)ijH+nD zfJ;DqgYz&q00PumC`SiYao6JJ!RNVA*l2KB`*>YErq8_wEp2Xyb=U|ctdJ}{{_S3a zx(W#V)MZK~oXJX&pqwr{Mo$i&&Ja{qlg)xEGuR2>xt<#>6g}evWd`9BlY3aeEuM0L ztl=U?K*la`NvTYsp^o-%%o`efCl(aWc1#s~ZQ!x|*qBaMxJjjlR|-(^76vTl0Q(t*CHytEHZu5nx zD?ZxM<40HoA(mD}oPFn=wMv#DW?!{lWS-SW`O?OD@l@F2(@X*YcU01d$?clC`J~pN zp6Gf`SKv@0BQ4Oj$F5~s;Hq+YjnOe4@(qTGh%2F?N9fz&z_y_K>=lk+<^r_qqrAt` zk`3ajOa64A0|`1knv#SJD%=N#vBXMkb8~G6Ly#@q)mI5PhKXyV)2xOm=!WnQ9yHM! ze2pejiKA`uc;470csaQgGu*&eSU5-n_U6iLJ{c25hJw~iaVJ!=)sJ16UWpr88_y<< zs+p$#$;_Zg{Ib&-L?VKd-J1`C8~u8M5Peleo`Zha%p+$Lw(xtNBCaFAf|wno<|;b4 zg3zi!!Yjc~SB7DJbMzDl{f9u;Ml?f$T@y}44a+ruTmk%yQs8VRWlZW#KAwlD!f?}^BL~-XYxNL&VF&rf#EO4vG$*T2oO8l1 zGp5V@hQK{B*Nbz3d<2gFL{Kampp7i55)ymO4Y#~Ass;-)H-WyW}`p( zf{UAXx_`1SkA7BtEx9Lro*QGQby_=^)#bS}KCGgAxd=bmfQzcMho#g-HD5B*AaeJJ$=S%e;ZigE;vX@yySr~`FqJ$RM5oBc zs~{cE`3v-5j{I&{&H(|)^`o@GMOO;$yU6{RqZ@`%kA6XEL~lvB`cD7-=v_=>8TExg zSd?9Uuo9Z+(c#s`_6p9G`9t$V_R52G-c-NlgfP5u$a91lk$K6Gk6I5?Y*t?j^gZ4w z`D#B$vgngfK71Ou*)O0WQIafd28#zY@6)6I0*2~ImXAgN|w1<-`6R0{}GAAwYMv!n=V_Q1K2dxHWm?sqr30Pm4H z!%^?K*nS;RUpeLD+QZxFswC$HCdDy{ftlB>GKv8l=f)mqxfHjq^Kjhj_%I1=u-Sh7 z>UgtFgE!a1Y%^S|tft$y1Q*w*E}?)uos112x7*0Oqx>8+C}lN1zAjq`$tW_MgaC{q|o^Yg`9u421`?dkHn;258Udk(v z49#TI#}gn6t~T&ZdSWzoYtuK`o_?0$e&KrOKVN2=2by)v(x*adLl|f|Kd~6l+L`0~ zCmgXlkKG8vwdSL0#6Fz*=e)z=ThO6Op5$zOVSf+2`F?pt)j-Vmqm*M=zPQ1anM(=& zW%GK)fl>%XmhJ+; zzf#%0^#2^FFbxW>h9;|hUr?@Z_-k@hOZsOxcSLJUNRR4F zp&KeD#N_CB)+#kaoG=HIG$hktQpQV77fffDMM~M>zIB&kpZu87b)VB+tKd1@e7ls` z=tA&1k38L#kGB|WhO=JO+ejnHw?97pR~oEP~_)zOBPO15!BW**`~eW~zd z##~wM9zVAu$}y1$kK^b|6Nn2ehfjO+o}AvHjgr_nMF{SF*{hXNI`XUK<>2R6UWA#B zN*}VCBCXFFj#s1mYu4wUn5tIWVE80SY`+v;y;E*`J_=tZ@KLxIN5Teyz0iW1=zELbOWJ9W7XK~vgAE(d_ zbM1xQXi=`&Jk0{9_vdO>pcP?77ezmjw|G+~m(>*i4X^*$7pzll!aTx*yQj zA%;40wv*nN-n+q`wpddi2j*O+OzEP{62ay#81bq)jL`a(xfnA9Y!}2NnYwKpGwfs( z`>g*}tL}Y_3h#BF>B_&gccDmr_h0*e3FPHE?aa!}Lh>-RcTX>HQySsc7XqwVHfk}k z)ZbJ8V)Qi_RNe=HsB`e}>p@OR+F1w$CLM z99C!9nVfh@TiG=DnTCU}r4`Daq8Zeg%N2OPucQR6JLFU!bH7#RZn4)^Wn^Z<&hIz# z_$-$HJk12?UoP=5w(m88SB|N@tNge2&Z5W%nhqbq)ZW<(jfn^PJ^@-+*(<*8{+5>` zc@jTYD2ASv?NYplgzK`dYCjN+CDXV9h1&b=x8XX;(arg*c=uFrvwf9YLS33=^HEkWPNnztY) zGGDj8Al4rdmOo0_g^3x2b$b-mJt`#GPq1EA%XHCmsC?zOx8n=h{sz`db_sIPJNQK2 zx;5^E|21AUZw4!6+%^2v&~<4{_>|?i%r5b+EP+*3b)t#V)@DK(DY>^_{(=e(b3_z2 z%KqqJ>>CZR(4XR#&Hcs&9^9N!BOJ}1mJmeSYo4-D24mRJ&ieNsAecSI@DbX?7x!eU zZ|bj(HoYZ1fu=QDt&(GK+$iw7-KRa~(eG!XgQv^i3dIBn#51na->)$?T&JXoBhuxu zK1X{=->^a&gBWp@$FCd5IJQSsj2d5-JNE#W#B@A~t!P{4of>9yA{w`ogENzd^Wg5` zha%%cj-NB^fnGr7a1EhZY$^a8BI!JsCHCgCeb|{AnA=`mDlx!8mvk8k(bddP8+8ve zAS+9_-|1%fsYkAiU$BN+T4ObAa97G8p^JTWwd+qJeQU!}s#3&~Ve(w>&yyBchIJU1 z&ww7ejqCM*+L`OM)g{ws=Js6!ljf4PiUd05w+c6<%WLL7hPtifdItR~@wy^cn1!LO z;Zmy!XqhL%^1TSzw@8HeLw7UIy1?_4EVaN+X{&`f6AX``%Ugu8e>)13XzTNcIks}Y z)VD2@eCFH8+IGa}_2i|!W!YYijzFhaepZUm#YhUm)mzmF;$MV*tz^SmRyM3RU`~1F zS-?Wr#ZSbS68GBkQ+c)bh=xyL%e0?(MshA* z^#F;vT!o~geQzfCY&=VbYTuq)NxK}`k9M)5CD{K^+c|U=&s$gsznHJF^)hvE=c~{C zj_R$b1`g{ckQ%&xD3JJW|4w>64bA;a`rZI-2ED&W_gmLR0%?q_9C-Nv?l@vNZ}ZD7 z)rNkoe~q!HS=mV1pXKEP0^UO+HIc()r5F#QFJhyu|}Sg*2X} zw!P~W9ACn+E%nf2M=z80ZFb@-UZ{=tkDgX^l!>PE1)Yet&V39<4oht?|IbV& zOi&R<;7#OAR!BvLiNo z6>KV{gTd=U~Xc$1jr(_(yAvCrj7r@tKwTb_M@< zK!;Q>2oC4>Z)#tA*JVpf~_@P?rpAzIPQ z7J+d)c3NrVT&+u$cOOR0aHyu!z;&Z4Q=XC{UpwST$ku(aT5+yqiyi+@R1FZ-3&})0 ztrF0VC@a8tvrz^m;b2zv79_z`t_6-)W28Fw+j=+SqbOOo>*}ZG`EK>VFg(^o)xG$m zDUomD*B7}fvFs}g(wnf>bF7`~Uog$*e$6(aW*olEN%#**&2v3-Az`lD{dPKYy-BDNbfy=Y=Yvu!LSxWCZZ_-U2_&zt6Qfeaa)LiC}4 zQu@_k^!Svo_=)_x2Zdi@xLI3Z`@yM6cznJb9o0BbJ?=P9{?t<~VU1C%yxaYA3)4$cg_Jwp_lo%?iyOeUp$A`Kux?|MyANy|JUi3whQB%6xDu)KyfnTi z_aHW?>W*2;`BjeVu(e*`VM5C`F2G74JrC}-AM7y|sZ{G(i%UzEACRP|#YV{Uw&eoX ziRe=4gpguax91g(xb z=-*>f*3OAnJ4D`{gMU0K*S|v>uGcYqNW+vRs|1DK1T~#Tw^KQ?Xz0BCy*#Ge?hmE! zydmM(YbJ4#vFEIalNvnMcPR;|I{ew*@0@Fzd)L}&o&i)-ai%{4*lrD=OrW^4V0l+l zx$+~H+pU~#&IUzo0*RiT(c2M99zpwTUyYD)CLFJ;_+XZwLcz8dpvZr$?R4vU5wSNu$}jv^ha&asRsiw%@eu+4OizQjn16j3LuElQWuB}EDRqr^EyQ5*hG&)v zy#Lg}VCR{$Bj)V(FHSjAm;|=g%hL@(&}STTq~>Ewy7=Vy5#-Bi+Rd2vw0s3gNXE-` z@wd6um~24l2fw29=k{Ymw#Xg;rabckQYLjxa9_oB+YGP#s%4VOuezc*JhVZe{>uT% zz{u|j7>|a&zY#Y4_51uYY9(uWq3V_Fre+rx)j1tInC|080S;&O=@QE73d6;fmrD-c zfkrC3P7a6+UPYrpM~c}fLf>e;Q2j4A#D)MqArzy>s-UNISV{dPjH^cDcnOliVj8<5$B|6H42qw&z$p7S&q=dizo{T<98n|0B_+G&>jJD3tXa98-Y?>N z2U^bpg6EBRxUKRm#_9-1_IbV(m#r8ur<;j@_hD4+FCb*uen3gbh%kTJc*VvR>PbwD z4r`jNhK56|d8U)h`Ci>$vW8PVuqkcbB6(o)>S^Oq7Iv!9#>W!CLeT7FoT~XZL)G^e zCp>pEZV&ZAXPo9w?ljSND}&d)jd-_%zPv4c&c&ogCx5r5X4jKkS?x84$h0_&xDOaZ z`GZx~m5X{CpD&=8sTw0Qe*WU`+$VAFT=#I4A+|%dc#ImxgEDNx1=78uqwK1WO(${l znGg^gqKiqHJnV(}mvR-|X{abJ;*t7w2&wfTuntp*`;3&aQ$0k;#u$9%BRmvS9^&>h zPC9yy#p*D!HrPXNMBT3`(IkX4{_q|j&vfXi z`H)~F#SiSTX_Cs+m*l-!bFHG4W@Bc~(kWS+RG8u^^|`Ayzu{@%{}BO6`2QIJnX(Cu zI?G`0>j|`LG6<+2qM*?Iom+(Wq%B%?BsDjdJPlbM`yt=b-F z9{B{UCe`AFCJo+{JxXM-cI-&dNbMOr8ob%8b*aP}RFkeG|2rJVEbIks+!kS~fQv90 zq*#3DeZMK}OeAlam28Ci0%N7BbHkC7V)EuQ#TuK=ES3%3r%8*b{kNVDXwg?eK9o!jx930KH&t)2 z(Q9{BatQ3&$xX9-8_2UIrCa`jp!V&3QEkb31%Gm{w%@ZHjJl;UrjgZa@4Qc@dB_{H z+Z*7O*C{)63S){&Z`F8X2rl4b-kEI;-0MVNtM`2u0X0gk=xg8>$L!6PVpgBADy`Pib zAbBt>rIek{a+$S56eNqYNAfBl3F)CQ=a) z0}!Do!px{!qpBg=Qn0(9|0paVLWRq@iz3u$JuQF4P)9yL31tbAT-zlnnTn_obfyV) zP4Gc3S@iFG@U;x8`B-(o|5~O3foLq*FgCuNl0RUfbNKp!+BNXqqC9y*k$K16$QOm`Wn8pF&X`Lvx(ld%^uVFLzlrXCG{y6Mr6_IQIbR0B1%)bB&B5Yp`*_NmRQzAKdE zMGQ%Y$(h0Af>LOr={sz}7%6OW#LA!T^MCkr&G6(b`ybnqc}t&4R_FwTl%)im$)qzv zF|2lBrb|DikIPUfl|&;_W*9i9Fw(J)C!_L z@=1TX*(h7c`GciZz0(EeFD<@j`w3uDV^Y%6UIxhKGUwAf8|1~7je8_%94u_FzN^}} zn-qYH7D=gr@X&oSGP&~v7s4dj?97|e&8ql)F-cE>KllKJ3#fBz)O`rN?;BP_MY9xd zyCa6Kn97-2^m))!lGg=^UdU0eMvd&lWZxpxaxX4YHdssLj zO?ua5ga5(Ui1TN(KKEeKf(|}0?H11D(HS``Is#;`t^m(Y zvwhz;OvI56Vft(C3ZoIBFklVIK+EJ*WPOP?PE_9;$I0JCSSK{NPB@{3e9_j|D;f*a z@iKqn5WkVTSiuRwgPH{x-RM)&oXjrjoL+hZN|19ev7;At(ThwmlI)`4xtVnHCxs+-kq9xmzwrgPe zf~oK6iinDita0buW5ln>tFO!XSnuI2+EKkquhrEWTvQt{5?63h{@gv@-R5O*O@^;j zz1H{qOb%L!pP1*+mfr&{*eC9bv!chdMW;mhg~C#`r{M{`q42`VSs5LNSVr&1Qh7vt zmcl`P5;`hI5IL20r0QlOODLtmOWfUlMpi)R@5rl*bqh`RvimCQH2RXUY2NTk`>gki zZ+^~_$+zgmSbR|$Aq$LC&Q!4aC9Zx0h^*GB{~ZYH$CQX)5P1iFP}wa7 zaXP;{{lDhHUUN6${P!;4|B?;s{cmVvQ&V^}8iFi}G_0-!<28=lIlflaPyRosTKp;- z@2{wvnlP7A08a`JR$UOYyKR?QbQiBsfXIYA1|y>F51TXMEfy6RIFY+j2_rGLV^P^p z)7by%dS2i-ewtE|**~(JJM6cAo}6<#SRU-focV!>ZlqDsCW$Tmk^gkqpDQ9y;<-DF ztQFTBcac{$oZ8Jzn=9Iz=DYb{+{TMhDSNEi;e15t*>m{05|y3$g{V@^jenaTopZk6 z&&fBQ3E8=-Z_{;UDa)B67{9_mr7dsWRVtixqyy(4VIbqt+(R&)`sAZ*MGg) z16=dmhEA(}GcR6R8oAsx{FCJ{mPMVaJ-0&m;fx_8h_P?T4JhnHk6;*~`&_I6d-)H3 z*Qlm?4>;SQ9AT`IzYUL~qo9)l;l_Voo1^n|y)bUCUPsgiZ{}YR-{Rd3K<_xu1-1hJ zT#fj0@t+>bxenbnu%=vEAp%xfHcvDT{MICq@np5MP}v1JF;1!}G_RFQlh$BCf?mfW z4Z(MCZ@BBnHe;t<9nOo`Wv+bPz#Nj_*_|FS`}Z*jk@C_NYxgx0V?lpt*+TjO@ut`x z!CRpV2+hDif`rs9Umj9B59PQrdA52-eCSnUc>eP_qU5?yVr^EzbLFR$GOWrtRCi1j7d!#GA^(?_xx!%>rVBQ z{Mh?pkc^fuX3b5UV}V_C40f*{wXVd`4qnn+OZq#JFRrkgeBVAEhD8sLs9J0|N;}_a z9<+-qrCAeefV3j>P+lW%XQKH3u~sy7^olg>_AZzt{mU$zJGAnvL( z1%5P-VmyKtLH!W)~b#w8Rp~4&JD4c$P=Qf>IJUo2-w26vabe1DoJXu8dhm3B+$zgykLuIelLY=KYtk+dy)m`&%NB@$X6 zp2jh3K@wl7ZG!cRjC>9BpIpl1bZ+3t<+rv$Lr&<&c=UgUr_M8(;XJ^KC$fPH$1b%1 z!v@^a7{=otZ$pu_O=77nl^$C?#|%4Qs`P)fi%iUsoJs0y%Sr_|oFJu9WlOIv({$S) z>P$-=Hdcgs@`*vc3Hy?UbX(YXTfX(!z4liHt#!p?Z1+dKeYW8K1xaR2B6?tuC=1h60o>e zV7V9&DXu30Fsee*p<-dO?zwfm0=Xc<@y_whVseVM;a1oyt8pp;q&6@RdDU0eU}$HXUnh zV(b^7L*Y(@$@*Sg+e^#uZrP>HKx~{X)Y`Bj3n;h(h*S$RCmBLBY(ZX-BNl*@>u>@q zZNCP6VuxQQVu&7Y$O%VqO8LXr^OV)#iz!tl5y2z_0J@sua#n3%ab7+#SaDweK`=_1 zmz+M#K}=350YV9PY&~P*o-mM;9j06$0i#&of`l6knc<~r79O@#MbDq(zcPJBKJb#X zfonkm@s6Br;`T$p5S8-KIzYXrO{(Hb7T@`1jk{5blk&h}pXeY>d=Pm9cK0V7>S0(q z_?^nODOOmu^L_&pYf=WD7ExB4cv99M63+~0QCr5LT-7ZV@OfN{WoaDwFm|Hm|92E4 zI;t}m0kK1*obn2|>DR+ORU}imv>p)zJWFvE!m5+eMd3vc6MTMWO~Ud_koCNeo5o2= zld*xZjupfME*y99lT)ZkYrh~SNhhlhy#A7HcZ#GV%|uHv&q6OjH>7=a)UyiDPAiPx z1V_bWT=j#Y1(q6#=%0(>r>T@Wjc01^=9_39L21X_WLEPT)SSt&Qk zOO;F|=ql4JB`n#vm!GZ+J;pR&JkFMRy>G)Ip8VrvTr?BpP0)Z_d`xB|s;su`uzrB$ z{$%wTY+^_&w48J&++1nu_bQ3qwPJ|~-`5d+ACWwOh&VHxH5u;vF*wJ5C}Qz?=L4v( z!FzHoKV$ThgvTTkF7)(G_%990lyT=*Bh->gpBvnzP>Zw$aqUO6Z^I3xL?uu9_mDZk zqAGU2PK=0i8buqXMnLUvNu>Hr#dr{Jja5;xjr!(P5esvBt!S0=Z`wzt2AgY+?Hb`2G(EJnm-uXZED&p!vz>-|j6o=Kd#l+hKa__tJY2AA&F+vO_! za!Ms-_UI(|t4HVRQl+OIN~;EscQPM9xTiEB7M`TBEX{zNu&4OtF9Zm$0v~8T%~(`42J76nZ0l^X%*7n*(6+dF#BE(C18~3+N%A5 zahz!B+Gy5^4=(y0>q0dYnRCrRlo!&265hWPOF?L@JoDt({-|4L0iJ%tEr*d zb-$|U#V9d(jvb+vgFG~*@OnSc!Bo-gucmVvIl>J5ujLJ*qfQG21Z@q_TYxS!eL1CmR0mvwZP0S{GM z&x?~`_FP>tY&>?H9vS#Nc`HB3nJ0Cwu_$lrDqh>Xh*G+?II)a~M`<#1>`V_3tWSII z1F#ki??+17wirb`d|WQs3`>to9uG;M!Y;w)K9!1^wAKD@$MgaJ=*SMtnnlkanXY|X z-z0n#_?PS;tUN-R>z3^@S!$Fu^4IK~)VY{0uhj!#TN2LB2sVROhBA+^ZKRrX=rMx9 zazUPKVD{>Z=b#d%ZURJhg41JP(NeSvfxSz&!VPh!=iTm6(mw2&7y9p? zXXc8rK_`hms^1qQ_Qm_9<3EU8;gK&w8rtaHaXr*W!vy>jd0@&CkWTZYq7!kXeV*T) zx$uS4A?=!*^Z3CfP&rbdb_=Da32f0Jm#X%FOkoy`eEGv|_D8GAqAX)%we@EJl%!kT zFl_JZb-$*iwe&6ArZxntPCOCH^*Q*fjYmh`P2^5EsZEjhR}QvmJVaV6r!0%luJ0w= z!|SOI_iu}RR&^g|N5rY&+jRR*73`6yNBU38SBtj!`5N5TfNBUxAFB!1ur)n%xJ9WxZJm=$<_;u+Ov;eKzXmb$ z)CX=H7$c=~`sK&8D`SdYxkviAbp-AiL!`;EZ1hcPzb?qv20pl)QGxdzXjreNU<^Pv zEQ$v?w;URM=5yiCi>Vg0kS=x?~ z!Hm+56*ofc9zmj#y;i=TKCGY|TfVq09(F`OOC~~+OUJ^EnfFsy!GzVVzyyvi3Qt>X#-G?H3ib2V(c2vA)PeU$aH z7Td&C8vte!&7Rl(;Czf!9^4Xqe^*o?0`d#nRm!r#Ea7|&@t?Hx!OYwl7bf~O%u@UK zY;Zw)kq%n3LosID)dhMKYh!qNt)|lo{%u4mgZiI9_jo%z$*o%6O(us{`sPax=5dnW zmp-%Ztq_v9wuH}5(mO-D@pSh~92LPbC*i89VmEncfe z#sn%Jqz7`!5GN&?d%4&L7}taz9G+h!KOjI2!H2E;6fTl2wU9L&Ij|HPCpYiLd|muq zY1qVMU;K`|xZsjO3gA+o4s3VWaKr!p6osuS1vK~Qye240!#v{w3QCf3C17)Q4phd= z?x})!Q>A|@qVsv{69EbYD{I7z_$4`papGlwyZ1RKB1$`pbUc2~6vXyCgEr!GkeIVG zEY@`Y7tW(bj#Lxk#&)ujgCY!PeY_~k$R2TVHmd#sW&o3|Gf7(b=tAv8-_+ErxzPoW zJe^Y+MtT40%Gv!Ys-L=l;MN570F{i;s4#I+`a}&eY-6EfDdXgSd_Gry#DjfP#x(dd zG?TTh+eVVFUF)Qb>B`BMl+@OGC>%}d&0Q;{RLCk31pJ8`+;pZf>Tl!h2N3QzdWiY+ z>i(%m!Y0*#^U7zHc}b=!mcmhYF>%hEk2%L}GH>R;SgpDNC)Ym^S_-4zuQ#f@Q|b%v z?4Lwz!6tCW)A~pKSCwOLLTwr`;x^_e?@$>`TcjTm=W-&4zjm&tnb+M zvmYb|xvL9t2X!yk2s`tkJm^a3Q}lT7jkIU{b;t3mzwM`_mXdk-^imY}RXG{#`T2^x zM($39mI0A}1Db9P-=vJ%x86m%6a}z`ma~=zWz}o?ru5W%Xap#>kT6bnx@l-x9vO2l z(2WjXGM-a;Ol%w_86|Z4sY(7^7m0OT@ne#IjuJTZ!)H6f9ix*RPaHfKq>~WsGmzLE zXJp#(`sWXo#5K7$*IbfBg6Nzd>M8f(AB9g!{x2rl-PA_6Y<&EgHI^qnB87z8m|w)B z;q<}iOZ2N5Zpr`N1^AXgCD6xPXxw{oG%C1a**VYoNGPLLHL%M$Eb1ncXe;yc?dpi>DPj7)bDULIFt?9q|N+X zO2|4JhjXCaR6)C871VnVCM&hforrwp;2-MQVoVR)MD@JPy5lF2jovXksSH40%K_Z6 z2XF*f;_ny-J*%@(9Piv^h-W`&iWs_eZEHjCk?EMHos{Xy2PkPI5Dyq=`b%wB#$*`Q z5xW-u&OY5&;6v;1am{i3@;77^WC&-?P1fQ&k8p{I!@nNHl!I~%3ig&?EF~iRRS#CU zJo%b^6Cg-dOt0!Fi6q&OoSvt$2%4PgzO$IAUTRTN@HvzRP+@}KPZXmo^Tf)M>}daF z-6z*n3A>bMdo+x^kw1>xr7o}0ihg39El4(a19HE-p8HdaP}{K7Ty}Wqm?++&ZH0j> z*$^bK=B5mdr{MLHHn~d#2zk$84fSoe60<6Grc?h&N@9eZO6BSma#&b>#;d%jrmTyQ%FhhA4PtVkc!(cc5{b*P}A`FEoHk4IC!xKJlM!5#~LuB^j9e z3TNrD6po3l6c4h(c(vd7-Xy$N|8qtDD=R7^OMZ5R-^lW@zip~k3$wKH=7p8fz4kgd z&iVo3ZR#oUJR!T!ny)~Oq<}@Tz}HDHOn_>4pBoSQ&!4xmO?V;4(wmBmjRZY?NXqY+ z{Z8Pf4K8gOsV>gSZWClbzP>iU>ETk%kf*7aBI;fqiZJ)!@-q(a`~H_-j1TXVOWlpp z=O)c<+VW)eyoyp1gP<_M;k$cGybHa*ris3qJEOllK%1dw^Y3w&WGkgrjamWD%(kFwH?{6QSDYMm(VFE8Cc ze9QnM3^fD;lpBIxS19)+Dkb(~9z~@hDM)m*%Wu()SLpZ8bgV3c#%*)K7CR~ZW|l@N()1#bn#1N>@!s* zvUZIVMYZYpnhx9yk*A-PmWc>?y0L!-z2BvVTARO@W8e?^&b+R!a5sN^IG7!Osq~L> z-1}MK;YA9Ea~Bfy`z%PX+>bA(G%4BrX^wJOtb6PrMnN*nXH)UO50YAU7x2>PLsHI5 zaT^cI?Vpfi0>w{b{o%ozqYN7fTg}+z6Ovh@=Dw-xA>;)sV8vZj@{LOuQ}+bo=uD(c z%UTdmdtvzAtHeIVQI4QPJdrF&QF|~~$gd+iFij(971Kdf8JZkQ8p;#-v5T~gJE?Vd zNek6rBBnjrg_Nl~z{5JFl=k^0&^yKBwm20|b+P|WP??1y2BjgHsjlj%ygVclCh)>A z14dlB6*hMte%w2t4gQ#Hk+%{S`z)_{|9#>ot+-3+JLtp84gJFodMoUn;#T*xRuzpt zbbj_g(1dop{9%1JFU?9Raj@=o9IQ50v6dcoU3)t4Fo50()<14N7$JDby3a@dM2qLA zN!=s6?d$T>n1K1@J*S3v<7{h@pk!5QIxsN>xTJ@igXwi+in){1#rE3#uka6cskT;72mk{nt8^! zTm5bt7ojY@ zXoM{39dccQv&C8|BZxhqbHJIlqwBs;cNX|a^TAWj70Dtf^;WULSH>49%2V&0Vn7MP zoquKXt5b~Q1zPNwvDa+-{^~kkgnCL&g)>=QyX@>nr02b4jQ;YV?_cvG?~&xqxb1O) zyWi`BiL?t57HC|a%9u+muBf^sq*g@hF(cPH?AZqJ&*3^1 zz@FxJPNEX?=FFa}2bsq0eDphye{Lm86WgAO`R|4%n~@a09=X<#_L;ql#a zH5!>CQv`SVZ?mZZ0dKL))wJ8sWf;YYYA{7-)F>_n6oU@`xPugSt z(u>qkszlEza{nyBuCo`X{SsN1vBxb12A@Yd%*~aPPaCmX$6m@^AG{BLp|$ST#MK>d z8r@H*SErzvT@|4`WC)xvXu$HLfhyPavxz|6k1?O~^&&(+6^;r6;7;f&_y%(Z&sx#3 zXq8};_XFp>Jxvr^_A0m-;;{L4&?sMEj$w zAD-N*R$Y0E@H{Zz+mhT4LvIt=i0_7vp_hqiSqm#@w*mC+1n)5q87`VXIxVah4SFc5 z4=#e<-OjJ{9=??RI)y$x39dqSc$uT}3#P*E*6+<9exjrF^F;EorN~a(`NpA3$7!13 z`{dORAHz~y%p<|C+&|Bxg?^k!nUCZDoNN!0ou>@H#wnd(%`}=Va!nJDc5<=oo*GgQ z{PLlP*s207HfBXjvHaG{Hlyw3LnxUekor$sM%}b?M3mBMm;2&Lj|*w4tM5vf4tfmE z*K#|5RevHRdH47QE$87|C$ZHUaUqH?0KYpCz#pp$0(1-~lP`fP@MUapYe__y>dn3R z+I1q@f8cv{R61>txo=rNJ)!dk^&&A za<;%$+-ahJV1ME<7iHPx(=>?+_K;dg@Po*lYM2dDjd-e3++0b?#)<1ibBeX81043H z&{owjW*s-MDBWZwtU=%Bw?lz?LLViBe=>=ruX|b!ig~rrs#LS;QZTpw0!LZE zAD_J_HoXwKN>E(HWYc)mijV1&K93($l4hzv3qEG}t-jDzziMGn3$S%jQ+MzXK2$>d z+<1eK@i%a3T5)gMg}Bz6P`)+64_dSO(DNo_q==uP>)&bcRhYuW=xn!mXl4iLw%n=^ z7AFr;14d+U#fdxXRFHO-^J8Lz^0vcLvU9v&9$*GF74&S!+C=}yQzlk6&gbQ#_~&k7 z^{Q-MH3ce^MK5^P8(I?P^1^Hi8x?LX+RG*96Y}psKdD?((gptoJ*qvyoc2F_Yy<38 ztYUjplPtFqFFGK>eUM3Ur7FcAmQD==n5=&=w)c4D1%bVRk?p8^qi6D%e1l93I2p$9 zb;kkDm8ju#otWX8C2vR`+w`WvlJD~HO!Mx0uF%o(-#Hxk7VCZLDgXWYsRH`%sMOI8 zhuus!&4rbyzDDA@)K~DG0`l+Mu-Dq%Yj<37P99=>7e#;0U}BTF2fu=o(tof?ofV*C zAstly68_D3f5H%){h1EkSsk?2(yX{6Ugc0FCfN;Gj4thb@m;r}1wuS$Vb{XLGpOhX zuNXqwXP9(uSf4B~g+?vk;)WeHD?wq#oL;dmE%uXHw`QI}hOJqN9v<9ewv zdXl+H2siNDcK@wn+4L=w@+vQN3w(ZCFzn8Bt?1+b7rVG`o;OhRWC^z>U0pYC9$rzQ z5x7AHG-&B(n3wcIm%n+Udye$neQ^F!0p?Z4wCgi zs31IfFCkTxXey1#FlwVo5#ND+do#a{JFs_u{uOobtfYg=ULJOOR}Q`9m)*<2Ko<$6 zw>52L&*_L>j`{AHXGp~D`NM}h8Qq(#omPo~3m}wr?^eKSiK$TeI0PAeb1(g95ce*4 zbwu?a>0`3L8)m13TXghD=I+j*e{g;Nk+7zNg@sSA`;z|Vq*IBLzwU?$AY%_;&q)mL zF;ChnPze})mW-=84$1S+9qg5^1JSS3r_xfk(?GiE^qF-@%;(S3aZ7=)zW$ZeJ zH6BR4{|04T(E}SAN(c$V*S@pkF#S7bbpJ=YaP%=S->ZCs!{Rwm;QTA1&g%$> zBmmkEtK$OLWxVr}i#?5jFgGN8>UicY7&>8!seO})ov=OLWMbzSx+-&H%p{U5}=bx_pt|39eG(k!r)#Ij4bNVhZy3W$_+cS(n` zfGo`}4bmY9(kb0bmk5I7QVPP-&8?sB_xrn>aB z6V@5^X`wf+4bGqukx~tAD^aS``ML&&Tv(ne`+biS8KuA($k}P$fmR%Tt%VX8?mNS* z@}T%J7e;;5=YkAOYJ?_Y@>$K)&ro7Cu3~J+5gyIS#x`o~dPNtY5p}B`KZNCX;fopf~7qmev0K#)$6p_z~ug{!j>{!{L8O<|xCX>DXSl5?^Jd0#sWG}R1 z85#v^s#44CS0CMyKk<4i=O#Ig5sIWPRjiyU}CV!!~T!SQ4U=s8d%Hyf0cQbGZt=y35L z)Tt+GqD;o&V~y{PqV6TD$L!C%=j3nSLUjnjtTh4Yw?px)9*o;qGT>o8-@P z>l^;1<)0CHKbT^(c(quKOPSi5X~ScMD%+0=dqQ%?^DNX3#{|9%z_xVRA|4*D-@67=@ZOB97;Aw z*G>k#L;F?eN20@n`xcsMky)6wg3VuYsoh_XBbl8Z$y!(n{(PCSSL69;v@Ixu#*I00 zn-_<6^MW3c-o)OZm&nk`C$0xBrgxUe?h4d$v*b*_h%4P48&~x-o}Tw(dNclGK4LLr z%>Fd;-%xBgMu4;xWfXTvg0A>eDVVbpBDWieY~vWgVhduqVuNg%{*vnU2k#_n1lDF) zCwA5;iB*t1rR?c!aW27rbA7U_Lwi(qXRKLY#KgzU0kom(Xm)m|`tHRm&duqjx{2lI zid=&P%e<8%9$^nuMy{4}R`|jXkFs9|kde%8aV3l1ryPF^vj|rycKa^LrYdUM(Ns>E z6BsvXWu}^_L#|w^D;Dwo$e7fmm~T)@%zAmrOc}xbu@9=;EAAVV`M`RLQFdHz-J-NZ z92sYq8@`r}e~|7}>FYiVHPc}*|Lr#ayZ{F=lJOw?tJ$PGMTQBpjQHN0+*T8f8=$kg zwyHhrskA)Vu5(gve<^m_1Fhq(1s-k*weK-AMS&&JhvSa}|H8(@*`wt-nBsG{0XZw> zly%hy#k~o=OS*smcK&AGUF}4k(*dq0s`T5w zptQq#FY&eW90-XeX{SfGj94?Z1HbQ{E4F#=H}9xO)CE$|3rl<&HWXV)YH!{$)i@kD zzR~fuAZXWB@#ok*Q6#kML;yz?J{Z6s^@~vgSfEs)-j6aicWI9>qwuNqvmOX|xZve- z%!JKps_zF^y+mpLQSu&HRw`?|7x&LYkFE(HxXyJpU$TeZI9>g@UkI&|y{zjT@G9VM zYE7sasv`g~klwY8A>JQ@hvEXvZ2!5=6Ra@bxXxT39|B8!0TdQ5^_6ffz* z3G~ieJn{dEWJl3(Q>2JhpbK%Y-zE&0?#@YbgcR&(WAk3axpZD@N{T>=qPCyu=JkE~ zAr643Q~4eIqPGvcm{3 zAaB`Bn?^)K9@Af6YO@6rgWv!1zj66+UB`;BI^l9n*P@YU3$RP`RQQzm7D**fwsQO# z7CP8A0=SoqL^92NGHkmX5YkW*jK!;_6C(yHrNNSbByn{DHpXB7(yzZ+!E|KeGE25D z7tn;m%Gi{}sxN2N4<>cI_h1{awcnNvLa{)pF^|?&ljcu9o~!yY%CdQ8MBhJTe0>&NDvEqLL6brc7qw%Vp4Uv7Y1S6HB(G`%pw(^U zFE0QXNRMePIi;VSlQmcGdyoM#d_q=o(t3G_UA}?g1{{g=3uxlphz=_?c-)pFaPR!K0dI-YkyGC>tJS9V3*_Jd5=8a#8z4a=ZSC4|hCJQ8CPb85x5mU9 z0E4_A7yXih>|nY5e#^Eszdg=K`9(`7P7dfE>%f+>vB4BN3h8iz|v`WvQ3!C>tH!Pf;dpl3l=mNmkJ9R`j= zpM3Pu^rg8g>53gSah8+sVUc_qWY>}6x)%u?W#~Mcptp8LS$HtW{5-M}*$`c8{qN|R zksAWEhpvKeMq04$|AwBBp4f$MxRsp;IustKTX!UkS~6k+`rBM11K4;t5(El_qQfwh z(={+!p5zO*L`>iCLjxD?Ufhfr#>SN6dCUR!tGFEIqJJ^p6RRunrq3BOJmB&945$WFzG^*iNvf`S+mL8%F68fGOt=nUWvG$u-aE}u&C;Km5n2)xS&Mc34HPf89} z-I4h6u@t`%XyNC8=m83A;<{oO;TIUfOyzoxET0(9jW6t{a;(OR*4KxI-KzXiFYj!rK%Lu+8#I3Wu65Nj+S7_9(M@bDnA7 z$<~U;9qxlF$dN0v8(WzF7xFg06@Eq7rcxiVe@&Mrmti0CDE&&yFIEq~8yc!#+;=LH zPRoTf$>Sjl&C=v%0v{IA_)sBhD1H9;Cdu$T_{st#zjDLY>wSsgl&{w5h3sMx+eR7&vY6jLN% znPGYE={vdf)%>;Y8Akh>F|{E#y;{4y`L^_6aY^_Ct?KhX?^X*@5`R9mn8Rmuv6)a& z>#HBkh}eD1kx);zf>}l~R5FL%>JhF7{?vzG>xml7fQRtsmSq^5+%{}a{YAYI6YF&` z`!mH937u%wJe{x3=})6qp?~-$!lpj>%?Up`?@m|_5{olFNk7#koCnnR_88JK4R(C=pGEY9#91bspA>yOs;kQY3X0d+jHER_y2vuiJLm zrM+KG+|#Ur4i^qRF2OPlc$xL|oG}>?Gq5l%6_7L!Ab=y3%WfmZ(b9~|6lbVM1}Pmc zk?3SD{b(m0ZHYJ`?SAp#eDXtj-Gq1#fzpOlp-P~Y zu!D;i?4#Efh6FxwlTv;1<2wf6Psebtzppsl`|w7q!azpa@3VSB)6l!vaokGKhLhPlu2W+Ht8);AWO zHbEaC#I`v?Cs|}7)0WZEV8*3`6Jk;j=N*9bZGh5O7Q7+D7}6;PXFrRt+AVxX8==o$ z1%kC$RKTaJ);i~#61@YA1xi+i>j=I5o@h?>QULmkTP%}gR$r&{kHnt?Zi3>AKUrm9 znxBHK#(&9ds&&==*oqrmIg3Mt94t(uT!a122Gdo-`$Rgn!NTLN^nuDZ$j<)Vg?VKV zL#a~@BOxHiFu}PRQM?zA9&Ba$ar`IUR{Z?Qg743MceEn9yhVT(x`ZX9ysuf zASDioWq|BalOdCNWa?)W|3AVo-v34z9)hX4GTgI{EAKrQ@()%i?O>{|pQ8Ub;ka8e zu%i6FtYbcL`M=?JE}Kf?{s>Byn!*+zKt}x{Hg_uXf_PJ}rsKJSqV0>Iwui8XXpBt?mvO zj}HD16u(U|J_|(n{#6!KwMhvf=H>1c6%JbqfvPInLdIh|A-5trU9-3DXxYr!rMCbM zAT)Dr8h}2k)NsxZBmma&ARCW*559FWbJakQvphi-!6T-Wy++_fwV~l^-i-%zb=eFQ zX%Q1zo8vJ-egctN>z+61_0*r^c1&Y(QqvUi&C*~NS?^vWDs)`JiM@-IKWJpkB}{t*0SX8z;T|!tvTTAk~TPZD%sMOAfjM6BE~itr-=JI0J5xH!B*S<}*#PMl_Q zRxcc->pJ3qVirtD$|;M@eqQi~YVsBD&wS^i5DT9Roq#lczuM38De^H)F%}EjGZZ(% z+$OVxZ{L#NOAMC8oFDy6ml%10vJk9)!lzf$?Q80Mowb9Fq z{}r+Y8XTc}?ip156E@ZOES{-ip8?9=X>rC3UK~yk`DsyNkGvW3HQ9Mpnez;ty{%}> zAKKM-B#3~Ls{#s&e&biX@iMYAm0E@`+cR6E32X^-YVr5P z*4XF8?GVg|YPCh_Yew4`gKW`On(+2lI&JBVY=styT_K+!RDxw!ERO!$Ys2MI=EntO6;Dlj91%l_hT+Qj4>2>G^Q4 z0=0M$%ujQ2E>0*8R<;*RNT1zaNF&{A=~N( zJ=RZD%JXHQl%Oe=Uc9VF5QFWhHEK*%+>LRWr3#e3w=71Rffg+xPae>$-_1A$Xjk>Q z(Wn=4stlH9zDvGPQv>@QvB&>B<>9p0T?@fN0IUWz`TUGjG&&`x%f;ydcNwD4WXUb{ z9_S1QPgcjEA{3TbCz`1{Ii z&%<2D%fSeonki^GHFHSM2%<{K9uQRtI>bwy$BVe=Zh%-EuHGb+`=LZADxS9g-a14j z<)n0VArSqP4d25YG~bTP0F_^iCmAfcr8j0nTN@wG$&;4gjz~2}Gbi;-z1V=yXW%ph zVzW~}4rD~M0%dFfgWGAmr`N_9k;P~;qv1{3@d`^RK{{>03R@GL@{GFMWXhinQrHNcz_42IPTE8|^% zzwneeN0sp#S&zjzgRp793$7ODxX>1 zmPA+YXPz6TWtBNU`x)On#o?Y8vv;StXP5)vo=|~v!>dc3=I3zj+AU&px}ggHL-tKo z1QJ+r8Cd0(&HPj-L+^R|CKa>hlY^jH z#?13*+ge6DWhy6BhHcm`OUPE|=Na=y@oc$2N8-H`c4?2_M(JyH!)`^o>$EdbtXVnr z?-@CNiOBE{^Y>YZh;nEteXFoRF;f~4R11E49c%-^5A5YZ> zVtXv4TRW!otsl06DGhV%)YNESy`@eVmTSoAe3XT|D-U@JChIHj?EUn7$1!v1kPuNv zoF3-^$7=Ib#OUGARDHsHp9f@l{n&8Ra9H|}B7VF&x>V{4xOF8r6H{7~b6U1k<7R`hoB41t}Wb~CVF@2DW>*J2qsHgL>Y3$M+1*pX-+Mg$UhRa-VXjATs{!A!I#Wj}q$bUwGJK_L4T$g@If4x1$ZsJ*$yqEBRNVM9zj% z$~M33tep9oB6M*Rhw^W%Hk4L;jLxJF*ty#60Mea&5p8#T_e)1$9aeksNP`*ft#YF^ ztfe`gY+N#_L!Krxhe2vQo!wpfK|E2#k-#&$dS^=--PDul)R~vi#$=h4#z#n;yMy0E~H6aE-ZY6TaXQ{vP#4bheZck93zm&B~fp_ay` z?^2~Bdt*EMxW4^~__KZj5OhoKIXix_@7}Yc-H}`~8B1J#-ixi}YMJW1sd7NJKmA5G zWsJ467Zv|k&D1xUA`r>qYCOg3qz!AoJN$8fj)Bx)TCn^vmp61n_BCU~wPv_m+(a(n zcP-aScL&dKR}FbVchT?Mf8`WSU=fDN*2j}J7$dd~=~`BM*jghMrtPawuNSkpBwF;z zY*fduFE87At~-J~05#Dm-y>`{%%jO`j2tmc4aaa%n~m}_kLsgUJwx2H?FD=s6oI(f zZuGgt`jgYlDXGrA5YaouN-6eTg%)uxqiJ}%+(>-?lat3rM@_I)j;W<%`U3-1fuq;j#6DNG@pnmHM%cq3=K!{|kpY>pTLJ*R)mTij zxS$;!<43QlZC>{4X*CD}@dl|-zaAlpKj<_eUpr(Mch>Fcw*4OAd&K_NG#rs8var)b z(dZu|F0L%Zt!9`ja+}k}cpWsDYKx~%LEQO&>eW^MtykN){Z(p1xq|7RVBE`h#k!-M z9HZ)Ob%chw0=q~iaFUPv^g>0*VURLf`?|a)_*fQXToh`&4H0#l$<#o62&`Eq_U zz}(J+{mO45=c1c`sBx;uBcwPf8&4HLoQN<*B}0*88PPDz?1`xu-dUGywTjhA^I<;T zw(3m}>U+`ei{0D2NKX6s-j;-Q@`PX{b>-}mJG_)F(EW{PeDLz%8*tM*c}HX4Ue?Q5 zfa|>^$o|ab;b2}M32ZadYxN{PR5(eD82`_M4E5OG7+nptA0~bmVIAr9Yq+J_i}V?$ zlI%FOZYtYMZxy2X;%p0?%=k<_nPM8xW9v>f{L2*>$2i77kv@oHJN`Zl83S>%I^f@a z?@2Kp5xPnoTAgP85&niXvEy_XASLE3uI|`zbwNe7?lq=p$m($Gr2%s$1ky; ziJkr(Y?#ulUr`30IqlI?6w3T~hDK8CKS`nAK7RF8jx4cl zWxKOhGBNGJ{aNn)i%qY^38o35yY6k~P&Njjtll`X99g*#;s=C$SyQ|&ETjC{a<-3{ z1W$>#u)p0AviGnUcK$Z$`&`!h&BLIvQek0L%ZH@BT-9*IRbSr5Trnq%M3UMp> zEf24S$?wPMx{8BHdyIWQ!c2@l8Qv=?iSFo{$MZhP`gEh9&08geft&w66{-2(o!3i1^^QQ}FA4X50OX0neKR`y)VSzG&xU?I7w$It?ZnLj?F7Z|`9`<*7I~ z6$f04R~BfE>4_1y7i=Y3Ho=A{(XO2ETF*59qZ6OJDjFzSbvF@Y)`Ue|Dssa6n#PPC zdn|j?r7`|ISffO0H3BnK zx;f)7nBn!;&>{0Lq*}p+J?y1&O)j>dhB3z5^Ai}?){i-}v`b>SV2=f7xtR{$|I zB|mhg-crU%d$^uAudVbY$}P(;mH|glZK#%w%j$o12NosMOo%}Iig<&z+#L$#!@{_C z^whvV8DrxQ8vLiNY3sp@ze%IOi$BYLLyXMpZz6FOHG^s@P<#iO%;KiKRPky;;+EK$ zt&gI-V)k`M+*jF1{sr;Ck(+&fEJf zxxcu53{+HG*h=0AmH%jkS$IBo+_5v+_>$f67>Kp>MPBJmBw8k)AicTxWadfIu&jkA zq?knXGjOz@)twilq9pwF;7EH6DfvP@1ndgxpyX+yu(VL-m;j-{pkY7IS!w9S`RVn= zn?Ssysz<0!0&~d(IaB#P#SJg;V#Ra|^%O&~DiMPtzE`NLv&{28>d11p<{@BiWYL;- zM#GTyZXS-3u3*Rh8s$8UAF?uFHV=!|3XN+7FHmzTJp4vo_?9i-!kYJJqd_FwAZ*R@ zen5UP+SRy+2O2{~n7~_9uzA59Wmpj5>|%22GR{bDRbl{*QN-v2hr1D7!lUq1XDBYA zXlx`woq^d4hJjbR4r(NH`~j2Pph)E$;{RfM-V|k1pPxX1!2dp(4}EI$9J54aS}@Lx z%D?;{&F2nVd9H9=;pv>Q-)bU&qO)r7OLB4T#_0cD zK9-)ccjv(utd*A>@S+1ToZpvVckF9Cuq|M4uL`s1=k=1vb4aI8{(t@Xb$|(jm^Z5S zyoz;IT62Fj*B?cP<|EMued*_T!B!8hquabz-^ye414%5lZ2J2A8U%vQc?MU~``V<- zio;MB?~q8oh~F03xU#12vfmVm(iu9$`EED_)IEipP-J`)Tpsi<`HxsNc~rtqJ+hpH zQLE$rw{cmIcn#rWpXABqULQ+~o>G;ZseVqnc(|dKw!jOz#jC>#SZG($0{8fyipU!e z&&+N%p}W2fZLK+bXw#|gFos{tZT}dh7Y}GNHcH#Tei)y6+9GX3C1?AKukE+2-;b3b zN5G$UkRJ;g8jdHD-iYUjkSqVZSsaMHT#Ka%*7t0x`!FJ2UD=d8E{;e1V3YXf)EGN@ zNMFq2lijczVBAD!a^}GHm%pD$@Qu?Y zlef_&j4AFuwDBJSoIjq@?0=JPX4FZsgWra2@@V>~9b_eWpQ1AJho4rZJ`%A~*0;|_ z$R_^@MO_SiED1W4Bi7FCM&;{_swdagX=x|_wr5=xm{RR_xPGIlYmKHaM6zTo6rFU{ z`s(1?CG>sV*k@c4!hd>7Q}-jlJs2r%ukegp{MR0=rQE`9j@Uyt*OuX<$GSZPV+B5_e(aJkG4iD{|7^V%H64FfGlNhQ@NCZeIcUpngMEm04 zY`Fq&+2U0~Zs<-n-C+>2Q48p%N3;BgBTCD)XVhEYV_r@_>K`!g#uvT$XFLnO{2_2G z`tUBjlOWNqyUzA#Y6B47JF2_x!4}mv;adyT^j!CKR*>NjGAn0w=9!dUN%0R73{n_lS?g_i22ujoJ?)~)$;Nw!=2T0U%}uE#RN|AYF3&vd zL71Q(P0K3vpA~M1YCY) zmPZuQf_F20uPO2guWL(uoff{#KmQvuw9Hz*%~i@_lvORjYNmW~1dzN`X@h*B{k_k+UWt@`#9nr1Hg}X^T8Zb22m2f(H;x@<54gpBAHh)^V;B?;e<;&Q6miWMD z8{LHScOqUhe(FoJg@grm#?Gg=!vyaXd?3D9VHY_nFK&pHJKm(#eIIBGEv&rERanM% zE{OxY8r;RhWH}UW*fY719jqaj0~dl32PT~=f~wygCa<(lwhktX3@=~3;qJZohmg$( zwba}t#mV$API66@5Y;`FvVN+|hoduUK6Sga^ENJY6GtTMK?R99a9tpU6$I3lvCnwF zkGb{v|79E(Q9mq&$r~)=bKJm|Zz6>(>aK_#|1b$aEZ=J;RgmE82K);0d-UA{lbvda zeEBMNK=hHiv(;NuN5UHZCd2fXUu<|%XIB()8>~ZGDU9tK`+={y0t#uU`Nvb_@dY?> zanySncuO>~=yM;H^eoZ`FPzA_gghnNA2p1jL2jaikZ-OjxQw`Jhmqg8QV+~MSt;ag znaHaVFy8{<^G8~-1Zh8K=n*fTe%`BqKVTbb1vkiX!L!(WEK^+^D&-A*VrTQf2sekx zRA2|hVj#!GDB;K;j+U0$b>L zkFO;>+NqGYs^Pp_G(eML_b7rd%}q9@A=GmOVq0@F? z#a0>;qoUd&p)hF<6|>sgIel+6CJ#eb6Q~m_2+``^nKx7v`+WyVCp>H^YwrDrmCfa- zh&fHqBvmo-l3o?0B=T7aNnF^TUKB1%_prpMaAmM_K=SaT?7i_--Tk2(=L9IhYEp=a zD6o(cgK@#gn<(=7@S&@)=+%e;9#A6t=s?=$PAzpHCIP+%=X{&a%S+7Io-=x<#u+ct)xb2gg<#F_RT!)KJME|fv?F6_$VL_6_i z1pmC=#37ZzBdnImbu!y;mWMc(1@9WOpD&W;-1G>ujO%Ua%?iCyhi!1h_n-pppqREOzJclGH@{B_pLreK5jHjC{X ze~(dD9L3t+_;o?7j#gEw9upmyp4b-2ZGNvl(0t1CwiL zvzV%q5bNY;pFdZs0Hbhxif(P9Rtl3Q}S#Einbv^yRu3Lx;X<7VO(BFpKa zn3jG#hJkD;p#(EZeU=}9kje(iB`&p)SiMw=@0F|#@7bLH9^v6Y* zl41&rANZs;M_|NyUn#z~3}0_WLbgv>lphA~j0b7<#%%wj>ok*mwjg`!ei|(-Kl&~% zWJ9<-1mxdr^3D@?IKO*q&JMYBIdzX(xx2l;OOQOPdbb7XVme#F9(r1azHCXH*;h$T zP%vQR9y*6M_;=5e`G*`_RhO+jSAnAB&+Lw9z_PjD`;H9T65&V8Ov|Vf$p>y)#!L>S z&^|nIyldGr88qU}Xf6XPvC_WYumA0H@z#K^7rW0c=6}kwCjq3Amr2J%C$BvgbFFQ1 zXP8GB{2bMIL)Tf1INFB%`7~)i;Qj2j2>OcL(nC5a@U&=2)aU9M zEWRFKZN~z%r7zjib8e^B^b#G~4FC^78ZnL2dapHpjjId6@ALb9Wc zv@3ip>ygIA;y;6TcVPX0Q1sah3LoQPW*Md)HqKWR_Rr(e4Kt)w28tL=7}oq3 zknZ#x32{3b|HXk@Rxw?bZ)0;2sVuPMMg|+I=*vJi6|E>gPH$!6yHi1Aesg-XY5DT0 z$yKakW}4_C3hhJBwfK8tpkq^oCFZ*krgh0|@^w8~eJWO-1T}1+uJX>000=dN5`sO7 zea5naH~1-DR7B-I<;jp1RCA(bBdbHX8=GFpjE#NxkXmnzRhwfUQPjy{O0v!H2*@HZ z&1G~pFH|#=T6AIT{ZdD;wXO>qV{L^LCtooLOsDa0v>BYmEMjL!ZDiC(49(UG+Z%=f z`u;roFre7O%?FNA+I^RAGS0OK`eILz?0K^XtZUI0yBrHWy-20DzlN1)H1p6SP$*TX zvN0hA(fibJ!4!E)^UkR3XwPP<`UCp~RDQ-PMG)tgMC=&=FS6FkFK;NWpX!v$H*8wQ z>M(k+8&iAetU)Q>Qk%^v^GfJ;ulotyWz)_@SS?kUA=zS@Dm09S0hZRK!4aQ0Q=|$dSynUW9 zqtK(lmHXS!TPm8+rBFcE`p50w6oe39@dUT_8-#~O~T#~sPrE2W!MkOc108pk2Z>*uoTttZvr$akJLa7UpiDTQfz4dIJ28!_JSH?rwo9N)n9BaH?q>^7135~2+}s@SBu z24XIX+HYNP1XvJ^%X>@U_54Vq_gc^3e6BS`@rp903BoFj9iSZ_T++E z#heS4_bFmF&gTL%U@1y0VnTFso^8M;Z!0B@-i53_@mB)S)pdec9JxXj)amZ2iUvo) zgy&BJ{?LzT)}s3^c$0bFotXFy2<`uO2-?P&XA}TY-3p{+EqfnApa%M(b{7Q;Q0X-1 zXb>-v0VQqi&V*tyACS!^0r5(ehUmlJbgU?meZIrFK4UYA6(#+IR{Lul4f>=V8$((o ze2BA9g{IfiH`>VmAxT~)^=->NZ4wYVXsDQ@=D$^B zwfp#4<)W#gU;fF5l5FDHceCN`^WizuNdBeqTY)4~F$KRkecy1;ZbR`0{%8@C!4`CO z$dP|tTuxxJ&s3hA5Xtf#pj18-TAjo!LH{z*-k(C*auXk@EqWoR!=mZv|Edbw^jl5Z zZzf0d76>=fG8MQc($V0va7+Q7Vg>@MU2psHvn5EL=wNGfMB|fzCh>k?tAv`Dw7GcpsxQD$Dn^A3g{$rwD`)$$^yFxlAPI9{^8%eoicE0Lixtf3! zu{;jqjpn-{;(TO=%v7&Hc=&rgpU#Vx(N)YfxUD3*#vZAAnQr&G$^RSwBbH5CGa6#R zK-*b?&Fv~Q)ZD$`&#-5tXC?z>1W-+;mMLY(u*SMJ)N`b#2As%L#)rOG0J~PVh4+E` z@iH9T7X%gfJ}Amai<6mteJV{?D&kNx#j)M`&j~zUSh9dW+O!G^dumh9O2jYx@>@C&ifwI9oSy_Z`)45(Mf5i0($ zxGsNV zu$V~*rXc+fw>4i{%T{BOGx1{Xf`OCVoYGh_6uWU@qxdu|n-c>jD>jsKcn+TcWx=aT z(H$THlpw4|$YFd~tD-bvL`pY0JfIvvU)AI4m9kFu+I9XmV2HYQOu1Z$ec84zOtjZ! zT;*o^kBgA_cPJA*x!6YY_J2au?edg3tnJJS;^|)5A&GF)`-F7nRL|9If3{l;awa^{ z+Tne^|8Xm{k6-B4=lK6ILQUPTDxJrlo~rEK zVPk4JtX#uqvNpUJx-OJsL%QAtd6nLFR7~=XSwW1=niC*7bzwT!(^mV@`o_kIm&cD5 ztxH&&0NrQdJxT`}=`_<|Oj3?T#h$4RZ0SFvG*U-p@@m{Q%HDrybmqR43!auQ<5(yB zryC#n$gu^fX+lW3+1|SuvnMzir&=4QqEM?D0rbTjyNVhjF{9dwVy3oj<{;3ZaE(Q} zK#6(lOPg9Kh4IFUz&>nK^!~j*g(3sbgypNI&rfkhFh-0q_{JhCJCf}cH^zqzG(lBC z7QULgc5h#vHd)qUv|}$%g93;?V%F4*tlVaSI>rERBai$i1B+Bx8c}9172q-HPfJUv z*eKd?_j?)9L4U0+2BRr7?E$12xI`?}Ybp4Qh(^vLPJ29@M_||<&fE=+{l!BaUN=YG z-~VVVBi|h7wu-FSJG|uO9ZV~C$B3p)baS2_0ApKKkQnDbqZ;iK04_n=z{r4{od%Q;oVBF z$BbbjZ$5K$320Cn+?+hObzt?h3Xk4|J8O8(ya%4ZsdMG6Vx&Ie@#^r>kKA>CHR3Q{E6a4>Q*Uu7klcM9~9(IqR5YK)sUl^P-CrWaJf@dZ<9GMi z2_go{Xe!-E!a1}-mkvBifL`t!VeFFU+I>xRE!H6tYSrQ21QHnsj+Jqc#5!C&O3Bo)6M zsb>7QfV}jva--p#*>I;~O2*)8KHef4A?tBo@ZtzQFyOKKNiDCAFkf;DMWa*!whK1O zw9YLJ`*Bn?uM>a=J5?3M$eGQF2A5ThNH zoKoYxC$D=^$Khm|q^~5xv$g!`4rbO+x5ZlfU4~lvsa@w@PNwDZ^0D$aw+-?-mC%j% zxhp#|S7-O~Sy14*c9vAWbaLBK8>bzi5nQ|CX7z%!CW0i@D|e18G%?7W^kyB?8(F3y zwas<(Cu)6}TY@v7`X#QdcFl_N*AHaAP_IOH^D_1%HN;`I*!BZ@ey)_0hYl}4nJmpc z$Bq_{4*M`gMUHw^A4Wi= zO5!`qV7S1Qit7D}*#nf;&G%Z2Z>x9Z!uXiya!Jb1)L);JQAig$7@@N6|C9YFUs83{ z&Zhc>_u*xMYPk2{E|8On`buX)Pd0`#qCOd7bi`k@(7ilGau#ZiXSA-JOcD^zwA;NO zukA#Iw6kjvX&>DHL*>L3p;?oFeOIUew$6FW1mWM zm;_*rNU>VAE;)?E{@Hj7yOo%3xTODZQt<3{>x6+DkfVm_&XQ0a8!r-OP@b^8e+-{F zE-@a_%`G`d4A*p2&AshF&%OrRSRGHj;;{TBvCM5}CS1TEdnwA;{;(MQ&^=r{RDId~ z%=KUFx#a&6dzNthuh?_&S}9|Tf8Es3$+tfjg)!$Y)CYL3K1YPo9;Oh3e_dQIhOw(- z-p4LNLI+|HoprGFr-+X+ z;d|CL?-|@b%f|`+tq-5>9)bjb8KJ>zL z@}i(iB$$_vzfDRoD4s_$5*HrDN>#?BnO}_2ylvBF z&3&*(*i_6NwS_Ydi@-taJszIXIyq^ON_#W1vR3=9?`n;3rV|+;3vpUb)HfcakUcbA zKvE`2`*Yu*zN0otj?~0bV;EP?rA`YL_2$*E%bTVH`{^F}XllVKL`=|#2Gdk3n+&E> zjgnJvX5z%0wVA)yqBVkTJGK)P(by*Up;2!%Izm0#*^m}D&Wg-j+6nJp6#Cmx=b~A+ zWa2$rSLbQx<)7i>(etrJt$P20QqH?!F3G63xh!f(!ogVBM1qUMv%WAwJ4c)DqfbWE zWvNKxMh@2T+y{g&n2p*C>ci&$(Dt7Vgr%<=b8~#?>HS<+G*^&5mJ0co?IWzKJAj9& zhc$$0)UJ&PHDI#Li1a;8Rd>xuHhxvvlF@bhT2l|?K==Zstt(GLXr`^)VA38L^tV9Z z5ZsHu4iE2txB&g?AN#v5#v*JyMu}336z>M=b)3rX;4au|ay(>G`|Fl++3(S!5;S!6 z28IS3{XxecV=Q=PhR@*7dg(}>4&1nCS=v&#%`0QnWy_>X@|OSC>hkaO=A5=iH$5Kz z>cd_z)O8ksg}3r($ZGZ868)#POocQ5-`{^&Ag4NE$dunB#^UuHY#LLn#}OCe>5dk9 ze~#l{niucJ@Bx{HKq9k}*4kdH;#5(r$7z9Y>b<`vM+BU_ePjVLW3c=94d`vvnijmh z8(Q}iG0xd_hU>?)o#DCWv&8xuVMCxSNo5yoL1P#O0Xhe z6dNqDfk?K?W|Id8uz>pTRt*;dQS40q$G&!2@+a~VFFib$7(nh8NFGku`M<)1A=OQ> z?r#lmyt8+@8hAZ-KIKlAZO@(}6c2~EubJD^m!MF5T#I%w{@pJtNzD9xx;$u5yNh;F z+s#gvcal2eu>5<&5Q~*^*%LYQ4ra(EsgD~2OJEUw<*OOV0S9tj(nK6Ph=LZS1a=SH z+p^w0Hnxa;dYD~>Z5*|Pu4y43riCx9kgTGv?Bx{b-q6UxOxP7oCJpFiyo@wFto7dF zt2NaRy;e$Knc*T&lDrr?)+8lLc^2>`Pc$~${wq}3u9Kau31aP1#AY{od*G(^Inez@ z*=`-n9kZl(T9U4;Dqr5xm)X8P1zLK6KkwCgBFDuGv@W}!ef)*ad*O@Ao@z9E#D%Zv zH|H=uN6>EcS4GFOPOZ>zqvCvGZRYWLP4A%ZsFGdKF2FJ% zF?~T%tfeL1zvCNekH=x>%lQpvpems`qR&FlS31e@0)1_Ezs+~^ItP=Zydga)4L$qe zUm_*Q=pe&-oc(dzAEcda7uTC<@IAam>LRH5`vE8M^heTqcNoH_#4QL+F1sQ~cZB}L zNcxzquZdNr`vmmPb4Ndi;r=*~AE-hxI`g3(=m6<;$3Rv|t2|D57t^+7!m7^s&K7mdGZ|OV#sm*i$)aIS- zNHssB;U1ZF68CmBU4dyrP%;#=jT)hsvO+FOCb~0UaZ0EuznxM zX{|5WoAuc1ZhLk21FYuR5h-8mj{Xnk-YTfAu>BWpaT=T=!5vy8cyNkC@zUbOi@UqK zTXAX8(o!6XyM+d)c!6Mn;+~)<-?#UF=A1oq?#{)T$@QAdO4hrc=ci%Hf2fn2;JI!4 z+r=1VtehU~yB;{DS2zP_J{JEqJqxfjHrFmDqiAL}6Cdp7gC-##N0rocH(hx7^$c*5 zXPIY?!F(r6nIX{OcSI6DY5L!h=VO$Y`9Nr z7@sWZCc$U?@jvMa;gzBq6a|1^7ydZ=6I&zlJUVC6W>%!Do;%*0 z38i;gj1p1Xi5(rvApFnuQNcDG!nX-3-c3m)_jVRUSzxpmAtm6RuWF0c!4b>1*lKZ< z3_2`7(EBq@!1P6Lyb3lFRDLqPe_48#6iTw9{|kV&hml0Mo7D38*J8SpV`(*6P3M&o zVYU^u0>!2+H#5%r5yPm+e~YTajRpcTEV*KAqjVw_u1i#Z<4sH3ZJVN0m_D~|N4Xrx zmKG`&o|Ut%ydzFUp^JtTJR)!{PrI-zEN<3GVUFh!4)=#i?4aN2j=F3F@~?M$D?$s% zU7A#&cqL0j2EuHRX%->@D(*v4R)eNS{=+Yye-J&lloEtzHp@0(Qd(U#3>0Xb^C^i$F?S2Jr$_%0LGwuG(|BklDv< z_M0|*@e6Oc+wC_2z14%wrs{kBv9+e@bSoU4mJe2af6B8vRGhF>I%5!d0$vO0?O z0LQ6r#+oHP+lcp765w91e$v$uYMZmSKaY5Q5LI0ww4qmRsw6KvF%wh_v>D# zT3BmjBdk(DK^pPrZ{Lr@HFhdvW%IRb_N;aJ?W7PBe|9=Gt{e{*jVfER7j#1rkp(+x z;60J5Ay!2RzUtbH6(+0bK+is$7 z(|o_^1Zr^SNE9Apqwz|0(7naLN&VZD+Dy88=% z&Od=A;1YI?7eXGr5f^Vf)k^hP>TL+E<-|VG!>}8%oo$^AY1-?IdWqAejhqPl-iLgP zHH8AVuWw^%Xp&V>gfeSvEzNc!ugR+{JOQcuC^VG!`)fE4eY zy866jY8Uv}&NCm-8$wzw$pg%Fi+y+zgo+{0W;~deP_NM4 zd;IQG9eTAt`jfKp*wBc%)Jt-6D4h6q-*b+Do89fStT zCl_(fPHaKBdP^;zirHYeui0DLUxaQMT@5JA^ye&tW@MDID86ks#;~rOixIEuh9s!1 z^(S%*vOUD9Zlog(vNnIRQU*^UFb>P-L^vQV)p!(t->S-3$Ts8abGCBn0Ei0*nN;nS z(SjOX9g`q^M8EG`TZp+=sN=xoiEMF_pCH$tL~><`8~DSA>wmHWv_j-8Q93T!rt_6F zR>&F4R1Qg_U@U33#>;`Ra`B>{kD=lU5xU7eCAEmdAzi>aLFMb%rBhGQG@5sxrn15t z$eLtScPusp4)n2>*uTh>PAmS$oZFgdvcn0?VTF&dZ)O?^8)mWMCUE|XtQ{ixs!UUi zQhf!NaOE4v7Z_T|ywOziKd=6zrLS#xR&MaqeN-_*^=%FKS|Tf3Ny%A)BZaQ%vw1|W zOk}U!?3lm8F({n2=^j6W{-a?5V^?^qAyI{U<|ne^0x<*Oper(pF>y&h8(JxY>x{~= zXrqR%8;>ArXIMs*%XKq%kAnNR;Nf&1L;t}Z%X>}XwtrHPufIxzhHO_Z@1D>@AD^u5 z_lqCA9s-^qPufW63f6@&@^Ev-uV~Y5jW5`}S3YY{NgZW;HYHynSw_o!khp3i3kSn75UNtbvsdyV(`w5BPd6oMUyB$E-;iYZz2elNp0sW5n%vKdYq6)0 z!-vUmu1WU-?7W@iFV;e6y{tljiP%(SsX;B(BjtZ?A{QH3U3tG^%r^GI$Q7y^l} zj*s7K%IkijPhFy*P%`{!XUe7i4b&E;POv=XTqbqSHr;;}O{A+9-245hpQ?68?r(e+ z{UhGij+^{jiooB@bry_^|2Y0Gjup=f`c0c9!~h-y*x^hN{xQ3-EabT?V~w=)hP6srwsK*f zD=8BU_SinR0JAX;*V0nI>UunMou)Y2PdY*iqo$7`TbwomU{ZYW+;(8^kVypZD99+jk1pChmlXHye;ouf z($Am14a=V`uvtd1dp5KsktWMMGdPqv3^%q3RsyPA&#s(0H1&sVye_+de3ob!8#&3? zo>{ty2aDOd;}I|5J^VJ=es4?cONS-Q@3F_;r2Rm~oh7h7US8YsPIG4ye7teR`__d< zMr!z*UgU9v$FqOY2X*QvmVJ_vKys^l**qI4gwsj-7a!GvF8lQR&|&ruf&+p3_*@g; z?zkmf1}isZ-3Nj?G$bxSRpTm80<|rmqGE5EFrxXaZ>zX{4eGxzB=?vIe9)kPN4~7n9Y6GP zC-Jn9(y-ViF1}xrFoO^3jn_`C3g_u=8^el5QmAVwPV8D&nGNEwBm)1rkUshjqODrqebI(}DG9dB)q()E%{Zs}z@wO=q5_ z|0W>;!ilstRpzggbEzgrZ7gf^yetKbV)zK3B>G)x90mbBWVx--vNP1(X<7g5POpQE zzaDjAp(OCv(c@aaH)_IZq(xk{#|KC4w%~fORm$qS6z{mY*V^7^Jb05QdGvs6Q-s9= zfB^c`8p!?j1PJrO(V){NWLHqVh&|o4s4q!1x^6CN!SbO<6O&zklwhz%&$-ia=ZYd^ z{VfX%ivFdBI>I(@yY}?vJ7OfvweL}I_N8-?+52-98N3tSEeN7c_Gj-~X`3EOtBII~02>xo=mb&J1c@E>f1H zPFr>?Q{SM$5rx|9)*H2Vo33H|itp;r-t@*} z{`}0&9owv)(WIX74A_+QtziEU*1GxqE@?~}EXzaY2pC=~E#c#6v3lsCUpl_F(B{Qe6HUnZYuoMpbkma?rD zx|Mfv=7OXVbz8PlE(^1r0r01kxiz$|jc$U=&VPTS#mDl)fZx+7|)j}C| zR@v~%Oq2Tm`s~?V69$&BIq{t(h_>6ahLjZqbx)!nZ8TyKHVG3GqSZSkV;L=Wo8^%g z>8TO;2@4ndHC|eOUvXY*T4|_PF*+nmGClN-Q26v4q3GCAq40?n2z; z)vnyQGqdSr>}K_P5*zl^Da=o(ZUSlK!7cm>_kJJ*0h%5I$=}^erNr%Iv&xG|>h`lp z)>*mIHAh5J@!l(o-#)qdXN6+cBVehms{Ibmdz;zB&{SzYm!#$yKf{Q zrS-7v?5S^Twex5;K1JphS@U8ys~6>5;z$4(s~MeI^JI)20?VMbao8C!m0i47(sQFL zZ;Sz7Wh^EAhzuZUZT{w9OuM}>9*e$ZG(%w$?EHqL0?=Y2hKf!>r+I698H}8iHQx|iYRF~T>>K$$t^s<(E$A7Y4#~|^|KyBpWi(8J|n}|q)OCXcGRm* zGee|j)Pxk=2n;LyVZe-DeHd)BxsJoHK0%t#c*uDCu((#ahSFgt1I*%cHUMVmB-;2C z?E>_z?EMkuVtkb1G-);peT<#w8fd&h^u;Y6WRFs(h@afUO83l|*C=aQ)7UAyk9|;e z@bu6C-=A#=QlKKp!5UOR1h?oh*g6&%KYp1oLGo9r(-HAOpwP-1s%KR^t>EraMj;3< zpoZW-k**4ytbtZNa#xh+Eq`NCRKAIlj3Ff)X2PweQ0YJK@H3RpUTE*`af{uCt!58gx9{lboK=g zMC1511`}OLcVDAC5JY^$6H`;^yf%ztaP20|z?|OIEvw#$t|8bkCFj7tWK}cvDGSh9 zenNoc{6W?lCNhE^B}-nQXd`n@4BUV^ZV#rd2e?xz`l_nhJZ`&`S+2+2l(eOYC|-cK z^(SmR*IXxvG(t*1WkGJzyV>_D_r1GZFS|o5zz~nUD98yj4EDd&- zYiR{NQ(l`qbiE^5;F@&fHw_GhAN$E1?-b;2=L!aV`8e9DrpAC~aA(E4O0km~!#LXH z)#|D`jSLV~ZiM@T@94BUc8w;vc~cAuj<$^l_G8}t_K0LCw{;_6^qIhMxF{${kqZ@^ zk_gaGaGto;(P(TvJ}U6{$o!cTz#n3;XKq|gjJq108l<1^SQFZYJvQfTRp})_QEBbJ zv#2#y{+N409FE!eIXQXUMzb7tcsn8@SNU-SC+2vIH>SyIzf3q6Z<9d?+zt}DXnS}y zb5ZR>Ih!L1M@HlD_)}`eMS66(-TmqN&~#veC=ZdlRw`ZjDi5OB6)sf^W98I`PcFxV zgEeMPpNvEXa_-QXJh&)g+}w%`wx)(aHeI{;=0;3t;=6uZ2CQO zW8AtN9YsdY>rn;lwA4|!pHVG4jaT6C$CfMm;Mh9M9f(V8q0)(>m|b-S!19zR?{YeX zb#pTk7G6g}a}XCd(^`YG?)#Zzk@|eBU38|z;y#@iJA$5Z%M>#o$ydB>Yf>#rq#UN? zpW5N46ZuJx%VM5ou67Y<$BYJb=`X?KkN}YK&c%K7Pg$I$&S$fu4k0<04@+Tv6XEzw zIHs-Ct~Hq}vTnwEg}6okOeX0nLd-rni5oIpd?>OVJ)6PiNU8I6=nHpf+V^Nn1@Tj- zSFExku?7aQJaOx@X!BH)iRF0olfz#PktvG$c)LI(MI@W5tu5% zwodtrL0HJnkZaLwru58S#<5kz;+vYg+X?GjoGpucr`ZZ@BBw`#*7e^3P{B}q(TbVd z4mSVnxtuAMTLx*yHwrurT8B88SB79=UX&Bl2?L*u(QxLN86YK&B+b7sC7 z0h0OM-*?$s=kn#?{Iv1g0Idm89Lnl^Ns77=t$PWTk9>Te2jd&AQ+S*7I*+>$Rt zGaNZpIq3jNBP2IvtRt@Wy}SL}%4XCM$SgCrSn_8Y+M?+sh|-|^MZ`bK)u30CX6QA3 zN)8*!yZ}P~JpH-SI3cChSZp_YV#1ld)9bjSnUxCfP5rQnJN5`%qN_|Iz@3u0nmX}8 zT3Hpck8Pt5DDJIR;}o6kn2&Dx$xc20QaLq!N%jGZM+77mS8s39>f=o2LZY}%)ZX) z4ch0UE0NV;Om~cR@Uwp$f{1IYL?~Aib)_C0FZC0ZS@h$NV`Hz>Gb`GtXT{2Hxi4_D zXmUCcfIGw6gMm6p{CV4nn2A1+C#Od~AnR4aI+CNT*FYq`Ho)MU9)(JceK;yZo8`b? zH2(7Fn?PE)%eRX9NiNIydktD9CO!ahA7$vlQUFA=dwX2Ea0%-wO6|+mW+a_#tJ|o1 z3*|$s_?f?QISga-$2gZ4n%Bk}xxwuiXn#iXYOrH((`9t!boSRC^w-m)#J)_wG&CF@ zXg!Yzr#3h76)GQ;)1y>6W^#rOf*kR3mwYZ%tBhStM@eZY!Ua ze;90Gt5*sCw-#$GZ$arLYzNoE)Zxhg;mCZp5t=OK_44QB-utMyK#oH<3-4+ETL$M_ z`QK3EZ&?lSW10z!>)fqyuJeLWx*nIdJMjy}>(8?qKZD14^Crh6od)$;Y`&VbUK9EZ z3h%)KPt0rJ`o0r~xey{s0|EJXUaN;WzCjkgG^CzK1`KPLvHBHxZo}rnQpV^i;a8En zBumcbeP-)2fQnWSDxJn>n&^B}I9I@>%o7pisq?Rw8&0N<51$|WWE1!vE?)Ac;3S!F zL7%$&rYth|vJP^YLf2hLDp~i*(QRbb@`2Lp%LkvQ@o{suJ#QB|;`UvELr!pIVdW&} zfQfMNGE6XBjWA{$uLDu_HaPWh{VQuu0#Dx&m}e;NMafu_0JS$v3jN8LPfikf@Prmx zyee&a@xE71&l-xJ>j2;N_yP^fkCTrrs{;u zc}~9-ZN?Nh7fxIX__7a5ivFIXTB#JPNcY!|iKF^@5(oWyEoii%|VA$e->+ z$X5A%M&-Ev$4(=lK*9H$JGn2|(l#pu@uU7*-xBg$)us`8w$3XjZ)@ecOC-;!aib${ z@JW8Ojf3A0@)VvUFt+T1?}z|CrJAC5ih=%b$-WHEaEjKO_7` z^HgnkWqO`Hgf86@+N!p`(dC#hCel6cMsBhxvJ z6JEcu-078}V53%*bgM&mcvlxuzUw=YqNnqGod$QF+;JI;;s*C?NEcw4SjC+sOp16$ zSSi8;uMFqaN2b`+)E~!xE28fi{D_xHIUEVmh0B1HU#5MDARQs7+Bb);CNOs5+=07F}aceg^a}5;SevgAQyJdI6X}Nk;OPUKl(!Bf?<~29Tnt4tc3M8RKVnIRg&Gp~10I&Am_NtcoGHpTe^E)_P)Q7hlv=6_`8}E9C^gr6Jz>X6eZ~ z-j3RIIUXZ-gPUB{w`}ee;-kwtHpo72gGun7LSg*afdxYC1f{f3#->Osp0ocvktX5< zzGu|5C6D1+svodG1SU=>_sm;T(qx@jA=(8iOR$t5YJs-T`jYb_pBi)!zS41&%4X5Q zDcs`j$ZO}*S^qFb8gC5BiR4#DM4mAjWDG{&<7Ef-IX^z9u1Uu}r30-KmFJ>XT@+UJ zDzJ9|%+v`$)jxvITg>)5(^@y_-MZ8nx~zGv{K3%EQ55*_8?msk-%t68divtX{+lkAz zK_U=Ed&+!=HT3W%5xCU4V}%;QNS?Yi54y~GK^$p&7>N)m4+~uCSpg(7z_}$c*78-J zr7(8A6om$}A5mQ2+?$_i33}Y5cniR9XKKd+H|&*tw=tuV@jw=2_`FCg|BTwF6WA9~ zn-WF&crStHGRLcT;tXeRjIT#!+wJ(hi>@LHWLU_gsgFGw`&>yJ(>fHLlcicVUP-mx z=#V4j=R{0BhGi#Y{E=eaC6Qt3Dj3Iz~?EHHYsBpho|K*F|TDCuFZHZM4_948jtww)P{WjXtB-xRBe|K zl$QbSWfziLo9v>A6)rSMLU1n^4TzdO5~s)G`d#H7pG{`*oT=}yWT8#%Zt#F;rgGn0 zfYe1oF;HV%+(tm~PWSP%2igSR)du9of#$S;PCkndoW0P+kAzplrm9v(FI^M3q)$^f z6H$h2(af<`&<8>~;n%=&|KNcq_|tvQ>=kMYe#AwD0DGTUdL=GCf zRHA-#bQo}b3w#&@A?av_{OqjOdXtN*D*_g?1>s>|3ri8AzY0K zfe6Im_bI;^^4S+LdGN-rv$ zFO=*tC8OMHGB2yIDdp#}((R@??zGLZDik^NMTlf5{W$>Ybh(-lu=Ntp=2wzHtnZ(m z?FB8#6>S&!LNmh8dyT_KFJ`Q)VbNVBXAMg!=#Qdei61K-WLxMSaaCF+F4(P3yy!C` z9|)F0J`mSQ7k$*m+i0p))*KGPU3lnnn;Wk(@Vf(|(x7FB)&6pd=@FpOC0EIz2;p}Z z6|=neqz&2VMey>a_O8CN9(VUr!hbnm%n-y&L6;df_MO0up=U05c@26iO)E3o@nGvR ztoY9o0GtZ)8dJ;0b5PE5)Kg^HD3?pH!tJ+^)J?Agas7O@l5|S6v+;C1O?f%KOe`jh z5hiJe)eO>cDy3IBsDp;5#(3+)r5S+zJKY_zY8R5?P;afNnEP)t^?<@FDWrfSRc*H! z@rx5|c~l3cU)EXHc|cj%=Y;{_lPzTKm=5()-!qUv0@>vrNxcuKZA^gPWk(InkLg3d z7V)J!hopK-2XRFY`>`fWnUk#_X9r+^SM871&UO z5;=KU*5_+wBRsV?o1J;LY1_&xkz{8KG+a%%`HW$EF#GBMrus=C}Bar8HvUG@Q2m#mka83%L!~~ZT0FM zheR2@byH5&AFxgDvPQ$bJ#NFV>S}<{D5YgKyX9e3UMh+3U;_`{QnC!Xz@pu0{nK3z zZ?nyOZE+g4*>@R$j4YAoq>2Q>z`%0?7lp*JYvqxR0-H@4QAH;aP1Vk`BznlE3IvW_ zl*bMkt8ri)rZ$S-IO3$U+o6s#5}D8ZiqDv%#kc6G<*e~ujDgj+B-grV>9j2vB6qQH z_3I4x{vhPO@;?9Ra($*$w9X!%hIHgwK&vPLrtU!J6RRW^L_OQ2&r9@&1Do$fjt{fL zM0+VTgB`Jpv(Wd*pXw>Ay|TKl9j1sfIeNNgJIprrV2;` z77G2@D;5={P|4CRLL{nr+N{-=Wi^|oy_95rifmGQ)Jz3B7|`@8Blit^sfNuY8fj5VgOGn^p94 zRZpQ%yrG}S-HQ-3h68*w5D}hlSmPSy28?Tsu1*pD3Bxu*Y?L3Ht8k-G;1m9upNNpB zc)YT6Uz9QknA?2Py69`fzIYtuVd&HM!@0UG#cr#3s{VhCuU7Tg^?=Qf)kLy&ttLE7 z4YknWN!wvDSF)+I?YDFWLtv$Z+NA*%f*B!SH=?+cFvC3PPvC8K*JzdgBkleNtEtxk zJFn06n)D|E{jFS3?C$>m!S1>b_!GP-oQ}Q|0jsb1NdPW9vviB1=k=MHOcy8hrgqZ>*{xaKO$cr!8TOUS|SaW6L)!*n`q zwYd41wb`_3u3P4XGmAI(M9{c?;RvS6glI1kN~uWZh{Vh8=N{3OEZ9nSGcr#VR3;b_ zy9rY0S&2#R$G)+c2*R$VyD3XchjZDh*mQ$Q%0!o!Z9Hie?eCfInI~f|LbXNc7i9fy zTP7sU!`in<_uD*Wm(6CMt=JN7L8@Lk3$j3%Z0OM<6`oIKKNns{mQ~kZ%35eNQb?XZ zFDKi3SU0$N2F-bq*2YQK|KPYj4!e$fQxIkjPZ_v~=C485oC&`omiexY`_S|vQ6-zJT}+woei)KiggIbk?!6*F>C%p>C4iEZB}wxkdgXZuhy7lGOw z{x_#P%1PdH9lRZ%bJSbA@ZpkE@RxdyfGAmi-sCYp1b_X1NZs}SMe0)iZ&LS|xWlZ- zW~&eZ%@spl-GK?I(p#-?91zeMbK7cUt69W<03?bA^!kI()F30jhoRzTXI?nW!%xYc zi$aQV`MXVcpDS&FL1RmBQ{j`1#T`JfQX99dyakDwXGG33Cg(R;hUBimosTCS`e9qF zrG9XP*YN!&@&3iQoq0IIS|yrYQ%$ytE%q$D?tDVqI*A!G89Ud=g1U&ZW=OWiU?E9- zkw|e+zp3G97xb+n&2D;~%kEEbZ=^&PUUb5_r)BK63uSEux6GF2FxZ6kkvPBbFHQ=@ z=v!-RrnS`#1@KLi)euApFZHQe3l!e|+3CCC`}9oT94HE9iRr0x+CdL!v(;j2g<#m!r8|f~R^Mg{Xf0 zMY3mAyjx+3z&KfK+IFob;zuuvgt!(7h4)itM3j`Otk8llW-YhsQYYfmvuwG-TGK82 zL5svFVt3C&I)52$ynTV0)y+ttZEbN#ht%J7USzIs(UnLy8xLGX7oNn;*GbdK6v(Th zibB(;7Yrcd1{niRRCU`Iv^Kh17qdJ~slv~S%AiyPE%}5b>x)$`GVv?S+-Esn!_)&p z?NnLO=o|UpuqAL5`qy#}UClF2I?d&+O-La_N!c2*s0j*^(Viw?<(pomjx}vW0-7IF zcS+O_BwO+}*OomB1DYbFAMbh|^`4!By&p86kUek_L{@&31bFJDH-TlSOn#)hf zpAgBJWg<#xO~=}sY-w(qmir1ly=i;v!={-9eryIMTYaMIR$APdMULdC+Cen6888mQ`5S{b4)sU;Om#Ny{gbyn%!}Go_VWpA zhnckwjvIX0EUx>opfvSzo1No_4e)7WX{P$96ial7Zuj7M}z>}dSOAZjw- zVzz1`%J1MawnZdLg%LQ!KmBPp^49JUYp8!1oK^&V!ar_d{lWTg-M3YFi!@b;5~OT8 zgcY5z&|k7W#Pc}#A2_=)q?@VDqWZJuTIye?^N2qTC?^Tbi$M4f_ zWmq}7i>NPdeQVe~cG+!BY2=tMzR5l2_)@t13X0_wIS_kxD0e8?vkQ8Zub3S%6aWeY zd=!bCQ@R|a9QTdC)budD@p~-~9m=<0nm)CQO0Y%oxlO~8&Me@2P1niJfF4)xPnp3J z^4_VCh=f_ks3<1y1KW85y-H66$jy1me!0RmRXd`QZ*cNB9(4a*TUZj6Ox;G@p#^8k z6H3n9i!*hd8wYka_?l=J-+x-@c~^MhO`SwB?{4*IaT*%}dGli5$%ZY4S2VV3chxfES#4;JaB2IwYiG1>+C-HQXK?0^lez!CoUd+Ce`oD z)=!~EP9X}1qP+?}^qZh5Jykp&7f~1KAe^jY$zMs}~Q6L`%_PdGw1zk}-j>JTEuzCx-|8V6>;} zr@QrmT3Nb#{s#W_8wq~)`pI5&iK@0!;{y1w&3>65Oa*@!{k4s}hCQ7-vA}^PqPLB( zw;J2q`FD~JD8^qT!Xm)BrEy~zeyBN=+q^#fS^OeCkxEK=UA(CA*VVC{Io*$EsB9HY z2~pB;sY*EG5N_;Qk(1!}DctE=-@>cDM-De>z7F<7zq|~~uSk7KO8g(o*aQR;`xWPS1pJoB3Jh|sRnVp=A>bB&<7Ex<->e) zC^G(K>)zLb&d7`ZC#@^@f6%&5s5%Lc5NtD@C#6wmotyviy7?U7}BTM^0j+__XTynx4~@@KyRh4t{=^sM<~L_@q4VPf80xxdK`rlv)HD1 z{Dsyi5Th(t+yXcV;B1eG#u?~ge#_q`Z;ZM=3f8og%+<-RE-m-d6lnNCrCQ zxmwbyVPs?h6SxhyWtcRaB@##dZk#;KxP7(QEpQEdztJu(vY<%a!q%5W6(eJDO5=Q6 ziXP)`-%OS1jzbK$z8u@SJ38hgUkND=kTRHzrZs(}3?ugsk-@M z-wLe$S|Ss#r%HooCBM8&CMV5Ah0e~dVWX(zkY8p8!CaNZRPSQ;8$@@o5Xz!Kuth{} zq^Tv@a*$W0i;y;?{)5?}_FAlT8Ox*F;A*FQSWM0(8NkKEHfHo@&Pg;UE~|n}U=ah) z;Iub=sLC!MN$es%lf^`A7R-4vv-Hb}sRClIF5v4{zsH2sPic-fJ^W&JnItf(A5b-} zDse@j$uH5yXIys19JQD}#HtbiTdrKSnG%DGy2G>&^4Oyr`Y*!6!2i)%t)p~SEB6@p zC+LWgr%O|05i&^ph497bpvY}GqjzGUko(-PL5nwAEKVLQc4*#=dBo+@%LKQ@hoZ5+ z4^gAYqUtlI(^Wcy#d!6V!Dgy=_RG;%g6;#@kT`57h8??Pwct9Hyp}g$I>^g-1x;lu zo_~2HM%m64@HUI>meNSaSxEAurc>Qb9PPhQ8Jr(uYHJD6_D zp~>a#s#7vtG-JzB4DO|sbu1H7H&JWxZOtPe6$!UK!*xTVo5br2Q#lt5=TjIaybG2c zC(RhjU?+)o`1eMaZ^6g-tq6(+SJqQ{YQItzJj6%B?B8!!2h6atW3#+!`W9~l*5s95PzDa z7Z?5zdw7-Q(wdj%Vcvikc2>&@K9ecDC8WICbeIN9_D!wUU{E|0-wvBtIGSKiBH z@@kDqzGlU?)#{dk>v!0=&5M@>Vnm8yX0jshPf&GSGC&B-2^_RVutwN7O7XW~H}KOI zz=k|>2OsDEjpJoKxE-3#k)_2HK$0a1aVpsIQHBi}8t&*qiu+X37`y?ldz82@^^xEn4%o6eL6{EPFM9$MG7uC%>U zyv|ocl z;CHB}c!N)K7Ze;VZU3d1@iVDUdj5%CnXSmcm&A(XXSs%wm4-xyF?d7uMS)_#^YEgG zaNiWQkIJOBvZOjbIXd|AgO$*)9Gy~uXg2shpzvyVhG5sOq7CVE z*HMh2J%Vw+eN@|V1?l73ZH9BhYL_k^g zJ%stlNHad&i5$uVGC$E3xyNJe2ZcmyPjdl#$Bk(?AH_71VZ-ljJg>=?h%`tQ9C+&E zJ~&dzZ546MxvVT(H)%FmACkW1a(rx^cbFjS8uX;z8w_=?SOKBzbz^?!t%ja@m~fCnmPgyKu4qCO^RR@@oM?2{daO zSW?#LP`b0YmzPwW`&z30;+))793vfIVNTd@AeAQ>^Nq1eo}K!;YtaVLGJIw&9D>9b zzNGdDBL)7}R;jtV)O@-inSONDsrty73Kc^(Vj3rXfpsHs0ukYLP#nzSXn(F5r5{#( z_b)$`vhOtOezS~ygF_~XveRF?2&eR<*KmRY`IYdUnIDs5Y)%{IZ!8C`oRRT+NrSRSN8h90U`DOPsl#4@|E74J1oAD_@6Z zcua)RKVr;1Gee6-@O7|R{_O4EpyNJOz(02lsA(WmGwm!0}>lzm{aOdTHK6e;*B ztEZ+1sk!lV)${PQ?%&Bw6Br+Tu5<@HY@5?PLQ@*MlN31qRU zWQVq{WG6;b{2m{IM*(reTDM~4BhfgW`13e-4gCeQ|GgM58H>9sup!mWJYMR;(h@}iAOMKI+5ixR)Z9*)OJHU#Oli@G1pi>?z46R-9RZ1LG_q{{2D;(gsyo&^=L z^TLbWU+B>$ZchI#UR{kD#j?t!0ODAt1~sj(=4VKs$v6jr=ie59OjafP{RUT7QyN8n ziv_TG`?xzE;TX7j6Be!hx-YPp@MUb|qAc9vGWNTdbog9aH&UQLBR-(ifG4#+4K9m* zUM(RK6ClB`p4tdSDp~!_9J<_-p7s!K^nrf%Xg<zB8-Dcl zi?+p!yStU*PH-qr@wT{2aBXob?h@P`N(;rUxDyEOPJ+9;o&28X{O8D>xpQCKnY_;A zMP|Nx@3lT_k;Hg`JekgH(=>ML4(r@#CwUixsYFn=GFD@#j3c@$6g z$Z$JqP6*-;HnXE~=_KE$9CP-`C*7n$&#P`VH`3NCG#)X6oZO5kbZw#FBRD=n`#l*^EgSBdgGu=CP8k`+Gb6G3u8+%9fBt>V10GffC+RQ3sg9mEi-Y zOPJ)z3E3LK_*(ts_}&!xXtMT_V_mO|DoS{ip5Mh!{u9Rs*VXR zVI^5wp>N{!8M>Pv-X?J_jP|G4wM9|cLuF>oCCthNUxS{9vu^52THVc?KlC#PgsE)K z60=D|p92*vQklnj)-?U&;p45h&?Yr|#?mT11~#!+G_%B}#ZW+x<1=9|BML;o=80|0n=niv) zN7gG4f&OT0#{zB33q810qLJ*H<7DC@HS{&#$>ofaaZJ83?>ErjK-ISo(IT!e--&BY zE#xyej^)k-G3D3OFovi^GfoQXDyY-HZ+~pmz5OUay9=C4U?jdDK#E-m%H}P3XJG(O zqR9H@hU|rx9OI5tAG>E{#qUj9anwKuyC{Z~mJz8QG?lQ2tP3eL;u`u08n#@EZ;FHew^4bSf&}zc$CV*? zR?wNi?jwjEYwjC}$|N(@w~r}!Q_F_OdPSfFSh3gVrd*G&sw(PS!FI(fmOcqkV|Bk2 zO$?(~><6LfpEZV<&DT0-AP{)dPwo-(G{_I1kUkIfu)ZP{Bn5oZv-X*mIOlUn;@f_L z+D5A_sYMLXDT^C?a;yNxE!n5KZ|*7D{Z-2rg9gtUF`6F3Z2K0YZvo1ilo>iV~gnP+_v3&^FGmgqp5> zF;c*##Q0dwBriRJznq*&@H|^Vt}5B#fYsAjo-HLv6#Lczp}Mb>{izm_){U0&UmSK? ziKK9r1^vD489BChwVBL0+m;cxPgo`+cW32H8AJpm1;c4V+=hq4Jk!4M+noUSL57$P6SyWvKg-M^;BTc?zfy(W zi%M28nT@@DjUs$(YYeEh46@dH%1}dMtnysVvfe#)rUZVRC)oi{Kq~;X!wffDUQ<3M}+vt)PB++4pmDkB!Ajyp+By`k_G_ zW87iPLt{s0jktgBmYCn<0Yhl~cYg24Mv*X>BhU#wW}RPdBVF6a^R+-_Ix3sO)7GjX z%C5naxYTX4jk{89J6yOw`$gBooWz%Lqi5a$qdy>N!mE;KOy>I?U3 zN1wB|ZBg(xV0^Ng1Bj_7v>@If^!^wtn+W|Zwl+L@ub$0vy9VL-jJzm=nZN!4UAqo( ztm|uabIZuwSzi_@=HP`vnwNy>aI8O093qe{u3@-*Ir@Doa`LzQ+W_s{N3zL*Nh>Wf zqQC9=a~jRV9qV}y`)x@SmHv$(EgG@+V_LVo=-05MaKocPv*7g4@$J5HzjS%Qn6yrD z>HIQnpS$mP=TzNmgS=$yz#b?C8T# zi9{p6$nRqH>(ZrH|4F=?o2qKp&gG4L3d&tPKo`U34|u-L!`?QYczAq0GxmgDs)>4w zl8csk=60TQdP>Mz`wMM(ecMUwuG#Cf?VxL5@iXIj#p04~grQ{i0A88Yo4FwdS=llX zrLOc@52wK_J-+?ZTlLd^wBy2TFXQ=1Qa3q#xyV#MJu7WYO0C}^LeTP#a?fk4uE(e? zus4(1(ns6xp}sc*bD58E**_bue(;$Ogy_>U0B#5OQFClg7+8ey0aex%7X?`yb6=j` zDH~GS6RnD$pu04fz4)#b3ep`r~!bqV;JZ0#|QW}%LK`wcyBtodlj}7=EU~` z_7{mBXc;H2mnY8=iwVV6n78nEy^Sz*HtHF0^8H@wXg~ve6Vg9;-jiq?FB{fIhivKx zEvneMgDXgjfZl83GMoBPH>x`kP@TbDi1nY`BKR4&JA?mlinu%Lmcs5s42)MEZg8Sw zIzFAqw1gIlu9DE*b0%h{G}#q;{$CE`Y^iVV4##sn(uR&A8Sbmh!JWt`j1@e@v@iGt zlfMEZ41LOH{9_s9NXZhKh*wW3D(R$HeIak??R6`Wwm#*NDbk&8LyHLM0rHC>h z7V-x`gnrCgc(X7E8XV^GLFG+nt4I$)Jd7L+0kf8ZUABIUWGd*rJ5vAPRh^c>LsV{~ zjLyG*fSCsGhZsl0ot z%wQsSTc*ZZG-jpfTx3wAm)SJE)QS*o+}9(a&xy+m$Y?6|XU>Tc21)h(c;hA$MBG|w zOy*FY4z%pqxbzzZRG&T6S7XmO)f9f;gvsj8OLSF8pl6n~7qsrqj z;{`R>fr|cr$7f$?_$$^MV~n%XKyAbh!wh0HAtKI3j@3*{&#UubeBC3F@VtZ-!(H)S z`N?j%Hf|$jIyJ8BI{WO{)x%&f?5g`{iA36~8mpTgG#8E=I3z1ReWY5m$2RHLHxg#d zKdopr;46DWYRDic?=9sv){?k#CebZ+dGg#Nmevw$A=YT`?DGE0f}7BJKE)XF zWt@rnJRF>BQv5bK1Cvfjev^chFMMnm?CXPq8NH$B!^iBJ!H4NOA#*M_rXF&&9Z6TsVDnMh%@y@uaiHmcS-gbj z#o@A!E)s5!9GgUiJBuB(u|>S|fO#(zMPGT1aPV{)W&FOD!^4fU-f@}Z%OdFG{0Vl!#BxJpJvbDz3p%S!ihBNA88jL>1y_0~^&_CAm1;$VE@F=Vp z*AJ8E;Q;q!mTC*6!zT&nOr}@Lyj?mJQ||aX-Eqg>07;9uZ8NvDXXEn`KdnlhuMjF3 z^0vEJyWoNu444i>dXM{1w$F!%joJjyX}NKGCOoU&5DIC;KJKeIE`3hu)s|=;{8@<1h-gQs@J(>xbZ%q#R#Q0PD=`!yPN$wZXF86V9>Ey=q zg90@o_k9Nvd<7> ziD$UUK%AAP+!x=*CE~Z9rHkgBvXKW$xNR;F25zU$- zvdBU(en}u>yOzof*HyC=%e#f#p;ED?7W3~(ySZ}B><%!Y^cip-9ViO)9D@f6d-K>; zmML_SzWakVk6^bU!wiDz9=KS}L{ykAbJ zUmhghrU(3-e}b>CWv{*Rv?$|V_ZV0@HQi*UnD3e5_>1uZPEpDHGvR3$_0u_2kLw;* z)DGT!^4%O_eHVO1oG}*XMFo6-+Ui&r9J{eFP-``j0O4rb9U%fR&?xvHMRiS|UTug4 ztsY2NP-WSZ5)xKCxJGOrT@QJ^RkZWXr$qbXz)|ts#E41Ek1vUZaG;NRh!bC&62d*$ zhbbYy!QX=w(~SPfkF{!4QO32a@7(qSw?bx%|2WHc-Mb*K%}{~ns%^Bm4!6hqKqV}o=R@YY=eZzT1(9EuGa+S{_Fb41*nl;U zdA%o_Q?WJVhFIY*V|+uE&I5kVg-J6FQm&}(6Ut|!3oW#OemMWLIN}Jm+-mc>a(pIQ zUx)=yaf<)adVO1DZhC3i3~;8b1j6)lI^7j?Kymr*f*#Mt2dF*52|Qx z)>bNup~Xif?BnB4G5iO`k<^gtR|AFfYr`epAAHTHQ69%@o5gDYb*uf+;E1x<&%9e9 znG|h@YA29Bb5`dYQY4E4-so7h!v4rPoWTN+plQ;BrEilP@4;1-8Hi0-2l2{FA{FNy zq;XCm8*lY%$L1notT6HK>Muk4hCj95{uN`&KiT@whwr5T2swGgU{#^Sk2n?_9Bk%W z3d<_G9)9%wHD0Dj(*%VbAQ9bc)ws z?!mgoetY|>=>D1gSxpF&;I%E@OI0aW@O@JAwltC}oVfi6)#|*HQ{@Fv6qzss*IG*a zwzaq#OkXlpwn38!iZ3Tsujp@lab9`m*I%n%83S(PUz6|A`KY^}#@2>-cP^1`6XC^# zlU)>rv|L{Y#J|A65)`~Y1Ew8|&-#pBV@)t#T_?K>XWWH0X_Do56xM`rTF^Dn+)*NA=q}eT7`oBB$&ep?K@VVJ|Z) zb@AKYMP$lCxnaFOMu~~aOZU@EebaOgeJMO<3++|e7$f7mfDkgDQ1Wm#VEZIoi_Pw? z&8Ylum=@Zj8W5b~eJ5)rSh3AbKEt`Pezh56Bv!>n4Ez@EvS|K6lauPp! zue}Zxjeu`VKO6c3C7g@f{|>9n??ng3^wqgTMeQc;jk@|3PkNvOWCJjgoifi+d71y5 z-^3xI;&v;}Ze$iGd3W>Hsb=oHt`o7tMZ7W;s{PdTp&Tba-NljrM~Bt6F!t7PD8!2E zylYFaBPY6{WH)X}7&mYY4*kP?AEGi-!~FMy0j1b~+&#>apG4ky6Kie<%=~3qnw@n( zBH#7Sf)Q91xT??R z|HF-Vid=m{(wgeOMX)-Q$Y+PX(=8BklhOe{?nGyi0nx+_Y{=h85}S@h-7S@k&d$fPqmG0H7YB-mdONjEy$A8_L5y}&X4a{qbJC#{1_ zxa>*mDE^B_Q1C@j?0T>CW+{pe4)6SMuTkvkaj4>d+bxlR1KyCNvRbq7LZJ0eN)th+ zw6)(RDA^QW@yVI&MTw&FA>vsFBWpwQ|mfgE0gbb}@r^Kv!U=TN(Xw&{R+TClCRNqV~-xhrO2-S#Dn}nr5a&LOy#y2;iFY zD5jcBp{QUoi*(})ZYF}yH$^rL=H_sd-Hnd$f@c`h{u5iw4=5h1BLdyHltn({v7A-d z9~7_p;r`{gnY=9dREqoto#Rk>J067;)~k}p1i|73Bm59X8&7lWl=>n_U?a^x5?GBh zDMHm#utk5J1u=w;r*P`ONiMLyZ-sM`;r~BkYiyy(4KcUL$XZ|a||&! zlYz?Kq5z+laxAq3qHbv;TC$FZUs-evjO>=~!I|3k7+dF_GSA&v_R=t3><|>c>EPxwNbFXH%S*7DqD*Gn zpvjl5KRex`s$pF^!4cRGR@iIRTkpW}iYHD*7Ow zCCKT|znFGB^3c`A17)+u2cMyAu0Uj#%(d8o6Bl~f)9h7}IEwKXe^u8Nt|F$Ug!ea? zA?6m>I(;v>#BNmy#LVMQNtj{LGZ@6Au140PVbT)O2so|Oe!a4`J-fs^wkPLdGZQ4Y zLNyP=i0a&=wnSletb>-mu`E4~Bldz2|c=VD87rt(^)w{#>`!eVL}7Tny6!oL1tk zHFKdR)-k_k6rZ|UAwQhCog);}XV5r+<=>8xZ-QGJJ+Hiv?4~8J`AJG$U@u@dl$rVo zVlFWNY01r|>VpdM-2SGFEr8HNczk}HkB~e=j9-c0+{L_va=vQ6eR&CZu6jykyc8MR z8W^Qx(qf>QT!bMFF(zQJ5Dmdf*I3d1Xg` zsu4wfjtSvX!Ey=1Zi-NfSbwm-;c~t?KXM&&bu)9c^g4(kg=P9FSil8;X&t;k-8)ZX z^yfU0qj+&25ht_nnKvXpAyeFa9LQmxHLH|BYCwRwbir_I&+2eS? zStCmA1tV+V52sE@&;Jr})p9M{N}i}}Ot!C`2PE`(8d~K^s5rcd)cgm)39lim53FIz zSm_Q|rhgb>7cA80zbSY{kLr0Qgj3KC>bvyZrG z!g3wZl(Nz{1`UO_CW@N5qV*82sHVPGdp#C}buJbkL!7$lqoeot78e+jH*^xbRUKgT zViQhlr?1! zZVrquRfHIm1U1?;&=dT9*Q1_?4&Dun&{<|sfqzCZiS#_B=2oXDDhX}+L%w91c+N>B zgDImzB3v;*RA+qb_Yo?{gJn||)$9?IT9teGgA~Ekt~G-*4?c?mD04wJORMgMs5T-#jdXSX z;b_-77ns;S_}{G<(X#*|a|J`g0xu4Q2muMh$K8EZ2?vU1jHx%>Yqi&x`!Y}8=y@FH6TSLAfgiE zcSnVq{HgOdWfiZqxhU)=!X|zIs*cHmER&hV>G4-HJlM)DkF^4qo*ZVn2qh5zlN{Oe!URs?Y72V@GL!u~%g*c`W~2=K5| zG4Q{zCzKfP={dNI2}gok7jDZ=@`Hxx&O`saHD+3g5Py=tszgvE`$lQ-u`{s=yH~b9 zRGYDifuN=YUvysE#zA^S)fZ+<=JU_ekJT;mvll|e6P?iyYcin!a?ESVAipQ#!= zfm!1QTMhy^MxV#IbLIUZ#&4)lcTl{hpD~Y{!svkSaK!{KG8HlP2gL|HT~r^gC`Hmk z8Q4UeECS40E*&lQ2*aNsgsVEzqO?Ck{>VUiPP!+u>KK}#blqUu-Pn#5J!jh?b_U7b zs>KsPhzZVatmNr4vm9}Yeo;#}R4(qFqUZd{W<-*o(7Uf?gGkz|p02jdlaWH07!Qw`+(83`1H--K_d3U6+Wa$JiVvJZ}V^-AKJX4pP4KgG>yLNnjr z)w!U4;cLYLbEj|Sl>daUoY@O?y1ko%<|vb5AFIXx)CChkfO0+J0Q?MoaZxjcK6^1< zmx`Qmn(%_K^g!-A)>5asl3wP!5GK_z83gibE7auyUeN_96^1Wnr;3=FtmBM4veMM~ zY3=1f?adwd$r6s`oKe3nKT(}Wh$bSctv$47q?aYXn?n>=X4b|1IXDaf>|OHXz9wK? zD0|UkRy1J0WmyiNZcDTsOe_u&4M|54jM?JDVZdWUuqVXw2nb?})cyWTBeYa7dWbB{ zoc6C?RD_~84L+~JSVxaD9=Y0UIPp2))r1G0H-m@IU`uCCNJ@WpKKkt!xBFFWa=7Ds ztU!Se=RsM&>(IT~+(?d~^{5?Z1IMNLRzPfP7b#Jcl2Zg1#rHeHXzg+MkZUD!cKCzv z`TeK^{?2FB(CVj{EtJndFjMyFjNFo!r*ZhVh=Nm2}@%-7OhwfE+cmG_J|4p`f z<)Zd@oe6M|_Gl6t#b5h~6K0#xir};wwVcCdV7~VGw`7s8ms>}nG1=6-Bq354Ks z6II%`-lPAvvH0HsPSjkq@r=R$r+7;~@W)1Z;x6eN&J_goSpfxmHj!#U85t3Rf}WG3 zV(hvu7r4Ea5((Hk{U;1MEnn=XE5!jT4@v9Qq2)V-)T+tmX~XWMaLeJCE~S-3pz%&4d&t zh}KX6c)Pm;WO3FVhHVZ?DlR1jDV!sH;2sVPVqx)u7rA;KX4%Dvwo-Nk}S#6l&~Yl&^Y;LPBsjY&4qZ+~^u?b#G4&TzPE zhy{*$D0eQOjNm&772_v<3Thgai?C0^dP-y6>8^WDX&(^hhm~zj%XWr( z95G7z+MR=v^V$_4Wb@9)fE_J@ITO?^6J@rrXBlh#!eXS>iSafEBIM7RZ1z3h&VnE| zUC5@@D75X1I#CS~djpb7W`7#dT&5X@$|VrdCpYRh57U`7c^}B9W}p42$VZp^Gq7sF z`1tU;H$zmmoc!ZH2e)JSh*E!D>120N3)9vF8K#F}{O=VywJ;0wb(h=5gKakSLbQtN`V=dXjE_r{)MAg?eSF9S_~BBtQcfl_!< z#^@7`f#=b}s~69b6#Lh3YpiTCSSVP-mW#WHIjYyCL|#0dURL>`ParXvoqHha2jx-( zil2;)Yt~Ouf)#6;b&^Csl*uw5^LT_MQQQM@q~-dhw;Z{jKIbkFI5aDKTsl_POA3EMv&meMGx7d^(X3fMB4_Z- zeRInzxP;Ksd>$_sM7SH-U2`!YZ?eLSk@l~eTdj?*mO5>@jcIAM=6}(w@Ctymkz!WW zJ||Iw`i=kJXx7(24W}i&;mf=ihvHqjL!yYS&o7ef;PJ z8!VAX>hxQzSkH`r>!OtQBrq=Kn7yNa(REC^kq=dyhB0p>$;NZb?GYm|Ld?}I#*_zF zFdREr2P6*(h1PFHVt=}$=MB%`rOwXai;RyQ$mErYm9uIdJQ}JX&hAi`_J0|cJdr** z<~ubaW8NjudQ3?2sh(8CfKbul*PbPo*TtVFPmdVQ`<`4EC!{2K+IG^ZVAnSc0xq}I z^nKK8T~9W>7TmmLZhY*&m|Li>DCX>Rpni+dW!07_*KfY@mtan@kHNM)8gCzcfklQT znrwgP95YSyoe0blY`U{`mmq@~G4mH@4y8{n3NUZgf~QY(o6$M}SWrz-((#?v+yNn0 zSCq+(?DB8qSiGgH6sCX2SJnuDHt_Y9rTzul5=p%P1D2|d}>n!d@6$$=hDjL;t)uMJ$HFOhD z*(v_>5&y2~_5O9xEgizU#jCKh73mitu4X&|+~1-lzasUm@$!da`{Oc?CxjbV%telh z7vayLkggZCws6Tr6H(#%fH)bePSgF2VEwzme zbW;SnAV4zeex5j-)Q{)JN~!|rWe&&h*+{tkXo}1*J*Omv1$TWpLPESB`;&Bh)qR&* zU0x_@2W^U8oOAOMy^!B#z?BNeTM+E;J}evYh~IyEsYXG zog54yF}?GUQDjPsh{g{??}0}nGcze|{-g8V{90%t zVV1WT$$=#fz|BtCoylWBnd3c&NNib+)1XP6TPYY1y*7p(ie)S9* z|{?n>X0Dd^9M48izIi%>M3la#2*YEiWmU znN(TOz`(uDlmG?L6B}l>kyzYJ)ED#vJviwTqK#@F7@uN+j|mq)Uole;KS4|nw}FH` zd}YO?Rw#n#?zMChAthYYzt3@e!)e5^^cvC`7Z9(_M}5pz40ZtiJn)+w2%G1M*@0sdF$GydAPIf`@+9+{*m88%xRm(2|jMg zijXO3IlJb&jC|gdI#61@;+uPZ?tEQ`hdKq+-XiOR_`&c*?FzoY=664THj0LWJSE>b zbra5qZPe!x8W?bJ&1{Iyo3#DJn){VGI9_s`4g0GBWWEkE8}(QH_CX<2jBjRAyl?^eX*~V zD&^36O9^7qjR7|8*l67Q=xCgy^g4`OF*>8k6)O#}q4QIHv8S6&9by-d_R~`iGl-CM z1me$0;i3NdSAdmxPhZch)LX&~iYgONu%tT_i8BLO-f#|K$UaBFYV_vhP!G%XKL&(H zr9TWLb>^GK?PEp_?!9S6SXcjW!23h&p2%B5@dotT$K>l)yWcqcjPt`FJQ}b0_DNEGOZ`t$&66YtPE#vlCbCB%{l(ltI^S*(Bz` z3z3VgSk7ef&(ZFs8EhX-TWanb}tv_x`vk>U&@Kr{xfa9tNKEU2^ztfove2=$=rIQma4oC?(pHnEzf4~jK|<$ zMtip&SH|vo#p`#WMGE<&a7@^%iS1vt^P^NRyLkTZCF}}B?aP>Bx3g^fE6A6na?e*$ zECMP;A;XWcZBh@!#;=XoUCd4jMvF5m0|_(K2?d@GCf?frKD!bXkV8W`FXk5$OA}1s z=Bv{a!VOB}QPKbOad&KAyE8*AcJbP=Z)Oo=?9i56tfrWgpG`L>M_9`$rMl*0;O9!t z_Q^O%iO56KMuIJk{FKL5ri~9>11kAgO)!A-(#zcK_JM@pv|DZ%+*Y;Ki`_hv$7r>N zx0A0?MQkzKYi&zc7AMHs@UhjC;)y@!(u3Re@H=MXM4nx3c9!OeG`a9!iqGfy8MC|v zepgs-^NrO%#5gA*;>|!i+hH%2@Z4Re5Q697Z^d+teA?Vb%>!2A(&h<`4;lI)%%;$2j{yJiJgtPf z>Sv?Q^`B`TG_PfE0v^Hxeh&;5=YjGc^ocUYwF0rN0z6c=Zp*W=4Jq&0N`1_2lS9~l zgYp7SQRwB+c|iE-(oW-;rJiz_5zv)Cy?g4Jf;(-+4GDqDtM3x_8<<+|RE6kWv*<#N6*RG|BrnkSKX%f4&6P91ZV!=iuXEqWjjec{ zR<|dLpU>belP!~`)a4{fU&MM3Kyxp;{oL~#1699 zQ>dPgC7q(K1cV7O_Gw%A6Vb8G=lV$Mlz*0dcrcYP|DB!zVng7JG036qcBSZyA*u7k ztiPO+p6YawxjD;zAOxft&G12k>pESP5+e@;kBHy+y5#fz;)j>i280h-ZO8x9_xk*T zUz&Q>keH0<0YaC$#wubANh{f+=BlkdMoso;RM7bMuYLDxd8h1o`unbvH!iej$}M!R z=Uc(4EDQc-7l=`@FL)qIha$v)FwYMoKpV;m#|2*q)DFqtmNeGb2qI3fWcn5bPiSLY3V!u0>exUXChWtv-^#MF-640^ z%)r!R_}Z~J#;H9Srhm@nRD7Be&HKx%h^@jbjnqQ19`$Ygk*^OYn8?zkD9Fy;R%n(N z-k>sVS0>HY?8#R151@OH3KBT0bmlNkLhS$KsDDGMJYb#o3#tqn)FM!W|ApycXlRAp z(v4`g-9322cItn;<>%S{W^6@z;(Y14j7qgR!&BfO^a9*fTJlA84+JUeZ4h3QRJp6+ z#Iq^sk<~MBD!LPKe~?k$W=U!&+xv3ib~^)IXo#A_d!S>W1%q<;z_?RIcWg)v$PUVO z(7FYke75D@G*7nEHRktfL7Dhlu$sPu8=0^TjbP10TlG|jNc0xd=Dxo}0vXWmwQk|l zt_Dj*S>>t$j4z$j7o8Yfpqn%90!PcG^sJ3WB;Is^T*71vD@=9@0;^bh#kK6ngn295FzLqYsHLa49?tJzn5nXU1Te{={15p) zO;e(SuJXIfTVv8RQivnFEjX2t=qU`f%n`3bkGwrKyDgCl^6>oRkJ8bJ5b%-~;P-5A zT66dOiNB`!o{cnh9RHVZha`Dy*8tA|+sK*}ZwAKHJ3ZOF58Rr3_FD$F(8fO^VOvt{ zDba&7=mRGff&};M7Krc4S%ix^aUaN6Jc55=Pq8}Et`P(!8sQW?VdjcS zm_;ETAB|t9G`U83eD0vXofr#d?&SLPt8V5WfprA)1N&Ix+@HFdd#pHHRLA`LQ9eM|TJ4z+Ffq`6$P!zS9*=>l=ie(Nr06t>8lad(@UJ`T!HW zi1G!Qok|O3!A;EX6TzSHnG$Brp{O(5*mZ|mQJv1-uxOOgzz({lJxz^&3F~qllpA($ zJ7hMNQO?iU5h$()=w)65eK*wuTzHVX&pdv#dfFziL1yT--Z9I4WJY_zVYx2Uf&cJo z-dk=@Pr`%>ypuDm%_wotlj$Ek2m8ps+i1ovOnw`4@pGU$TONP|05@!zmky*|G1mBg zEfEz5znrSSUd6V>J*?3ZIi~Z>f}GNMaqG@v!=Zvy$MZo=(Bl{_;QQ;pjuPwav)`Wr zll75!xpsYbzx=B6)E)FK9}_&hFMLG3D7krSYJ-ElZoO;VNkv>}>gn7?udu$)ZY5_+ z!6PyMNqz0piwb*#g-PEPb%u|tEs9k(_^v6$0(-mSV8&aH+c~Gk?|*IqRoey5s&AlA zZ&)UkJI0CM*@a|Ji&wVD%H&a!!HfNq`HQdvP0W5YT1&)qR&-4v`Gs!=@$75Ghg zN!F&~e|NeKM^>&3ntfWB#KMDmB!2K<6@T4c7P+G{;luM8~U*^H!{Y)Mbw^AczW}u)C;s zr-C{2WW}4yPM-|Xcic$YBe*;xCT);yjV>$Xep)@SFVhTFKi44jaq=tNb%&0a2gIf5y z{ArTQG`Grr1No*O#zl=@w^VKt+pvfb94To1&EQ60xdsn< z)t&F00_Nu3b(v7))`j7dbl<|=-4vHJ_g7jglB(8Y<|*A5EEWsP6OpZ>HgTqg`}oAm zeNzI()hZz*ilGWGKT@&KrtH?(G0}^)-82o-+*EP_%fo}Y=|v&aOS}`bom`8$p3R5A z7UF?jKO2tMx1Hzuez2a%1A7$me%~oERUm^x&_b zBmDJa_*hpauInxvK+iH>a%zE<0AL+c1Bc4bND`%n>t*f&tPHhT;P|NCc(RKmG8 z8mv`!L1Nfv!V6>;FFY^v{}iyD`YgV6y!wHv;%KU>z;gQ>GuEUTUXq)#SY8KmQVfXU ztNz|;a1l>C+v@Xf8&&{pz9Q8xc)@DF7Kvh}P?#O&hyz(5u@m;Y?H1{uG>zTM8E?^a z%1$OgzrD=b(cP0y^#l?Y52ixh)vta5rKOZ>LCVVCsO&r^K)j!#bi&(nx<8bQSeiLQ z&ueiA7!YO$X)Of6goJ%2Jr_Y$vaKcPhK^1IL!?JML+=>%hZ{i&%ZoFUFz&>EMUqGM z((nIS+Y0QW`-jc4xv4lzz`SeK2v$H9<;uwfCBC7YUKyx8Ng~;(-ko{hE1ebXNK0YT ztel0qbU6uIFK9gLuo}%Y0q;X8K8<2fE%ItBx)|{7_ClgF+W`n;$wb;VHnxEwb#wqv z+|b%aYN=Tx)nU6PICZ)x-vVEUo*!6O@s%JW1(;~KumlQ{ae>lzS|yq1hj9G)@{y@& zaxXIPi_|aIXQ^AP`{%kOPVeBWQ1rg$q4q|sr6Pn{aAjeT{n}3@0TBT-cRF*1JL&4( zOFE8k{sn!pA=?Og*XAU7=eY$r*tUK>=XOXX5;D;(ptTJcRZ-aoIj=`#t)}*CDIaz6 zW9Uuf?{(q(NNI`Q9*(M+E1AoVLa!o!3HWeJz4r4-0{xEqG~~u!wc)L^t0E9Qrpi|M<=8G<^+MOKb<}h zT<^CJ4KObzElSYvi~NYsTXD~XYBo+ZeNe24+D*gJs+1@o-9LT^Dky)6&^%?ugt2p4 zMZdfyT&<-{f>0+)XpnIj{`%&W{pHg0%^-s@pi|D5e4+|P71D&oz0Q?a2IpPn=sFV%FpxW%tSAs zYoXfy&Oe2q*~yVt0e}F5_CjhMIfw*RT%#n)<4&i z>P1SBjZ@|}x6P=A|Gc2p7uPkck&Zt9P0T7;V4^m0U@5+1IQR)ew7SEp&1>9^_-_Jj z3r9q_9te|^_`R!j+}3VC$@VU(S~Ug83*~yO^iUeBAd464>mNa2q`uNbjCGd)s01xl zxI&yeV2hqm6~K-4!FKG;4qLJF65YOu&coY}SCTq=6A`gFm)@j7Xk&H@2ph-ET)Zw2 zjL&{*INnTiaTsz%SVuXyv@%9WT}uN(V{#V&dX58^5~3VYEhTX9Aor`_2FlzTt#B3N zlP{^C+AkE+-VqCdwp~QrOJNSG*tcv(yVKDIW4Pb1nEILJqtW==xyCXN%-56t&{F#n z#f@c-|AH5V$!as%GXQl4-t9s8*A9AFoh6M?bW}IbnE2`x#+NWe{}1N=GN{eCYvV;r zkw9^G_hLnglpw)fTih+QK+!_*mf%i+;K89lDQ+!p#jO;V0>LTny7N5mez(l|a%Rq# zGjo5)OlIy$Ci!P&UBByE>&`X(X&idJVs+?#QOqvaN_$2l^whm)ojzdP){E;+K+7Y; znceC$k3SP+ZK3TafD}q*y!{<~Kdy1z7Sw?*gZdZzH2##Sjo;yOLT@GQL`XCiv7eVo zXqKcWZTX;~uZ|N%Xiq7`9|{k-KYUHdk^UxFjGj6JeFu$7#M4%7BOX3*6e%XcdH6z@ zW7wG65?eLw_rOj8QP9O{?(CpH^#{C=^=tU=;n0B-9 zjfTR)m)zO+w>bKX#5*}cltBjtnx;a31dS_c{R79UD2z)C(ZdmIaFFk41wtu1wxp8skjOZ%c=(5DviJ=)bT44r*%uqn<)enUZPWqP2mP&-p_L2=Pr0oR?+tA+hLI9p9O=fX8`(*9dZW&8lA z!7q*zo=%^RGhidRibnScwOY;ap>6IrMVV`j#otJo8~a#9`FS})@V5?E9v_%+hZyKK zGSPO{NTObGfwgQlYv?7)oLwo~2NU>V`Vy`t@FTZr5lEez zR8hTbUdtG+;HLIq*GvZenk+YM?DJOKapS&@i;1A{#<3$$1+4#c?3zmf zPjLO{8_eZmAT>4^pEWFU2zmW!7qd*tS7nb;XOeGGaPXe^hO~HXN;$=D^o;!G)4C}} zJA>6Y<;&)Q(|_{q@2*3qPwC}5+UDCt3g7`f(?oTSJ)~deM>`qr(YEoje+Hd$3dPb? z)S))&+81Auo|?40b6_8q3IV4GA0zwXS^Ysc~L+m5mDT%K(M=Ay9Vr0dMX1k0~Lo z33d{k^UaN8e;uRtH~|qp+B~Fg#c{&=9Ez(n&nxb`n)U!E5S_(z;8W)7fe!v-e29c* zA^po!{7c&_y7RiwcZvi7vZoAd-&YnVN#jI!Mx>9W(sTNiKWa%|{~bP&2h&sIW>cSR zkD%A2OA~~zCq!8B$9NK4v`*s?w=@w|1<^3>Y$5>-`*>rLUu(QrqV%@sR!-uTar_C! zzhR8-=G+j{>4T55cZ@P~udui9z8B1RCbU<1Ex&4zc#*>lz*jy&DsL+dx1yghy=g~! z!bKo^#|YN3v~@`cUqY+R;psrdXXW98^i1KWJSF+;0p%o&DE>WRr}2?*BlA9kyn5zy znO+l=|HLIq+`{#KT8e->H(0q|wnHW9eO)IA{EQ1{{a$V9I9U3`^Py~I~=c_Cue{Z$>W%mbR7{JEgLT6+xd^(BzNeub= z?axCt2Oj4{o5Q3P1hE!fIbEQ@UP64DPZ8Lbn}MzDjO1^2*xDdr9K$`4 zZ$(BI2yzmtog9zL(|t5xycFRSw=#>kHO$FqmDYH}ztoX#1GVxIZ&sji4{?Q{ZZOGRnr z8)tgZ^JJK1*LJ;c;>tNaNP0rHtw=0j=L^v|)ECh4Hm8HQuv^h{Z$M55G9D!xw~@G` z)jd26)F=o1>m5=1_xFNsSN&C??<*f>g(BspU4|3ExAlULM2+jaqx963!hRM{7Jgi9 zn=ORsMvglY(C`uQW@xt?=6-7BThzESVWEI znAn($3E)?Kpjgn}YNF>PRR*QJ_eOPWrJg)*^2h@!@oMrU#$4J^HL!mjqVqkqZ_RkA zw1U>}czFMNG=trxSKwMHLrc4aquti>r_;%dlp^3FC*pB>)oT35?s2PQ3LY*LZcdkf z`*+$Q!M?WrsTHIB+3}D?oZ&IQ6etGNy!!@a*7=Y5l>9?v6x4>`qOXXw z$_pSw#w4`+xCZ$c-ZiQ{KkpVS-<{~xc?a4`+$f7YPP^`m3e+Fq+%#}7EZPu<AYauICC*6}s8p(Utre|*sb&+M zAuU!}22%e_{bk1@U6A|7ffJCMjW;&+?*q-pceb`kJ!h3~EJ0NP`>mH^k4RjoOM9#m z&wA=#iVjDU;h|iXPpr@V;))>(5vjk_%okLWafsb*NK;c(@qa8eQgrFr;uJM%biYvZ zcm?~3+GEXt0mJStXNtnd|m$BPS}RKajPO^%>YqsSPu{V#R*Fj2tYb~ z?aM_f+Ec!b;X`xe>%si+f!;}k@K-NO#8KvK2&B0Fz9np5 zc?S^|xC+(Rzt^KC`CJ$q#s3;l;#(3q&4+ybOm=85u3Hpfqq)LEquV@J0kSol(tOYCOQnf}VV zsG@Vz*q1gK#h`sjnj;v5^?-Jvmd{;qF{FAWPvpnB(;TsL?MTKceGan_IG&-MzrBDI zO2XX$s>~BxjdV1<$_1YmJ3>sd?p>cApQewtuOyEvjyi*HkDjVh#uM;P{ma=;zSQ$2 zT?*4_@z=XC?ecN4_*GUKTg09z@kzY?(#ST9x)-I<(lJ8!b#43{r( zK0eV!WOk|I7qj+>>raYas>9Ljj+{--hU%)S$*(@<`x}3z`<~-8s6`N6+A?7v%F-MP zT_Q2=R`j}GYsnli)^SRjYyLLiro+;73${ zs@kW|I3SdCL9bksEp$g|7hVvgaAL&g#2R`r&6nCCuc#5YF=#pQ>eo3|pRL#b*}-P~ zKm_2n<+Ax>+yROl^f?czxCGgpbbt^y?scXz2yffwlx7urkTOaOmf%?~BjaPJsMSgd zcRg2nf1XTPr}*?a`lC1Mj;yriBoQXQyp(1lzR$UW6%Dh@YdPyGf%h{bV$TD_5(V%k zKDMs19*_3+*O3S)8GPu}-mf=nP7V-;wfj)*tphIBJhmu!sgl!s|CZ?#BTmBEUfQ3MAuK^^^#eN$XuNgPOfxFKGQ zKx7npw@0TK-P(;s(1tLpOqJI9*h7B?pQZD*>0uBq0kWk-H*knCu{nd4iyj#N0S)Z#5j>Ir4<^>@v zHFy}bKC}%uvz>%V(O?<0y+3jbZClS3(JY`L{Qy`>w0^a>(WMwK2b=dz_}wjoaXw^A9xt5K#sq8;`@it;j+O8*!2 zm~q`-ZsPYt)RSj4P@}#CX70K20vG@I&qvg0#AEwKvQiRVKd%31)JEXHl4&3KS1NT= zX04VfyQP&p`EH|Y{NEc^3zo3f(hJMhZ!-?Ds@(0ANP-^Wu+P=k)J33d?^m`V$gp2x zXL^*IyJchfptlzCmpI5%mdmdfHB!C7k*AN+Tn-lQJB6TV4$*j@Zy&%nOxNtSH8o2i) zDz~`x;T%zQ)!S-Vj?io+&j@rTD~7HV-fKUdTv0x2&FYvHXh*-1!BiOmJ4?$4q~B(& zqhIviglTazHd7vKi!f@EP&5!ZGoRCEbb}wQ{@(mNC3pAvRG0(z#T-=6d@EUpdvnJT zHl~2LwS!JSGyui1iyXX;A(jL_fg+W3|0FiIa@c^ep!i2IWV$U~Y`GB0^x*(`HDxX8YLC?)4vclsNDyyVeG zq|xOYo~*5UVLqW+2*vG9R4r~#hR61x55}!$CkbA_FT50mq*SLdccK~o=ZWo)C5Z`C zhI_8Bgnr|8sd})NxSun6;2HZ`A0=i`!;@E8e@&=65%Nsw122qFEQKxC{iPHkqvbQB zGy6_S5elB*>E$8Y)7)1Lp;d83Y|Y6MZ~Y=BNxFyiP6?@u=e;q8`q14Y`&Rx*85BQK z^x3{d`7?S^Hv7%!fxcuylM<`Ds6kS$|7lm_NbafE^Lbq{$Q~73gXA-6=O3^dE(p^p zPCoNm8!%$4`$+{rUi?uF5nyhJ(9;E0x?-d(^p`9X$(A~v#u3O_3XZJ4U5mR7VdXL; z8uzI;TUHwlz()w=oQ(=wiVr&v&zLAA1sh{?6sZ2>kXVA>RI;Y>XHwMSjr>zNQf+aoI{Tz*Hhn91BmbClM?UebxW-{V{P2ys zYts5@3uqZ}iV-&NTaZ!WbbUA{r*o47fYO)6*E!x)RAsL96oF$&0&6Zg<@JhckAyj& z`r%poMk%J#&^>v0RD6wt3k~bJ8`I*$Obg-=aU@H%>8@W4_C`ktYLayfC*0K>byeyI zhCv1`X|mJ+L)D z7w0%Hp!uJ+?7!EGxg)pw_AB@d!)yi4p<=p}k(R=xC_o4M{W#jbiE|+FQdd>a;%qp_v#sR;vz3 z*=6FKC;+^yv1^9ynm$DzO~yas`Fq^;#-2*QKq6|9l;?5kCLtBg&Z(|=O_lde&zyDC z8!tMZ9y^|9kG2JZ0gv|rC@o1xMm_+hpf}cEJ2ySPC&b=#$j;5ZW7Sg|b;|`XZ8GpU zyOP&|tfNzMO^8~hCYPJNe8Fr6RQ3UkYm~SVbihS~ zpF%db$Uh3uNpn_l+{!f)MFKY8s%qHzo*_vYnlI^0YjH1AW6k0X{x6<7gU@cP_V?o> zs(+mnOrqqY$~wnvyP>UzXwX}YU!3FXev{TuL#QzGbSsMlH4UCxJrL0HGl-zyMmrX& zEA9g5BARSZ8lGDMk)~+vqPLIqIjY`_1n$JmqKN-=q}Z#GC{~ z4s7I8cNgR)3lort{~`n1mQMZohg-_X?#Y>z)AcnOEZ{16fLWG;>R>;JX}GNNtwJ8` zYryRzk)mC?EuvRIiS6~UcZ{(_fg8>9t8Q%B@3U@c5yIRKYZdt_1_xcOE0$ez{lDH0 zNI>iB!jtvJzWhI^>g)fZs?9X-V2>ls^6qChBoFzI!vc24T-u1>{6K~6M8K+w%(eF$ z%OXl))@&N~BoBD!MtJ)52U=VKda2RDmvj(f$Dr(N8k;xiASvpGX*4x}-&mrfz9lZ8 z)BrIH7^h;c?x%{|=~yto*17H5$3=9-m8Wg=6`zk%Md1@+!Mhf2f@mtFwqP^-hVWn49^=|l2eHLT1=^4Wo_8t?f4VBCB0NkB zw-uuhbofYvz>dk~>6OnEUDr_(`8w*)Z+;}4HWa%Cd9M*H0VYrbpsyExYnqc>`>9jF zt`YlwoHSvrjAg4~JKM@3H`3|utw!bcZ+$!4s5Cd+AJ<9rr4j1A$?Dl(*%Y=EWqgw) z+gN1iS`S(jnBg3)x!E%*HYZ5RM#{_K0jkz-Y(q}NzP?hNCEmwB_=DOlUL9?8IR%4g zhM+g0?nh7mt~wsi9v>}&cTp%6t26iUUVG?BD@a@QntUC-LB>CzHD#P}ohi3v8=Srh zb2|X6C*409vnRki3JLZUrIE@3R?6LG|O3!yF1ATD~a0|&Q_eN+hH#5HEuOLcoF<+=Z(Oq!aX;ZJ}FJI z(QZKocY(Imce0Uh*S83e(L|x)=0A=Eb-#&3cVW|)4t8G0Z>mbayUC!ua;5$2SgC+l>zjV|>98WVIgKJ_GZuI0t->&pjTSRm5|1 z^mSpK)WXKzFD25vELH*W;JsaN=U_07Bv634N9;c&wSPL!&V0F9ES(qyQd^Xup0KpRpEN~WJ9}E z4|X_L2PmK2@OP4p`aBPUs=Rg34y-+hepJ#!sITIznkX2&($itr9DrKP-}F^){7WAnw@hU*`Irh|Bz~Wd6(GaQwXW9RqqIgr~VQX30eE^ zeM`sG+Swljr#hz|JO*XL-yR*}q{KuZ)~3MDVYia!Ge=wqH>P(yKgHExVRtjgGRSK_)R~2~Wo3B1k8%g`^7WD?rk2=+e1WxZ31$0zZccAnKLb(#} zdD2HZcp;v^xp}_DqVo{=Uy@(sNk~nsGJy*T39LaqcYjGHU)#Zc*}1&8h>^xyuqw~I zTHLeWA53G2#-sWH_Dx7k{)yVa{Jva8$3X&;5?);6Mq1p1@y;oe@oEgqGyrX2c+4|O z>%A@vteI)v)@i$m1HW}Otpf(xf621LBsJKipp!&e*&0=kkBJVn?I~)FaWgEWuMK34 z6lvG`VV!?6U9k7N*=w@HMNRy=D1N_U9&9|F1MyTI?EENT4ON>YVZ~22xQY{XR_(f% zjb1SWmLO?gXsJM5E|BNm7$)Nmw(s*7u_)WE?(;e^_0I5J&cp3E8AGuf<$XExgP?>?$J3OP0^s1TJi6<-;l z{}EHk?Xyo=_&X>tVqdoSA1rE&x-bJl`pms`i<^N@d1Vq+$!tdWAHP?Z8&i6V-s1|% zb>yOKz#W_P1HrhT6Os)Y16HsjpZE1m+i#vxx$CHgslgiTdbk!qEK-9|JfYn8Cpy+? z(PhcIa;os}DsnCums?_XB`y+Rh}UB6w)77oP52CiOr|X)23QQTO+?Ga`bC z%qjG|=hxI{U`%kpVA!B&bOrbLpzfc)M|viGQ1c{%@!Eq>j8t~eJ2Q1r>afpHbv>_% zLyiW=%>-|TdPw(|aiHRJ;TQ$Kbz#y3pH1@R=&$q1i=5HFUj6~pPv2JM*>pd#W|j;3 zR{s>EOwfJi4QS8TnJ&Fzq0P0^c6jT~0sR7sFi{;LM;ZA9_%b+UR9xF0zC-GIz#9(9aZpxJyen7F{kR$_N z*SztCgI0Z2I`^cg=)dr1wTRh}Y@eXMSJ8BEDSR1Qx)JcE+OwSb$@g{_L%OG$v&Y#< zZ&ZHoGzBEmXU@RutFSiiBQ&*ii`qTQ{Uq&cM>zkCkHDy=napT2tcb!woSL? zZ?G8sCF z)W4pqwh#3HhePLaJ{(M|7#T9-xAC&9-kz=ZC%ew+7jlE2{b1#csc{BnB-Iu-8x!NgNJMRyaHVk8*b~dpa461rBLV=NDhH2k^wZCm$$C;Y4kit9tXft-_ zS>;ad=fAEbmDKY--%tSvVmb3s8DXbP8~SELdfz6yhi&c*DeG;NjL(oQ^R5Pacpu?_ z*6&3LI4WDBsPZU|DNGAv6u-#?G?(r{1C)J=67Y~aOx)zFCgJ|0rw0N>B|iOd=@BAH#b1U z@$B?&$3mNKcF5wjGw5h5-w_KSWeubR*$G9d;@?S$s74>X+M4Dc0SRJ7ebcm^bp9%^ zeyp|}UKf1XG_Y*>(Dnk{%A()saxRc4r zJodDdz3YqrZ|yaC-Daz>M}G!DqOd2Zmn@0_`>|Q;w|4qMyzEg*K5F82d4;J&gCxfj zS+ICafBPYA38!vO9SpF-WL_Dt@SS*ZVqE>y95SA<@J2>{>Jca!k7un&xK#D&1TpF3 z?21j6p#sB1TREHN_zy%CStd9L{96^tdD$tcKr3UYu7|)M`}SR*u^ZucC@628E|$9& zmuxd!o`4kA+8i$OEVzE&nJIw&kxO{07GG^E0V2&@%nv?-EBtN%?{I4HF=s*rn9I!k z3fR6y$?Etr@wR!SpzuoPA(N*jBAhcCoc`7L3?(z++l0aZ8})5B_=W6W=XL~`=O?A} z6mk-y*Sq*#$&9aYUnbaR^$sz9YC287XEpixgZMkj-@B*54LM;GlWG8~B&)mX0(SxD zSoD)WvEKki9Bb-6J%z3d5`2F6;lSnYE|21V|LLv4(z%)Dv5SNI_6r!)1^PEe&M=^lHnlOD<;UMKs3$~`ZwR~yZ??9`7J&rY7w4iWrf_0lFaXC>gd{|vC zIgtq0g!8u>SIw^$`SWnWGKvI$(2)2A=>YHe#!>VF;aX#(b#LX_{T-P_Qf0G zzCHb%`|c&d`)+n!uNGAtk42IJy$``>cTX6y9l62(wFY+9_5n21#mrJezos;N3s|x9 z`cPZP1f6-=)Wd1u_g67LOx?s$maMaf?_GQTfbP#rjySHWVxYI?(6aNsoWT5X=r?|k z%A#ZY3@$E zA_w%gF#GzaaI5k@uxS62JISl5@Jn_MwZF`r`BSTTc{u0TvElfKZ_(x_i&rz*eSe>A zl(||3MAjQWqFNM$ss+6p1zAx`y*$ys6ySf(F38I=tTfI2Kp(UjV7Gv`Uc=rRLct1; z3h$fGiP??M0)FYX(p$Q3{tUf=haX{|Rw{JR4xqMMC&NDZogl@Q6yFTKu_eOYm@f>B zLM%ih<2kD(?;5 z#((&AxM|tH^&Z=5Q=vFgTH3+hq#YE~%JvWE_t z4ccqv4i{;!Ur56CK!&3JZ(FU>CJHe_C)MYFb!I*t9z!Kh@x{U%-m_?HijY%N0Kcxq zqE>{vS{_P&8l^tj%<{jb`jX3k2oEwL>nM3vpV+S?b0~oZ{@^ zsRzwOU&lx#OFT$~v?@voe6qNQ`sdQA5;n4;q}YSjDo%+nU+&iOq5@aY?<040^gd!p zRWsy;zN4!<(HWOTF6^vLW!EHigXArK*Nhjbu7TcdkR_&}k7~KzHp>R=;*J>?{OhDF z5;#%}s1NI-ja}<%={gVUxtyp^imKu2pfpq5-Q_(b#&`TD$uJ~wF$H1nR~CmHKhkw2 zdpZZ`koyDdBLM6sL+|A`@PgV;ygA~0<1(mYDV%e@uN55SBPTg0sOFkByB#rv2?;P2 zNZWjE39Hi{BFR!58NtEIw}soSe|0VhvaUY*2KtQU?RA}F1v76QE=iv8%T#T`$Cu1# z8LwKdeaFHG8z{zF+tZNRDUatqPZ?|fg`}&G1jr7|>k(g3EL>r>E1UFJBI!i|(K zORlnXZ~;SG?kLg_SiL12$Q2AOmX6d~OOJGekj$DiC878C+xYDZh5rX4 z-P!8v58jwGb>t4qP#3*QkPfFDGar7^oLkF2LreM;nU&<`<$8}_sI(L*N!?`6e=9j= zUOKikZ7Z2X6Z2fZfONCZ*-J^~mg4v9dUnFLU$9?)CBd)W_6LdAL2h0!N-bBmH_v#p zHhewmPeGTr%?+s1dd<<=!9GD>IlGNSF_LSF!niI*7Iu4eS}JVLce=nx-l(_>%nF_7 zKj(_pmIMD)l|#N7|7@?xzGtNg-V;0DqBOY-y*D9EaH+xW!6?_RXRC6QV7c4jh;dV9 zrCL@@VyCNz{J>w)!{{pjqQ(IuCyE3jbsp(;i)M=cy6K(B8lf<3lwQ$CL@Y{e79wVx z9RE<44As`c0`Gdi#&0UGsTt^z!B}nA*KM~J?U1Ng6;TJ7W(K>6av9%-th5(HT!vxJ zsLLxu2Fg`S&lKXoFp%M`6P>IHw=;#?Wnm-Gw8u@##T-94zF4OOixu>di6~AGOyMq2 zR4^m9r0R|K{I>f2Zx66$ZG;)zW-*4Q@{0Wc^J{yyrVqA` z9utj5^&vvdbHxX6(H~s=bGdbVS0j0B0F>xk3A~JwTLdMzR5EqJP*WugyjEO+dH6%M zVm3xdi>2?5x@0r5@=0?`MA|~1?duc?<%HBl04_0QC|i`Ip6?n(3RO{(*{Pb5O?Xt~ z*7w>Xj|uo;{-|XlNPv!TiGeM3P7dE8Y8$C2O2HnZ*;vJ-dk9ue9-?=fViT+H{p7r_ zusGcoSkXeS08`9pwmlVIS0^|{@Qzr_{Ls10T79|*eh7Me>Og7?73hBT%WSQn8x<+@#)yOYMRWx&z|lew|TJhcdCBKxUIkjK`FK?n2{i-uiz? zGjuPB`)nJ&{bw<2)7wV^a>0u@&R|dv-EUg5gh{mj=|{nPey4orL9hej1IENm&7A6v zg5Jb$pp(B{#gWke<^F%_v-DHuP<}kp6Jm+|VwAx-^;3aJK%tmgVQyX~`foiz9=ZsME{lmNNIz58Jug`L@G0`Nj2@emvcSM(+Jvtg~`G|Gw&J=xT+TP$9QY0^huH z@9$fxQ{lme7*p5yIoGTVGooL0+E(3)0qfPmdNqM{EPu4(r39MqtuB zQT9-z)mABfhUA%2Qf$o6VwDtIX$X0DKpy$z-t)pujj5FN=3`$)GpcLAGp!^BGOAK# ze(34v>K$6fpQj9T(|}@h^a>Sq!S?g;ZF09z4<%wxe=duGe|qYciDg_=a~s^H32VG` z=F6|}OVU{ASx@w)C{)c1U6gqpV))W8Nw4mVg;xk9i7hW6yDk2P)o9CFSaV&&^dl2b^u-j3@p=1Y-P# za!Wn4=Ri$g=cV~9T*XaqJt(%0TaggwJ^>{~?}DzN2a(y1n-8H@&{6YdX5`*la|?uL zqeXtB8k#p!V}|T;26s_;3v}X+5@h>v2fV5r6cRd%aptx2GZKv0e$A$R-mvUMWfa@_ z>9=t3IegBj4D9y;nZa%$lS5`)%1`ET8EH*NKT|T8RX{GB@?R5haG1~E@u&N$fPSi! zai&~>pq3lD?wd_z7G*ZW7mC+pDgCT(0;E@!+18`duQh}d6gmA3LDv_FTjKwPal_;Cd(B`G`BlEAsRLV<&j0|gu z8z~RGw))Fz7O6h{gs_2ftyAjKsk3!ktj;5XZdi%IP_mC0 z{?{p#8JNfd4h!xa7;0qI;b(}H=e_)RRP*wpiHkuWZH}IapUs-vP=Oy2Fd>AwsI7sJ zt(mlxt1Wa%`8!TTXz$CKcg*Q`Mmv-;dMNg_GPtuo5@3f@cPnc&wZGP*|5b}50H;hU zC3^jRAZy9 zLt7UQnfW@Ux`QqL!iy$X$HB&L!2Kx45c{n#ku=+QVYp#EMZ;bfJ9}wm6gLacSB`l$ zYUhd1r9hQA{kpDXbt7K&A>QN+1Ig@X4J|}x0@&*{Bm9?nfHMCqm-=v%y0t-3k5*?V zoxHUvIa#bf+v{5-Trn)TRpf&N9Pn1z{c=82xP$0?AEn88UUBwhCi`M-QQyaj(YH#f zYVgo%cPj8?Sy2Epd2<7A-)V^Y4xHF{da$?vn4W1~_)2@uZ*Z+K^_O&w#{1ODyvia{ z5=Uc}T30r6u5M>Oa-TX)T>~!6c{nPdiQNOE9Q4)I@!c2_SH&IElU8nYbp#o~1yNH4 zYA0J!=?q-s1CwoPEzOY^H1*Cwn2cGRsg`xU(ibl#5 zcIE}PrJj{$Sw0CzCnBdCdiIQlB9Dw>oaQOMe{^d}H_!5qw{@4lU^eYup%__!ZcT zoTP<8Ux;B1b2LtJxT;tT7L%vg3mBt>f)A0LEsY%5WhrrH=U>w`VSs;mn+EfPy=8lvlN|Bdz#8NHmpkWQ;v(Mh5gMz=ormFwqM3M(-$<5)1bKxpG>-qg-A-TTe zaGQ5_V=otMh&lN^0;mdcbE7!*#{H9RLf(Atp^t(_Xz%y<0FjMd^ORdek|dLue8pO$j5``*>|rE?1zk^ zOOD&B;eek&$g$!Xs3RpfF4h1^5I~)ClpjV8#Jc%_T4Ce*{iadUBK|X@mz!G-t-fp= z02+-)3+&IJh6p7`%}u=5<}pyzM!5dsbSp*->kjNshvBLBe0R69NLldl`&tYrXOZcc z&M1E`)t>)KMh}TN*$r>bKPcN6{x&xHPAgu<&rbs3{>u!199_E}AOJ50VC+VXjJE#j zM`nCt*6e9f^1B)tvyv3Q(=%A8D?&}Z_mr{@wkAOJQy4}FP_LmA?N zwZ8|4_IufQ(X7!j`p{aO#(-Q1zkY8D)#E(3W4}ceiy{L&Z7n(sfzmn&3SNB^{hzku zMfb9?SD>S=xT>GsigeR4ciBsd*DRDL*$~w51mURsR<^!i>jvBJqpjIDRywx~A{Na~ zyK$G%*#<{S7V=Upq-Vx^zHa?o4V(-;W%dphPGk5plx=mtDDf8%EYRk|QLD^`0~wvbyMTPn;rgPDYTH@dghf1_-vvKQ%tanu%=!Ty5dvt} zOfNe~omDSF0xtU^e1eoOkGgMe4lMsV&Vr4~6UO)N35wwz5)&J1Qz>(6^TJ}!!8&kR zCFo5U>~tO+Y_mU7RQ0BHJ7*yAlqtzLC&_(nan`9&&}dK_DAznbsiX!b?5J8F8Tqj# zy#GaJWkca!*?&HHLt=p^KC(YXDFHJqiH?HX2Q`>ePz?Z%TDjMl3Ys7dsMdU(U=lv* z^ZyJ8#EFhA?H}2q^{1(mDA z&Oe9mN$`TRrZD#&vkV@r-2P0(vK>Ehgz>`NCu~)3^QOOP!jwV>Av-hm*A5F7YJltsah%Kr?JZB!!4V^;_GbFU5D8uwcBhm1R;cNVGK_Y^iB z$1*O2B;#`Byw!eQn8SK65}bE}U*}SpCu*{(!#u3iWcQe&K8<6**5gr!^@P|0W|5c~Y5$Kzqr0FrMX{FGK1c#1D)XfI$Abc` z6a!}30h9IMB=k_JDph7+h*U&%@_zW0^r8vO*^){-z2Qm6cCgW=mQS#^QK8NrUoDxY zURe0v8z0JDGtbe>#S?rgZR+Ro zcFj0cd@miI7wxNNw|o zNHcU<^ODqMD+OBH>Z^MkrnTJFM5pc793!B>vzi{@{+m7)ragM1BdL3gG^rhoL9z(Q zxL;AFD5w_I*6m-N-O*oHw4vWHV%#qV-@BUJI1}@pfQDb{Jxl8aEDE*EKlE0=*Xz6_ zP0i*iPxy(eIHa+bE8NXjV>gCQpJHzc+qCaw`ou>Rz11*TMhps}z^o<+|C?6qs3zw+ zInUhp(d2{_fo|t72jzhff|bPP;c3K?>^QITfwYEuZlwh9Wd9mnQ;{MEQ{D@i2o;Tm zI~wr+Y5~jfO1$c!q_qlhx_W!-X!94y%wHtxzNi$c664`NI+0?WJ087m(;L#MsoN?h zVTV56Db!cdl~>pyIchsWXAxi$C^~=`c|n{G;KeY9!ZVNA^Eb}s$6nJ|#cg`dX%wn9v++!y%S7Ur5gUxq575ku{T zVo&k+@V?a}lq6)6ctp%X!pSK$Ygo3*t8m}??`EIhBm@04Dp)$9-|(crmN#o8t)97$~F!@zzY zZ*)AyAT`g|uEyEn#<|pC-lfuo-IXTGyNZ1rQrF=tth_Q?h)7+V1e|^7*25tfNBA9= z^^>Bet3eptPZI_-KHSVdGn2Y!&=?mRZtV|{q}NVDet|=|(3RUmu|6?d8l=tk_h;S& z;wU@W$egB%xhE2W#eEOScr*u;>7Cz}b0{8ldk`UiF97>*MCqi`iYkTot@p#O_u8;m z5oeeRV|h0I^G0jU`sVvda@=B@VesVrtp2exO9r62) z$EDpNS;Kp&zd}xf&^IN%`35j6w9&TUv@@Hb`<-9yWlpx+9&rZ`QZoo(ZH4yQZbkq| zS(0whPc(Jxm-qkFZH8D$mwJ^)UfoF$=XzQvE>)RpJj-||#hoAHYUxY2)+;uq!odvI zmW))wRc|p(`j@!&vp;Jd;XF#X8Mldn^Do}l{4L7;Q$J=eR^r{i`mp*0?LN9doz8uf zc{i9Mu|tb0bDXiWG&_NjQAOG}Am}V(^ho46Zk%7e9d@ERH7Om>RpJc(*k@f{b9-_!>1=a}wVY!pQ z55=K4vELkai&ELEH-<+9ibR;Mrr+z|ukq5{-F{3*D0~`IVSqrr8cyH;RC1PIxhwg3 zj1X?PxOaBrR2~{!!BB4 z@D$?sn^FoH-eOop6|yMDrLX|Hh0<+D>p~9>_0OWDQ z1Wrqrkz3ZKsq(IUGW{bQZmA>VWQe9=&&^i8$Q`vx{ zgoJwm5xtxpdvI6TVx&X_TH`z=@pK*_mF7f2bsABlDyw(Mi(tu|g&8$|LVYaiT1bL5 zkX&d~-UM~=(bxYs3swF9g@wxF{=}$_9>nD7#hR~&KBu|@ZlyqtYbpVj zI^ThtY!6u0L{V@2>j@`aBR@7I%ear*;92V12`0ZI@W?X8HeXH*X<_aP@E)1ZO|q8Q zE=w#%wUl!P(@Y49-SCsGSlqJIrx%AAhDVfRWwAqu{VgO*a!fNQb0bnv#q5nq>*iz) z{3%kRgn!`!uTc5Gm%dgXaL~Hpzk{1dx`wL0k#7=JrDCHL-tsgB$dT+c;N(XFHPl#! zE2B~#TX9m_Y#N-HH|Axask=0V$4@s9pa_I4f2c!mYj_LCYimQ#DVqTp9l;QwIKIw6 z$a2rcAi{VvlQWP*WK118WS+D*+#k(fB%jg8M$bkV(D$I}J8pl7GSZ`a^eStS^3hsrZ9FD1q z;B~bAK|utBTeatTZvDgp_f~UI@$RT?>WG5W-`Ubbe$_QtEu5@=q7-xaR=^XP^t;aN zoo~oy2<05%RPj+ZW&h^5nlRpr=YK0`51^2B352(k}XddV+->H zpsZ%L+wFcHH0~dR?lHe2W(y^l(&xLDxP3H&*1NJ6{E{r9%jk1o376&6#V-lFY753v zLlXT6MJ<;9r(SlTKde6A*@kP=<_-qLpZN}h4evt$XA*o{XHfvKbY3}PoVy#TCv#<4 zKhu00mhE%wQ!Rw+nrJQJL&P1Ngm}HTD?bg&{VT=#$r&)9_p05>SE<+nd6X4-eg-46 zjOSd_I4QU3m8baUM`%-WgjQ0j8)U^wW7XZIE<}Mk2K!T`Q6=>NgkTXwY-c5S=G2`+`;E~U7K;ts{3#fxik5ANm zrG?_|?oM$^f#B{AJNNzW=iT;YkC9)nM%KEnIgeB36BFPO_J8Sj{}tFx;EH-zg{POK zG+VR}GQ+t-CqS4_=eQsaEIVSziYXe4>FFVjyYuI7)q4>TQYtrK9lps?<-Z{;tA5vK zym-6y^!9Ax@VReRhtS`+%6j#{S@~!sV+(|ozOhH-sNhtrVY3FMf{jm)pe_C4t%9^N z)3E&nt4%D}kh;bCY2ZEJdljs|Gr@ufm9ZEscS(TCVm2i$6z$77b;Ai3`})EIc2;G(YDH#(0?iz98S)abjY0PXA?3O`pK zkW%9>+osR)@v>Ae(h4iQ?{fW$lq0n}^sI*T@&9mUTH0F1IwqfUq7&HsQEm9K)TGI& zFF?71Vv=-P1|{#+%eM(fbgjI?3i(U(7`X^e{V5Jo2Ms9( zh?a^<;r0!*+BD?yZ_dDHt<_Uz(t|d_GCPUN>?C>MF7@Ds@2pIJ0^Y|O5yXn8+Y`=U zjL=*cF7@WUn}}DFGl2UYGZ^(eL&j3je=vcm&q2I<{6b0%LT){%;gx%3ie#LA6<>{P za@Ex_@RHi)U2MR3HR#h6?&=X)gp%tn!*Yc9_6nX&#g;-FlHPT|V(r{Ff07-)uyw=)CECPUfNU;a&koJJz*ai_RC4 zqYd*dMX-zbkMV6bEQ<$O7^Mrd z(F?l9bawK&=)E$%i<+Z&Ish(R&$nG()&6tyr-(5;{uOvgNaCLw0V!RzHO+hBPknQO zxlbtAZpu#TB64Vply?zQ8hK@h!;MpqiZ$|8ff8Q@JbGSY2&8LJ`$N$(=x|d0AOGF- zw=8?(>onH!qnd`nP72>237ncVqW|z4K8q+#A8I6KVHW3B5u_6Ozs#b%>*iH%B56xS zoj;2PZ$7Ireo!Efb&~72oGukyhy0%*ym07g{(py_r>thn*rcc{f@RhR(*<)i^5kvD zd2AUSsX|bE=Xt{{h6hoe7AOO{pKxx&(DdZhu$rZ_5#iuKoGtifE;MScr=w-0lxv~i z=ga<#^}wYyLMbuM6fhum0^Rz7$`iI?d6MLmjc|^_D+|!uUWz&!gT>mxouhF=XzSWY zZd7Cd-;12uxBs&XSfx-%mvj$HN(fL!qR1@xtQJ=FLuJ8Ig+L9jH+eLLy4|o1-zmAa z%q?UGC3!k$M3-q${wGvE~+-84$E6 z%kgQ}B|*^tx{*XCF)JpSEyE)-7>1hJD3Tat{)RppG8{n@7~LZ1r_+e;`(V+ZLftLj zCfm>L`NwDc^gi7%%zI`n&0w0pVOg+&zO3#uLU^8zME67s8#qtD_;NF%eOvIS<@|9k zr&=udh%_Z)_ zZ?EdHP~O5X$(`S$&aPl2uEdU3e>ksC*B1*>xvNa(W~8-q+qwq|m;c0zoePR+YsU&z z-{0rHC7nBvbJQ@#;}sG{osUzhIbAXXBd!=y^pqD2hhw?s(R0TA4fP2{2z^qCK>ZBH zH?|s6$``-J2ppC(K89OKi+H{MN}EU2HhJhY3ajNV&e#190$selB2ScX26~oE~;Vmjdg3d_kaRT}hB=2GihFFSfQ1{+xqL z{FPBmyn>pN!oC~gH-q6{*thoL+}?=&a)E&1ga(ZeacPln+wnm?d3)nd@3aJ3*Yg`* z5N7G9k{HJhkW3XTBXQLVJ}90s7T>79k14&557Jy&tRqLVljoblp}T1xYUXvObW8~SqnT?OsuLa4)VFOfLHE!_RUM2w)u!EA~a zu3AFFf4-<)Ok_x`r2l12;ZF*(e)=a>vszQ>?W-gde}l%&K% z$R4z}^EBS55-#acsI~#{(S9XP%ow8%uXH9E;`sRfLo4zS!DTV*9vBJ_bQXDH<>^v& zh-7e@qu*a(e~BNna31*OUkd`oLrW&lBa&~xqh0=F}TE-v&qqIOlYIQQq55Ok%*(+ zS#PoLcjxotYb;@4<$tU$>%wP^fiIO0xUYBXpsr`EU({l(Hez{_7$bzL;d3L@mWjqQ z5oWIB@=}rqlINe07Nh|BQir6HoM5vng)*R}_xiBz452-UU!O7Ah!z(}XQ$vJ9b(oi zZCZ(E-pDY@YuHc#ANA)O#pUFWL9Q-p*zJpk8Gn4WnZcS=>|pGmJK;ux4FcfF7uDI`~OcEx^4p7%P-%3MSWvTbJmWqu4$9&I&=T?4JE>I zB|(bzf1`NUd{qNXtxwKL2OH^YKPs%7I+FRHt!8SzVkWX5U~aPE4m_i1ZH2ti`H$Gb ze6mnzJskmV9i7gI9r~H@fNCJSKJ!o5I`T=W!*oLCKLj*l9b9LO`8T4GS2c%a zuC?Xaukq9DIg+L$(O4JsGDoXmV$)KC(Yxao9uk9P`>c~Bc-q}~d9U*mZJld&hVxJ{ zZ3y~gw;fuUGwQ8V-HU^g=-kmSM#hC&H7Qy~3Bg%i_F$j{(^>u|8PQB`jpGpch#`iK zuk4LQ#mDe%DNJ=@^?(NZXD(71nxS5Farn!CD$Bh?Ub@($@`_8Xe>51kz=| zvvpUUcNhly%p}05n!k)J1RzCR)tl1hrsCUN=bHc8G}&-t*sxuJL&@(;B$aK-Fps>u zbHhUy^q%|X_7a^8`jom|v7~fICh2%DFMSKIhMLE~c)VMSMnpv_U585$9pb;W(~h89 z5F~!W&&b;v#Z8rqS55gP?ux>!&eeMP51Dk)_Mp0jdB1Xd#?sK-WqSd$*^XgUy7#vK zFSmL24;V%kPjV#}7`RblQMg=o@Kj}3O2^|^4? z`a*6hH1j;&Esmxf;_)EUNr##jn7kqMu0HzWUua3D$0w!Hexbu|iuXOJ^u0k0sQXvj z=;&ENh6KjS6v>@P2j4mG{?*@lXyAGVxZ(`8Erw8(%%!3c;mXRnD(DERj7zAerkGH+6deuZ z5K)(U?**l0$?J&w#PI)67S?ZiwrfsxrBL#r^H-xQ4s_bPW7xV4|#)mn)IJ`wlW=+{)da6>8R$a%&IY|h!} z0Lh=mYH5+nY&56N&AGf9DqKS^z%jA@ZW8+}AA7Q^=zply@G|(YdvEm&&d~fUEA^q> zaaAO70BsP-=%=I*v#*SpXB%Q0Vc4+yw1M-^v-~#nFh#);^Wg8yj)@C%_F6|hypXl! zKsG8?f#Je0A#6Q6ei{bEvlfB!*$+fN(caI_a(TGwnMLIvSnWsK?J5~FtEH&%1%E#wuc|`Ugt88GK_|{>*se&eZ}5vYyyc`%w6;8c zzZxFlQx|P{-A#8{3cJ05;}x#}w3iLzm(M(Ty5!&7HLUFSBK4czS1(Eqh#V)j! zmD)VTaMV2IXe)R0nuKJ9AS=N=s86Uo3o#Q4LV^EgH2Hpp;t{_U^``}p#&@aFIrK?6 z{-Lu=h9JFJ+CU@(Gh9fryDAzvE4^>=(4bEqx#i9O zxF#3Ng2-F`AHJ#S;>S?A_r7rFHL<;OsoHwD=BcXQuXt>xytO3@S@#dN0wab+V;@jG z(3U}h7rSM>NHN;}Korn{fS?MP=(&G%;JtNI?Tc>8kga-;d1tWLP`|KDZFMrJX3?{? zGtSZ3&J|~6)6vaD_$o@0I`oRKRL9`4QNAV;SNNu!sKZ2^$9y8Z@gl|3`xsZDod0iH z;`+Q9c$3aQ))ayP^P*LR&BK6fY(LC82P3A(ye}x3SUajG-z5iz!Yksk;1zLCXz+?S zL90SF3PC$}1k%y_o_&X6;i3w@V_wfoFG#e?2TUylc9+b`kGX?B-Dm1M*hp8*d?n{Q z-9nY5M@2WJw){fm*so*Eq2H`w*r*tlJXX&Re7)G+f28WcpjpOZKC-ZLwHA|UDmN>g;;Lnd!g z7$N>|5{^c&ojYO@c{%-Ebee7Uac#(0$UCSk(L{J``}V_ktdZ=0dy-l+WHy_<72TEU z9kt@v$KotfR0UU4grTLl)A{-J><=HF?4xm8`?)&M05h6hrFO!Ow_oM5$KPQ)q>nMB z_VmO>@;Vw5qK+4EAgkhHA0$qD(f&CgPOdznnz4i?y!G$ClX4$Ytl54Nby*(o*y||R zRsXhhg^aIvsvldmQHaxU!kzZ@+nY}gjugSeqSo^Ifn(Qn3(uw5laJSPdSYvRkofSSIl{&wO^8lIkxzT6++jRGAxIhozubf{ZU&?t9jxltL`I<8av9F~^z zpawVuU7j2pF}oa=3hp;17RiCX5@(r&-*IWKIg*c^Rz`Mx2Z>0f9@V2gPwQj`?8L`* z;yaI4TL*r>@Ox*b6?{ka8Ji6dh>5? zR802|5;ETwBYwso33Q{WasoYE>^tJqO_3qLfH>Hh>OLf&3AhD=39?B$?q#bA0NBwJxxe3UPSGvk9m z>&~TEsY<7dv;I*z>%@)IX$<=Hr8P6=G10m8;9KZ#!daJZ(!7V!h!4rBHOtU7Offu5YC*N^PU*okH z==CUZieS-O@6C%|qgc1JN`KKeE`u~CiylyH#U2P#dSQ6hMn-SupnC2pF1u-xDS1;6 z;`e<(B_0uP69P?s$vC8*F;@9ZAxv6l?WB(W#(%-4Y{X{cWP*;?(l+@1(_;>aCim5? zd4jP=n2II|!b??Y{!^-|t7r9$)BBF}&7r?Ci|3^j#MrxNK7X$(ni}*F6-oqEYh<~p@P#+Z<|>6B^`|*nXy(Nf!Km-63jOSgOD!omy8e4e|3=m zH7w7gTX#5h$4U#It5*3!Wz%DIhpg#%Hk7~5Q6r8gQw>i?MDyc#YX+d#2qbI4h zF-PxK`0~R6X>kWFZVi7^{0C(2v;)?QHUYO^kL`4Ax#Gt*haLHH zGR)zMMRX4AP|I^=l672JbJTWS6tRa5X~q7L zYahVh+QiP0Q)Ui*87w!+&zY%3K32x(T8niS=|L!L^}!s<%Z1jasnQ)44%*lc_^w?X zPg|9*0EvM3&K%)0>({%y{#~BSqh^MRyDF+XQ~NHZdw|tf684X&4G=Kf*rtXWAV2oX zenXInfOEOOW8EMce`0bHC4zRYm=xyLJEY!sJN8zuesX605Z2r_nrgHR zl2_CscGO=1mKf^egu?x!@sc}-fRJp?iajy*%G#<~YhvyY12n0^l0)A6#OfaWp-Ajs()$X3(P55kbLiECfnz}VS|sybLAwwttO&& zGTv$=Z;Av(S-)^=EVmQWtCCZ+;e;j5LB=vs4{gvq56E!4(+5fx#P=Y3#^Lk-JkInj zx~`C22JMpUPu_8@-13}XtbKnl6ee{1N-7%rAXjs}y6}8eUuH({f8B4*@9}vlLR2x7 zu-BBJbcCdDxwBc+XTrE~@$iN9axmsxDl21}nd$Y-xwlqDfb081F`2*cm>%l3HL<~{ zpZLP!w7{+_M4o3Gw3>qJH+`gs@5YBc0!&K%@l~IMN?!yp#eOgg&0D%Q(WtM3m|c4d zc9f%@RUdtz@kWW&;nWnT^gDq~z+jJb-q^q(zKsun+FV*j4(174HAF4xWeN>T2E-H*(SI<402`A%WdX*D`TIV~{+6N4_xQ(MLAaHBPHC_wK6hbnxWdRGAtY zFqaF1e!Y2P1WqtsN17`?vRiW=En?R4%(a=6{ZkLdl1Zul;VFJbE$6w)n5wV7e3xaZ+ ztX9Xr5|(09uv$d>p0~ryC&M?2Nno%6BxjKewYD-z3isFJNuq;OikbcUZqgr8osVv` ziHCdx(%%O%6-rRW?tujPU2bG;Q+7FicHB&+kD@Ccl$Z;dXF7JjPt3pS_7XeWNgLdX zY*D$L{P6>etTg)ZH)MFPQvDkXW|cR{Hwx1Vg8u9{=W^8!Du_(GNBZY{4NJ zr-)ll|04BEcjfD|c-~y)eWN?tQz!CM?^ElWlG|3`+I6sK?x-72?ivF<2^=~8=Vf9ic%mWo;sEkWcXd5Cn1DQSc? zclUlGCqWcAg}TnZ&bTdiI%?VLtHyMGabDxNSB9`8#%EX(SI2_5STi&&B(5Xf&rkt} zp_cPyaLym=)=%O5#lPy7^`yN``+=M{Zw(!UZGYwG_5tLtTe^EH_w}gr!eM};t~8qP zK9kT{b1PlzHauILj)k0=nzFyd=QR0wxZvwCYkLzY7*G-Af4)PpPAf$CO1{B&{iBwJ z-6)xB(6vxl=--&$lx*bQPr^zw~Z<_6x%RgUL&m7&R&Cklw;0Wus%t zkH@gu1uY6yg2M?n;hUf(3jZ+XVr^TNZ;qHNN*q#diR&alq+%O_VE6g#vu4dNms-a#V#uGbJ#k_Q&^M!C+@?S%Q=!bc#GVysPTT3&N zyT~`%%3;b0xjDTy3GM+2l-ZqDGro7pL{3bl{Tc`>5w<4f4z7F!OlGO%(e)~O23=By zU@h0dm_P#_A=4k<0bpd20Tm9J#Pm1uMd!@54G;1`d-dbN_5XqsJ}iik%oC`YQ7F0K z0`X@>Q}7IS=PTa&{*zQ0^(U_G^;2$R-x2&p89?yS%+P*1rX<{@z(dz{j7(cIwHxv1 zmouBaaAwy)tTCjnpMU^f3`YX_S|vPVZVCD# z2c0ctZ_Ve&m7z}xy{uE|?k7C&e#~xj&<@~vPGGj5VG|6XHqf3?ncwp5VZT3FuO%F^Ubxbo?nw7w3u!a6ifuu!1Z^SCY-t#5No}TjU(~k9&1$a~!{|ufBZXTD-#dZtLA&gJSupdX>LsB;#SV_&t7mDiNK%@5t7{=Rme{ruJ^G7@R8Y zyAa9YIHJi=C)0_H;xAHJwWm{88o(= z;iz<=aNrd;x$4qM_&Lu&zH%UT?xF|r*F7_S0R(||{=At`vr)dR2(J{l;w=8QfY;-Q{#`%VQqAd~?+OY!`U zT(JPi&uQp!Jy&E%KR=#)&L? zv7c3!PzoN5{RiTfV_sm7sLsUu1iPIy*GDgPQQ+F)44|kUqJ1p0I?&@8%D&tt%uh%om=Ng> z|GkVBed0}jFL^oMW^??{b&pp?0-0IP2h?F3dLxPt3Q&De!2r8(?uWLXWIyA|xCISA z=Vw0sY@YgJi!kMHoX0(rqeOigI-&lQ=IJABx+&ya6+)%sw8d9iq(xmk^be+*`e)wb zipW^B=UShb*l=^t@Y@1t`AWKW85+;P)7XK7#cU&1H3Yh?k(!IEO-ggn^*Y7HLD({a zxSwq0!KP4$eUI)Hv)NIx@sWmlUCe-`*LyqqufhMW_l<8PwVs>bZoM6KaQj1BDatIs z@i!dm!fW@5Iq-oXKibzhsac?QP{E207pc^h78``j*e}HA3rg~xC3f7aIm?@3m9oF3RP6y43t*jQF7btLB>$>)zb6QQ6_2q`Kxdz_%3S2YabvH4PWL!>fq)<54I(#! z36nh($F@S=J>M^%w(iz;H73GAB3p0ia>4g;e%5m(*xXuFVjfo%D!^=iqoh+JV~XN2 zuZ+#5NV*mL{vtphG|2qtL)e&}K$xY6x^F9WJR6DvH_&N(wNr4n#a=e(ay%EP%8hLJ zydUg@^H&M?XPPKG$lec_3EJU7^z9f^@{@aZII%mn9C;8g;2!tyW1g*l639_P-hJq@ z_jf^wtF4;xsMuk1s=!qp$`+kd`s#UO5dDuXz%Y4fQpD$tef#x>j1%5!7`QjD4ASd z`fYXDc@;z5p84?GFk0M}<|zs`b$z+!G(OBOhTj*`xVv&s4MJ6TtyM03^w#vn4*4#X z2UJs-fNxz0;^>IBCqJr-4pW3AOHmF*v~id0f|x(v7bfr*8DEV2*q zuOg5m-SZPc=3N$z*38K(9pb~l6$=8L8Gb@uUL>qRdz2s7Uuv+XArkDG+7fb^%l4QhWMDkPf3`%=l5 z?#P9}T_smcEJ9=54N9C3wT%1Mv)gLe_qg`@ouy`O$Zc_LrklDmg%p(}S^QYUJ<%kn zVVP5T0Bx_c{J}ZBU!U(4R>mgtvyONLgrO;%&Fy*R9Gx1QYm> z`Ye0~e7z0KzNodL=U53KX)5OxR&$==sFpw90H!nN>Hac8j2BNX9ft7>Vey+yNr_yp zDb2uYh&Q1Wu=6}F`DLpBGC8F9(HHpMCcMbn+jCn7YyhFmjX=Cxy2}?XS=Sbq{z%5JE`EdY?1v$~-?uNk^4oK!4TJ@1XISR^G(6!Z;P9CyT?OWG3zdW4V7nl?7l1ki*hL*6A=ArGJ9qJsM*9x z1@>At44(pa--Nypxfy-E%z6$L7WF=fbUH#-Gh>!5{VjIC80&68 zj%7*v_M=2gDr<5co0jy6 zk)~p+eo1-;sVRs77Oj6P1|HFWos8&85MkpJxgIkYzfFnR$u3Qf5XrF=;D@0GeJ2X}u!qEH zGsbK5Xz1shYyD7jx_JjOs^wp3pVy&h=Ty*|@yDp;x|{UmP)!B2J zS-+t?%X@RTCH^wmV=g>d*c5k~ox1z!7fkZzGUV7~sHXMXo2}y}h9+V# zCf(=Ay$olTBeAs~o8R)v=`&60PspRc1bdsrnO)Wp*uI|6i1&#{<;>&c8YbE@>mU`X z_|@w>OhJ&vc^*}mu25J=RP)lHLTJlQMUA~J*2S-m%`4NBO&<_SgT01wnP#Ug78#y{ zuD)nM%Y0-<@Q0l1w+ZGw{CkB~VrFpzCoWr){f8`sELHFob<*6IhJ%P!=eI~LoI@wQ>omU8VM4Mz*-vp4@%9&1J-Ji<>Wk4t z&zqbI?svXdwX>javrL>e_Gt#<8mZ)h-OaEvp4zh^mI&2_MbpabpRY)VW|AFxvJpg_??7e)lqC z2f0*9vU(Q0SY|YE(sJor#EEM8p^TR^U(f%P#Yf?=9jg>lJ*+u=V}L-sUP$ zVq0w@t7Nv$r5`Tm+??bB6f1AyO=1AhN+d6DAl*0Mxy{yBmiUvFjKqb>jTuaBAHa>UG)u6`?b9Mc$$ELJ9EV!bJ! zLvM<-$R76cp+ac3&e6_5UGZQ;PofkTUW?xz9~mEMB;8J*((iLl8>DiFtYU{Odpmu$ zMY&af0oN&*1ML{5btV0Aa`8UUK4svFJT@|%`@;+GL1Rq8??rebQ@!=vLRM%C)c_%W z##4T8c2Ye!i|a zA`&$#ncAcBlZiv>Bc}BA9bJQYKQ<A+a!|eQ9K0wvyI~6ry@Q61 zsi5V}Y_3Fte@RF&8pPdy{1xiR(gVp9X%xqKGLb)_i^-<@y0`XNZ#vM1R61X>Kb@2& zU}}~0eWNsEo<=gETU9oMY_MmO!%m!@wie#{V%Eym8O<$JE^g}Ow^gP2sf{ZDv-Yyf zY9OL+)GkoMtm6E)-%~>{C~$yF8ReoiiNV$GqS2;K_yO>J&Zo^UR))!m{so5H@*^fsjs`{uw0)L|@M@rg_4 z_9P4+1wU3~dq1iS^xO6o$9-|x(H9t?h(&dgD<#fIYqwg9YT__)d56|_3xnyg(vZ;w z?Y7)lhC>fshb)z9QtvSlGQGxKL7b+3lS-hD9OEC5A6wYVcA$_wgBM&3Rm8CjXlx!I zZ^oCXS=>khZNG_+T#6D5Xuwu91fhjiMVVsDWEMz) zW2#?u*%XQ~=ldo1SRmd2l>VuGG zV@HJ&;=Tgp!aIHn2}+5@%~~9LxTcW|m)}{L!LW4}s4YTq&E8PIxXx|=dp~d;~y9LsiOm(6nFH1r-T<*-ATSg+O6^`aZW;RxloH%f7+cX?md&>_;&5XF96g3Xs^L5(04c^=>=X}%I>Yeo}x)3a+4P1Ano}C z%uT#q@#6t?OL=yAiMc&n?(zv9ZYCOvX9(d6RVpOx_Xx`v+`CVao*VQiVGWd338-9tb7iF`5k`3&kKXx^qL-?ql0mG)Q=!a9b)gXdz?z>6XS<2H3 zi0kl~_f?9qgG9DBPa}}@m54FDAHj4dt!NAyjt62@Sl=`_>*6BDthS0LZ>*)Qi|Vkk zS{ct%SD~LN?9`q4=^qMkVI#!~y>d4{gK?6`&k~oymyB?V7#KUA;21WDz>~V486~*j zJrgg=rWXJwKUGvi%fwH>E!8m)nN$J1B^D?IfAV6C#7HD3qdH zbrtb1BkeF7N#Y1w;5Pu1pD)@Itbu>`iC660E@H?^2KoDBv}lC4)8Q=B?m9E~6@dH_Jo( zo$E!&e&HVCa~PVT!xH!XcgxhbSVdsO#dx%Y=17q;NbwMd1AOUN9j}F!x%xl509al8 z!uJgh>fJ7gkeQf}qR-phZtXs2pD49-_3%t-6qd7yi#jz(*Zq^GnPq=et(f1v?hL__ zuSQaYq!vseqL%G1m?I;6T=IBMFO++h%61qVJ}upuVhNxtpG~3U=teMiGxI0RaB9$y z3?Tpes{42rI?1Of$kD3@nKDxx>Fb~|s6&QwF4pA~Mo|0B>mPKl4S&&oZIf$9>f*^q8S;58* zM2mY1h%SofAfpgY>9)Xo|6b)c&bQEe;8-S|6-g~p9{v8H8+5g28?dN#uI%C@KnRSNC zJXDRv{UTwP96d%pZ6`@<0?_vOHGyLjPKDPEx@w^rLNYky?2CA%S`|HAR$HAVTTz%Z zA4LT+ONNU^ZsCq_tHO%_hqHx7aaXTC^Jgb<%)~U{QI0+Se6i2tpDEcfuwcd6WSF#l zo!rx#6HKYt?Kml|R3ReY|HUcxtL)c^z>y*ulmsUg^m%}0{$>1FYciufs+!fHDMGx1 z@R>x!TUr$Q?+L~2jGme9a7131d#lu`q6{Cn-tLVsk*2=;aT`_@@6qR4;J=+OTK6aN zgX=_@@MZOMlbnxgdg`T(`01Mt8%H`WR~ElMsJQg2CL#?Mk*fQ)v)ETx9eMSyLpI%1>|QQcD!wp z70G7WSaiOj5B}s=bogdPRdx8K z{6?(IFiL*rr|4x@;-9?5!Qai!2UFuHB~~|^c${R`0D!VUNh6Nc#2!@Z>S2-XU^!)J ze6{`dt8C&uNKK8phXnuTIycG3Z4!K0Mhh^#T9+c@z0G9Vk#L>7>Ed-8M;CN``zQ_) z8dzTvLn6)0`sL}`drVW~e|!Cque7V_*zq{zBt82o{`9c^db#nO6`0}G6^Ixlzk>Eb zBpuM1=lw79hsc!JBOVhpY?c#u?-V)jG4lK|XnB^bBXO)Om_vqZfHR_;?043w;#B=? zhrNp`!r&sfF#GgYR%E&#mn`RGP;ZW@!~ec-2)hCFxG~CqY2IP|X4hvm?-C*ag?Lj0 z(+8;EJmeVrPnVywg=ViH3$qWP*REwsUT7OP3ArZj2GH%^J!INb^vqL(MvV^}o@dumi!B)hZXOUqk`VOSOmmE% zv3JYiG?R8kc}*~CtQu;6V)2?;n;&bmO_+cI+;9IGae7GmI+MoinH&IexOj_%3FX~845f@d+I2lMKs^jjadcl z2czrz2I|-|aMoG_%8%4s9eoo~0EWe_FXF^TOF>9cT8#Q~NJ zA#$}&iLCt;MA4fypI@~*=Yk(jAURSg9EH?rUs~0bIbB>X$di=+iIwE$pvgXhnwi>9 z)D;{m>=h3^i3%HlkyR3gW|R9?78($n1xjuD@nwQCM4|3avzbf0Vec2 zpcE!tdnV?>YWnYjq@fOUPT86(ArO`~pB0^dAm(^T`t1t)wzi_Z+>l2cZ2JfC%U z{cECRG;21Dl=`D?ykMcJ1tt+%OzC3YO+U;lKuRTN?sE~R5)q1QaAu=#PoLe5i&c^D zBjIKQ(jV*YplOBV6*C%f=>^nOV>18Fqu3%;3nibgD?b`#7JNC1xfwL(d~;#FcS(vxx&;yu=%tQPc(#BKF3I2)B z6!or@tP#7j>GrB^9q`zw_+Y6Wwmoy<@X?e+xrt)8!2|~4zvwEgSg70RA1y}YZlSZi z4ONUQrCIm$`!Zwx6vWF*gsq@YwW!MApmo(?YPL5{!-}prEAXEmZ<1QnkTOR*n1rur zYn>$eJRTU>-Sc&Z9II&Wja@h=$v60BRpgF%M?`U%u}++(Ivq40Fc8Kx5pJ3!t^F3b z8G&HR#5RV;^s(06yF9)K+}$C2lT#!kr^DaO3L6GFSX1-YPhv5~2 z{W2&E$Gz%~jO&R=cv(Ny)7xRoCi@e90;8Q!k%Ka_9+}Whtgv0aIU`J8vKr$9`LyNzCt*I)$rT#p7pmHfLo_N zTC;wRP>aGX*}JXrJmQm9TZFcObLqaJP1GkV z#kUac#MD+=2b~pWVU3gket$6eEkPavKG-?KfYyXH{=I2V?n|{Ao$p}gPc-yVuarAj zqvF44$4XN}i`_2(&#XWR9gqGnNlm79vL>nE3~FHw%A(uUCh=YYrgP?+`h~(_!3r>c zRVZ94??B&PH)DHYp{Kg193gV3t&59JyCW zwGh&L!a`5FT^-3?vqp{1f=e%Wi)|`c68(wRaim&er8(W=%*2>tRci|W~lc)NHL(UC;3 zFI=SQRymmW)D@aA?e0$8APpK;??W+^mwyhKQ(k@Zf+nPjAEU$xrGz(M(5p8mzd>G8 zeAz_KB*dG}w3wRBMm=w7M>llmX)NmaIK;@)q2eM(YKY)=&h}Tr+1ocw+}=SF$mql2 zc#lr83vemz%)=DhXH5|IIG{gy7_Xp3nQp!@OM{4t#u;^*MgL7gx9=@0PYF~^Vug%xLkcsHW6iNO}OZ&T73I?x&w=fm^Q|=ZH z7wPo>Ih)a*{;1(Q_=nGvcY8_Bvw1B4MNaj6#@B_AYoh1lLVZ?KTfG>F#n&iVWo_FP z%~lAEvg5736x_dmF?QVu2#C)rHb@?EV}OFZet{ zSMS)BoG$ob#EA}|in&hP{(lhnmO*W|@3$|-Demr)ws>)h6o(dRON&#S;1JxU!GcSR z2B#ESw79#q1TXGR(V)SSo#*-e|3_x;IWzmbIAU_q`cIYg#*Q|I%xhxYyVY zXKRcgbq`Uf$2zhb`tj{1T!Y{_-Xet>W$HFSA;_TDPQ5z|>swGyIURt=-P|6C176qH zbjN0?Cd?KxWO$W(s-CC}58Glg$m3honcM&{!nfxZYOyn3R;O{t{gGh~2ktZTVXC^^ zbv4*C(%9w^*^f3RpD%j9`y(i)zATdR-or)aCn8xYBn!QoALOz{`-Vq!;HgY!J7KC5 zz7CV(Ay>O0S~LIp;g?q*p@0}6SF8`U#TvfiB16~aN&RKo`6@b7MZ*!!F(!31A#r<@ zw)Z?cVvtBdR^6m1h4M2V{tdR+%Ah_`epL{!KoN)k+ki^vLK?i9sH&t42G!=sBwjsh zixPgC!>*L1S#eTj`GkH*vM@5=&z=Lb5ZyIGJ_P(QigmXIU{Ad1`T#A4G<<1rGluo8QMW!WTdD-!Y&Kp}bro%zw%w3xftP5pou8xWhu=QTE)237 zUO5uX>N-s#8V1r#gA%3~erG7Lfy%2w#DtRbyh)`n)1=8f)~V;7b+^|{ZZ9M#wm8K; zqnzDr{5V?sOphd622{Ta^suF!%nNuTE4kS8R0_>IpJ+gp$G!`y8#v!)U#ICxwWv49 z;b5rwZ{VM2(%rQWc$H@@2S_60TTyb^6s`o*nYbhvxc9+x!;6QBvFI(p z$=1=;;R|*B73d<2c5P=)hXuz{p_m#1jmmm?D6FoDnn+|W)6IT&RzUBf>sUsh8l5Ww zl#;5wW$On3S+$QZz9lap`UEZ(bSw#V5>@6E#TqUW3iI|LccX6)59FqwLqOhA1Tz&P zx=P^ntyrs_@yp(f4%Ml|_}x)vXzkA`J5;=d?xbZxbT6~HJU&1pI(A_Bd|)2j#;8#b zxYK1gcd?caAAk0-X_ji#NoG2mG5SH}W-cK!gwc=Eiq*pz)-cMajWNL_fK6}=g=uB} zV9%>Az$Lj1~J$TUu=R6Y@a~QcZ zA1iB4uANHFtRGxSXLx0Kj0HK8#?+LIxT?QW^^m+<;9U|p+mirgY3U?034rB>{eoP! zgvra-*~5j_J*}!qE&j84OCcb9?Kj*mdAt{_H-KlKemr)%BQ z^A}_eYy*&+R)v>w!Q*(Qc3LWSiJHWaUAe(Bo#P1Bt;9|^xbVY4jFtd#W-8ujZXNXl zi+g>G;(hKU$G1+=(l1pNM_&S8mW)Mg4H3MtA_2_Re-m!~lvx6>cRCcqctkwm;CWuA z$8*PYf7)Wsx>ZTxC38bZD;ll30^L^IdYOufgSvbf%l$0R{szh1!o|Jjue-*q68f`e+i;}-Xx62Q4k4U{P+`<21gG zzhJkxvb2z0zshG*kxHFP?%wpfsczUf%Z)?GqE3aYd;*Uc8}U1ODTetiSh#G#U4Ats z?`^+X(%$Ly9`GCJ$v3T!<8#j%gL__7hS)>hc6L6J-$z&Be~j}WF)M9#7sorhzFojPXHc5}^D|Xd&NUjG#migBpO*x=?vF0h;g*#TpY)!r$nJ{^Hb;oLF2Mm%hG(J*pZtEkuoL`b!XyoQ3uqe0v4jI0 z-A~xezcNSOR#*E8vhp@5p2X{rZe`>xoHPP^g)E`Y9iKA3LybjUanbV><0ji|ouFPz z#me_w2ZPLmlx>jQo#LUv?>>K+L3N5o<|RfRy~dORhYp>;_zn}FY>OnmR${S6OL~KS zO4=7XZFeh5(s{0Fow&A!$8T!NgsEz@XwoEuQ_UNQic-V}%_q|${5Hwec*U_w z%$Y!&A(DaYn(-@o_U-g21&iXT8zqQJh{w+QVlJt&?bK@}g3W(^8b)VJ!=|f~csE!q zlOOM!r{eLH$>)e+==C!xxw*=uh+e+bSm3e$uNUUBuhY^!Td|kLMLpWFk@(K4tyz*H z3r#Fv=ePU1!@J8(X3)Rj78ls!Vwj3C*uSZy^%^btm%nuVJ4OkX!a5OxNK;=o%G||n zmQw*GyL7WlQSK^gjpiVPor*PPF|NIO>{_3ybu1&6g6k_6_l(%p!f*CwM?*Us88%+@ zGfJ#4D8k>!(QzHoJ<`bCl4Q7Kp;}`#04=J@7#Q6%US?~4oD!Gf!=IyyHahLXT6F2N z8vZQd?4caT%af3z7oIw$2XL<0yaKIRlw#fBX21E>(?@#6pU37WZwW~&7J$}gN4=#A zt?!{FdSyEzb*lFfZGnAw1gRfrJ%cYA5$Tu|y9yKOhTRKrL6)-a`5BH9f)$_E^RK%K zXP)yAmeI@Y75?AXx=R@lInYx11dcV|F5$Pvktn>f@0EtQC^BexbNW`YlhW0iuMDhwgBhR+Q=bjF-N!WgYD9 z=~pTWd#rdyXXv_+f9Xr7rsqCQ4o${!tHMtR%jjMSOp|I}ylOI^-XJI-*pzyht3?jyt=`fHQ|031!{mqJ zDh&FaWDwjn*~s!dEjC4=ayRVCH?`Iytl7kf=;J*)GAiY{2z=pp5Vyx@dsU0*#qaRl zh~+hlREvXbDi;;FRvam2hcN=kHMqu*b;V>Gj;<>y0r4!BNp0Ov3nYf!e{M3mPpmkE zD@wO#Q0DLDwvn^ub&VMEkS9u4Ib466u*?5&l`C;1nx4v(Ahmq|Iy3>4Och2YEqTp; zBwRULN|F$1$N$bnbZ3Q4WaagpL$Ah1Ku*QbQuHWJf18^wu3=i>2dL_krX)=d^{j`> z{h^wn;R_B?e5+h#f~Wo>eZn+6v@j~-_P1End^0Uz| zJ_UZl&zq<$$|+9S3*6CFB;pEly6R)?HwjdEJ)lDQhXSc|^O%oa|1x4lUzsOD+v&Z~!?4#q;lYjY>rA45C{ z>_Y+sd!=LDSZ2s+9=d{W*wSkE9j_vB0ropJkS}Q}ovICDTyjNd@4-pIH34fSEG019KA>4<$uVhABEd4 z($(a7c$t9jd*hf+7yx_`aTt0MxO4kkZ|QR5g}!;O)EF(7UCSxSgdVexF|dgc`Vk#) zCfD1{wGxX+Zo7$*1DQ-hQ=`shD~G;m>#MocfC_WfE(s?CF92Lo!|dfs-}*Py-%REx z;Rh*x&a6c!#-k>MtFT|92#2;;)d%5d{F(V7t(zlw8!a-~aiG-2u5kW9bGq0FgW7@k z#d$I#Wi!#*qaB^n5_013XS8ue_OVllR6|BJcxS(@nnceg zM&|H^W?%M!%>DpN8lSvhtc3yT7O`H<3w%8RYDT>@!_HozSGZmNthzDFZDc$8E2Z^o zeG2H|x|RKpgZ3YhsfSLI#*^L_O1Bxx#e8D6bAFgygVQ?BSQY{7E!wMNSFm@k*uT}%-`fpPw<0D=q6uHfUL5&h2b*j8v&*?WD<6M^N@uzT1LBXqZ6!UXqAgjh3Th8W#U8QdBu3~xX>|xHYu0<$r%g1~Y`h#dAl|zfL2A9x9 z3%#?kf1OB_25pcU+6VE)FDVf_LB2jxr234viHGWy(?VwPtud18v`F<6TiZ$3S4 zT}Y@|O3GR7Aeoj3#xRh;*ayQ(G!R)bIebEGU~Ii%`H7TtGjnqnzlO`kQXGKLtRm;<*lMK)%Y!aYswgO8hvqs z2p9WkPn$0t0*xJSaQ<|NVUEn{6A_9C24XLC^a@Q!#QUvnlLx(6-jNzVj)^~dks$7m zUVArc(CYLF$`HLWpiGjY!z&)M#Ik}|S-d^7rVTNtBPOJ*$GGuGV4P6ZNkbAqWIZ8p zSE0XJ#;NauKcTv;;akRY|J<`3Jqe58Z*M@DipIoNt~h4!#14 zt=d7mEqGy*RKVJnLhB0(sS6Ir1<^7M%(x10yf&km(2n3+1q z(OPlsJfd*+ncN~U{s@3FwkEt=^k-igF-%gv8t`D1W$0NgPaZJZeZs(Kl+5L-$>layw zh&>PHE%Gyx&nCE+PMJHtX2DE8|{8IE0OM^a=)v*VjKv zs;$(BkRm%D+_JjxGPBIxrh2LdYiUSS2%1dOX@$%FXeKk#8sW@ny+RD-gFI?@uM{>Q zNQHvgX9<~`^xh7K?BoBv3m6e$$6-kJOzJp(y>hCcO;Q8M9>`_LT#EKU>bZGbc~`B^ z%)Pb-PvB8beu~Rk+#9Gj2F8J{3tF^Z5|&B;5Lbj6yEDorTmdbEc+MAMdC4AmVr<#4 z;>OhA=w|=CtMuwrb%W=GS zl7XkiJakX;9K+E6jbv)pqh7Jx-{<~1g7>}h2ze0gzmXK30}_PJqtnyD-HWX|j~j{G zxbq+m_Stip&nMu0fG>TeJt=2*2bD{_*^|J*s8Fv^le)_TB?g52 zod(J~Xn=B{saa%_&=Oe*C5E^xTFnb=FU$>|d8}3g&1__nLNW&M=06?=-I;KDA0^il-_>Ei+kM zMDRA~>843MG-1D0;d(V(-JR`0Ou1TGmAutgx{i?4J{0*j)z?pLeCekB%2yTM#TQq4pRnKC@a#A|VQU)LMfkum1Y>d!$17JUqS^Jtk9J?+IFO;X$3rG-V2OlaUnBQTx3Cv*XhYydh0Hghp7@ZMkAcx9)@)f<>WUvhTyS z;?A!mY2s~y41F_~M3a~pv#sB`u{=?@7Q~M71-;ePJZl>aV{vjIQAB@5Zm&D%0)t-q zX$h8m;Sm)7M>;&YmmhKds$25YSUP)HNWD(94OVA#Di!-`pKZmrCVn;pdMyJFsnU6j z&YapOzJD?PNzj2(NhC7F+#;GfaUc(?-FXRbXhPWu@$`X0)~QIr0K(n3Z7}uH@UDe9-If~MTSWYTiqad6E{B6j?BTGIc)*L-IWyYcBWcT?EF~%G0&FuKyv@X zu9n+;A^9SZ>xY_RzRKzxA*5a?UX;y4W@B(dNO<#6Dx~&v=-AteZZ(b>o530(S{GTE za5F7#u0br(OiT?Ay%l<+Y1@enAXd^kQQe?bGZx4cmEThH2p!SnDQK|&BchI>Nh21)z(8u$yY8HzzY zL(a%|HD9?q0xs-~;tr(y&ai_N&IEIK1pOpjcj)uI`_~IxDH|TU;4hcd`hv2P{?Iu6 zVz@6Ej#vAoBMFT4F$WK`hCIk)Y|SF3(DBPF);kpLTCM+SU|FGKa>50#0Ci~*NV8`K>36xv{!Pa=1Ez6%B~$_iy+Gd zSH?g3cU?Wt(HT0iB7TmgN*cIb>Y(+rrs9~A zH9cZJN=2Svzq=nK9;=^ntGjGy-B`xbMv)=$NFuW4BYoU)Yy^Zo*6ij=otM0NO=H!}3$#|i!%(+q0RZ-hiE3o2s=VH`Uo>NM>o zR6Pv+6eDjAVzJZIWe>Awnxpn_3?d0yH};h)o^)e^&pXL5sbL>GYoyDazizo019l*I zf0a{J+&|Ld+?M-A+u`t_slLh5JDiM_{ll5l-V$47?^m~<8~*tU+m5vZi?m$# zH(Q33=FS|HQe#^OInyzwB=#_-7T&azcy7$Esb=jN%S%%Geiqg+?RZd!1-)NPz7tj) z*Ut?~^2uTFNi=C2S@b)DHOE^AVEw>Lkc9!nj{O*G;3@(O=Me|ZAf{({^FAr-Tjlm^ zCSRI%DS+sP={%8zJQ1u~RQz-s{>~dErG!WHd0cP-j_|%$`;wqU0v&>HFRy~*c0RG! zXn!G;do0p={Y#Bbn^X|Pn1#1R3WNJ}o_8J2LCE#et8Gx!EIO2lvSfyVQuW(lK8Kt} z>UsE7Hj_NsUjEc1CvSGYT8Zb`5iL_H zGl(y;ORt)OkllQnXb;}I{actW_EnNLiA zONI98M6_e;b%r#iM9b4~meS^sYr}6Nf&ukjvd5vx0q)veDRdrF5mZ{Q$+P2jw?AaF zsQ;MZ%)MBYv~kOB%^PZduW2MkQ_F7t<*C_thOIn&*z=pJTB^+Yf+KCAV1kHWFaEDb zb=wtxJWO)m9!cDMsRmVo9;a7JB9|n+$?`O31A5;QkqnjjZix4hW$uXp>9y^6wm=bN zeb**`5RC74sIUqX{?DxE?4=gj75%JjsY%{0xT+kG@FPxZC9&!Gv3Bn7ds;4O6Ry2r z-3BRPp0L>3PLR_DkSo?5pn+DPHk{}K>kt;ubm)h$bh$q6FymJHBYz6!xaNByHnH*l zMaq--|NE5Ze}T|w$Va*{1H^5tp>IGSRRSy>N1x9NTmGIj%nYd#AK#5rX&h>=T z9^=xeew-NzF8=DgfgOPM{qW4(7lj~E!}1U4_j4T-u{dIN17(d0Lxc>;-^`-cDUlL4 z-%z)mDk#@#RA{@>=0J5w#KdM^wAD_?&yZRvgg)wT=cxRR1j-8+bxDalK$#&O5a=EQ zMAft~-1rVPIm`667nM$kde_&n5kg(xd7sXR>JRzS`J9xA_@4Jru!a%#K#St`L)jqD zM3C~xAmrmCK|E9tGL;au-I=$9+A`z2KSv#+Wb=%FsY&N?4@J$3J6{7yv=4ing4heb zWJjhj4HJH^A4r%mz84Zti}_kz$PHs>p+9`2_QS-&;lSYdZK=as5KGNTC6Tsb1w+KNui1_J#)73jHQii(;(xX=HY@_ zcMF#2W#ifk4`>pSic1<+M-=Gyl6fsDwK)?`r+i5P!m$!3wyd0K3LDdkadN=%puPxO zCIN$*COgDS;jc76+u9`nQE-A`?~OHknRCzX6bmHyaU`6eAQIpDbYtzq)i`x39i2}a z7vYOJYbyykU%Gy%Sd8w-JnS;vtGm7BC<#qVfy2EMxT)TEjEiG3?89g1P1%{zrNR!At z7Drd=GBIBgYf}Yr&Wib+BvEPGW$Yyh?&baqM`3wQ3nwBjy^AdA+O!)Yz?&N<)e6KT z0v)Qlg1f+NAzk++Q@7mLf%V zzXm<_>pe1i&aUY<(`vgS8j^If(q@*Mt4>HhV+`La&c$>)^3k5;3Xgb_5fN(p8BRHqEmW>2vbu-&kySRlAQ1VoS)S3&8zUd@=CX{?Iu z_z7OY*De5{E45vcK#f}E}vU%r$-ho{bXMVSQ2&vT};EQ`4Kh;vD7(W?;sYEr;qOm`} zGL3FytYpG?k{@Z>xMiG&YRR(#@BAwx=yUi9-aBN;{$k${GYNY+p!bIS_ok|EWm!ID6?kUD9n0grYI`K#DkIA3tBFu~M`h?IAInpfQ1G z>1A9JSH{l)2XP*&eQauxJwQ;hdamO?ZgEY1PzwPccJGWlO`AUiLMbaEo-w_$#aYJ7 z%P~NQn@K4i9z7h2l5E!v6EYZYUuB*q9GEcxvYVUrJw58y3BRrG;0a=FFouZ|DB}}S z%6X*W4Q5LbmYJUsv^FQ&+8CXd+X|f+5OexcOrA{? z2_H#cfuI+*-MAHV5x4243j^UYmc!0vCv!mSmpT|-&O@)aZhnS- zHA}>mKnFa!dZXz{!_IJ}x#SShR8RiO(|ci4INHsLkJNmQj+~ki`-&st?4JHi{B!_B zr@0G|>f%&zY$1!jf8thbc|m|idrZz5U=|(5;C!p|P8=uqwI7Y#A&a0jEB&}&bXYj= zMVDIUD6mm}?933C7y8?dmSv}yUfG!Lc?~Y#TYdz=(=z!#s}C(g*x3x`)Dv)93d+Q8 zTjX^?)Z7~qorNv+E;*tCXQI!6nEM5Ebvz@6->2%dK0$h>^NGZr*|k!2^nBH1E<6FW z_SN=@k_(txi+CHe2(}h=|3xSIKGFe0BR4*KMlMZ$u%OIdWY|%xR$$& zVWSzxUuQ_KIIcD3o|e1kJ!1f$HbrvrsG(bb3BTYmQo3{CADj_{_iNu*Poz_c?Yvx2 zD-%zOxx&2oH%U-EnrI5$#>hrC!n|pAFlzFx{PBggWZV`=T(gUs9~yp>77>W#gj;jl zg0dS3=0;N*uv4whvSa2hTN_Oo=2Ho=NaLPc?)T6{wGb6Xg!T0i7_*oY&}x#LGmtT( z)Tb;B#qT!9LQoh1T>LeJaPVB@TT84?)~WIv%CyfZvk|r4=Rz@<|JCB-H7Wx)t-(5C zOqlsD;r#TNl80pZ|9w zm61N@JR;fDC*W`AMb&NfzdCPxFs$SKz@dac&sr>YKE4?b`W8BPhmAkFQRz+&*PX^y zWi17=G-1A%X_{<%q+sMKIAYu$Mafj`aJs=p;re>$D@53+%k&8TAId0d1EvOj$!>e2 za%IVTkt7hj=`GW0SeWALfqg@_A)?rc4p^$v^U}&4tZl~eB65E)&{jO46`W1)Y|&w; z8c)1r`}n<6DD02GW(Jpteq13sU@0vnxr5Pb_U6<4>PS^-PjFxwuK>!xHE&{xbnQq~ zTCmix004Eu_c(%x0L`WRD7D@R6w?FDDSl_fdw079I`UBz%yvYUL7#gwaWRn!4Lz3v zUj%VY5x-3UjFf4}ZG%e-BX|7b4aK5+w-7>5sjQ~Po4HS}8~c6pdMlfUZth!C*+wO0 zorfpG%%|sPwVQDBGrwbC1Sum6M!X~3aGbGtuUBS*F7kB;J$&M;K&;N1Ra5N6z;M2A zQgmv^vnvUmtwfoNVhIqdmaaC^YHT;*-INQbu*~?|P7w9@mGU6IHvg|@?^S&)9rOcB z{W9dt#c)J`HSH~4U~8H2?>1Aqvyv*Bf13paV!VD4XJ5w@PmBk~S1oOgwzI#jG-37a{02UFUC0=suNAYPjaN88Yt6YjwA_2r7wtaG^{TGy zeg8URofYBQ_hR915s+JnW04WDq!)Idh;cROtU(Fds}F=b7nY|wUdb%C*43;y*<-;w zPbN~#X9V#ns{^v~`MW>*gNLqiJ_=xO{cbXIxJX+J_+wC~QY8eHa<^KIA-?(OyiX>^<^~{mU_}g<{6P&Gs3osZWL5u<` zJJD6Hg2*9a#xcL#iMnr}sR14by>PtY>;u+gMV5BkETNR&E3Cw-DSudu^(j*mt+6+kA^BMp!`whKHmdI zC45FJDV>aB2v0QVWrp9ss1JMe@nj={Mn)*EU$NY9bKuAcpTAHrYu@`D@O~<~Zci|+ z&SBMDk?A#VFPrQ#oy-m4z(ifY{rxc7!jA5#t1V(&2ZfGU`}1tTymCFQNYOQ(Xz*W- zcZU08jv1RbJ%*U~cloLX9XFPFd*ai6myh`8yspzmZX5Z?Mw&C&d`4FdIxVK~1D&88 zp!HIA+JC(5EHY%gd3ogr3P9K>jH2zc#Vi_e^5y$s)XYS5Z`2J3OBERfEN3)Xg7F)7 zCb9ZB>ofBTBP>X&-9e>}0*i};#kn6xMK)uBBr;|$Y-_`j4)vzPEK2KpM-l2b(PduYCs zcidwW6BcRQWNOIZwGD3=7DaE;kCUg@Yqb(ZL3I3Eh4bZn+sxfXOAXawr`-emyLXT$ zG>5|7CMMxRu#*9&Hpz@)tE5?TJ+BID1#ZOtSu9-s zvsmcweC=B@IHLrWu~=M}Ic7UYSlh>mX_!v($#f;yF{Kb*5?EhpQkKt|XRis`_0eda zb}vRnfw+jlj!kaZi2Q7ZeC-v*YVEdtr0jF13ayL9lKzwkQ@UhXD@~$J9F6G6QK$6P zPopV(S+z9?n6RTPIM)sqK@5(d-xy{54{dw>U$m|L|1E9nhr$l?@C3BW>CVyJ6^Gs2 z8h8I&LBpQjH+Vc9G&9^ZuCN_dsAa+Y!wH6gE1j=M^+%%90ges<16Q)~=(hFmbp7Rh zrmVJ_FzNun*C9WUq)+o%ninF~JaRB5R0tf1Y1L2)#!U1hE( zirAeFMD?arJ0+VCzx6z+!sp>bX<9_ z+SqxNCysElFZ@CR(6?Q5l6u`aAaZ*VKRu3m|2ecHm%>o{A&8Ti-3EDG`Q22~5IJK3 ztMT24u{*9oAcn+W!k~e=RNw(;aVXHPhHM?n{ZEY5`A7M4PxVXZaqDAk>KB~t{r=Rvo(Lz|Gr?5hj3QvSvk%4TqN>9^ER85XWs^P`* zFSd(M*oIjVV*zw8nn{P)ll?4Pf=LKbh=V+gwMt}G$X_4x2TF|d2tqRoU|>cSaB(%_ zz>ig`S0iti_5L&)`;53c&Xqj3KQM7rSaOve3@D}XY~gn6G_Lu@;C8#2?fxkc#vx!O zA=+VMr)R;%woN6ACoA>tkUw|I?oWjB-KzTW;B?MSm%OkoO>T{Mlb4hKC#&NkLHC_` zAm$koebrUJ5kx@&w>P zr3hOP`z>lJwE9Z2(#bw>#^m^{V0QGX%_A>1DBkMdAfVfcQtB5}A23n>nCFQ&=QE-y z`i>12HB-(yj&O0H;B#>`#*QSfi!#M)O$LtCy%{!b&3Kn0-TLIvbMZuT)*idNU^WuG z**aQr>-Fg_*Xcn!ij~9~5akY^8Hj3QO*73JZWvHig89P-EzmCx3e zkS59hxgOH^kW+f4zZ-85EOPEy$F~wU(9@TWG9Ml_q*Hy3R1Ix%WXTXy?=@^5)|s>3 zVAGY4E0nV0JnXuNV48rLr(Bjubo!t<7O92B}DY=B-9bdo)07swVtZ;1aorZbz^mRQjxG|ZG)k> zHO?gE+zm(3$nyP(mpSMugIszf-`HTE$M^gCS(3%@`feG}dVUWd?)li>d%4dkI1+QA}0BsskoIxrE zz2>BNAfA4nayFEsy5wU9)HiRaqSHtpKW6_& zci?~vk_0^j^k_zbEF75=hG_D1nqg7*+78|P!VfBch@0a2C7^sxo!rAVq-l^rs`=S= z|I7ewTly3f>$o|b(H1!o2PI7Hm+-a{{}?!~@_<$>hK`er?*;rR#GRS6@T3g_iRq9r z%+3`Wt!)jUI@o>a1eTf9ccWA%ryqBHgEkgd785#({%#;BY~xEY^1Tnuyz}cLSh`P{ zg(%($x$kz87~6xv zBrUKj@RojbT?Iof@lD{?rSE6e?7@sEyCfZEpBYAwo_x#U3eER<;OR`dBG$VSq2o=( z$42)tBp;!br(a$Gx7onz@al~mqKQ1>@{#ZT?RmzVbeXpCO%y{*6f3ABV z1+mb`w8Q{@i4%fdBDdrnUz(qIE1HaPqJ$~xA-6AsA5Kv1q-YHWV@AY=AWwXK{UUEh zM+-nf31WG-HzZEZEJ0@iM5|m%?1s*6StE^juco_f1}=sHk_UvxbGVJc!UW9xhV{se z>TjK-AGV-lG6||IeYT4%vr4q0A;8nu1HVk7i2%A$E7rK(Qj!TZ1WBjQ=Uutuq#uTZ z*g#TJhe8iDEfiLN{jPqf=3VSd>~$=L(`vax)-EuwRh8KfI}ytJu>;>5&=EKUHn5pP z$)Mx(^_=AF%auTuwGHfDqC+;h%;T*Tj>l%ns@k74vqqpcO~S-yO^Wyn0hJE-#Luc) z8@@-?{&^v~8Jn>7PsL~Zf3T0f?)1E;n~m&0)Gi%0X_g$0lK&O@c_7hODiU97r&nYx`OS-k%~PBb>6LaZ`3&AjrwTz|X;aMz%79nk zo~`xMigS-&h21i|ibYy#{AdskljkGq*;i#d!$Zp$O@j1#S0Q5*E!Aas8H%G zj8;NOIssuhJWa+xWQAUz(Je|I^WmEl(}Y;5?C~N6477(4uM7&(`T=(W#7Y=od%h`IY#+^ z1E@WIbgWbCk-G&BBu%s`QaE$&rK5Vxcb%}Cam_eL8oLsx3Rn_e*q&FBnbG0#$%$$J zn9%7Pe2r%ivX?Dd-r-D9g}Nb_0G=4J%|C8bYJVx*&#NY0|36WZhHWbiicxPl_ zs*n`5!@~%mKTUdNDP+$#0pKzW+}%;W7V8%Ijk1Vdo%sZID#FtOBKHPDx&kAqI~(U1Dp!Y8LD@ zP?}XWZ(tEzCZ&1UDnN4N)hhBHC-go}9tJo~??mBA_87=q!4$jh76)H?rm;wD<=3p~ zxP>d1e&oCP6(>>ilq|$88YU*b_PiadWl=G7T~fwJDr)zoj*ApD1B=JcB4yp)L_Ya| z)`+tR{YlZ6ZXn!o8qykW=KVrqy>eZ!@^ngku5R*$8b5vF9G}5K`8x@M3nzzgu^0)* zUwr~vgBn5N5RdnTGH@^Pz#}+v=He(!Fy{cyEK8zJDMeS!#%Yf_l=^QlL|9&n18J_E0<(}L z5&IwqGT&#k03k2|xa1r^r zKW2}h^7rq9Rg9(;8N`*j)++f3RAoP*WBASfLF{%#y(?8(+i==XA(_iCD8)cz7^RrTSVi`OjVEVd*LNmy6952FEq-nfp( z2TP1*w$>T&)qV8w=c`=Q;_j3)F5>a~>0fah9{EEHwG%X4!PIW&9Ylzo=)L*)JV*2@ z0Cr#?)_U#sKR@5nX|2*@U6_uRAlR8$*r_;Gq3aJvFBJW zK}1v}0V#1+ZHS_ollCRya!2q~_M%4%XaBL-&bOJlpLic>HjNiMQXMy@cu2uI*J!Cd zlL53_vH2J~H7b8Tc1m#nJLG1t8L)GAewTAnzqh{IDmNkc$2fE#Hu!Rd*G}i;!^EG@ zhJbI^DtA!Zw_bz{-Kwl)O5SdAPRINbZM!KyCF=&=aEwW3gDk)+ol93DbBf(N%U;xz zE0eU}8#~`*ZYa6xw>K%C6V>?3_+61b9;3-Al@A=(RvFW)*!O{sEp&L?D+FY{xXr%= z|7o0emE*11%?Q3+El+ppkk!A>@sXeMTmO|4RPi+Ud6laud_TgMuL@{1iH&EcRzt3h_DX(|u)WQ!n8ZDRH^ur5G+h_jH74bu>bufIk{_-&Wuy!bI9D&e8!p+O z@93ni$5)(vovo^PEhVNS>2Xf5@Cxc*1B-iH%V6SL`4~2t_U`yjn3N(AfMNQRX0}a| zkA%^q_iIE#X%Rn@plQ9U@Qy@qZ{QaD&BD;=a&+%|eMAtQqM8d`#Lzj;GkU`xAm9T( ze9Nar74W*?gj<@E4dw{SqHlD7#47MF zKrVG&)W@6W3e)vj@cw+8e;>ilUAbz-IZw|j#P5wR@Z@pW|83LerA9~k%EMnaCa4BXeSyk z;R{#>LiX5{?`e_}F|L=IqkYQ$a>qf+7A{Gukq8~?^ND1+FfKSOo*iaWFg`qn@Cd{t z7`fKhRBz};NPd2EDQDPMmF+M%F0{wMcFmefK^-52$`Gd)7&S%Lq<)Sg6dyDmi`NsGl4xDKvax`9^V4 z%9m?voP!#cWpD~`fP8$5m4d~cqjaE2yFr?eU&;NbzBhO8`UHb+TBj#P;+>|x6Uv1^ zOZyW6Rp}4n%Ki@)JAACZ;;WK;SFtP!tBT&abhb`xh9A!eMbkuczf|R6YwT8$tLfqd z(`H$_pfg=APkT#%zlkj}<4X`q8ufITf@}5n6rub^X$DxzShT>*YZ2*3N?B zO1*3_>6Nqkd52GFKYZ^j<(SICd=pzFEeneln^4&4(QUpbm7izZMf+ur` zc#!kDXHe6pDT^`l$T=6+OU-TmSvGHH{g;Lzvu)#vvtx?JQv%lzT)JGq9*#jcfB zeXNzL$3=po-eS_RF$-E|W0f|*+wgW&KfhQ&HhPu6r0VqXn)YbJ;plY0;rn)$hr`Z| zi0D$t`!SC{zZ?L61LiNl#~y}GA4z|X2ho83NUTyrbX|S3P|f z->N&$jM?3SF=@HBmD`dZts7W1ZI#!GVBQHTuXCpogxs!A+T`E%cgEffxJL0k5nlJJ zyss{<{~8S6rwALYw#>|B75?oR7~!p}^nak#`m3RDsE?&>qyKGmq&;IjYSaHLSo;#s z`Cc(KQfHd;XzcfyeL$g9a34>Z^sbOk`5WYGr%y8Qv+O1cbN|~Hpldc^*zP93;(9)8Cj!&Ewxsrf)+a9vo7o}sM0S%q zi=+awzxJMwUYhwsUVNbQp%HX0YUi%pKA?*ANrdUwX-GYWdaJRropJ)EF z_w4=V%sC$*vnDfZ-PiroYt9lSsx?tKtV~EzZA_sws&r$$ZI((Bv&I`b;QsZS@<{@MphYLoJx* zZiA+5WQfmz0lD+QXT5xwgI#DY#PA9*P85s$amQtg47sbPbaTl`B^bk*APJ)=cb))v zQ?b#tNzs&2Ts~6c7Ji%GQbVb4fLWji?!oIk6S63BJNlHG;aM0TLPCLp*e1eLBVWy| zDEu24M6E~Ru3_`ztWxBOwGARPswk0sV;?ZhVc;ndGR1r;l3q?SAo9%=S87E ziWFa*qM3D9n1q`$+Z(679x%za{|8ZmRPHeyB4kD{_gKfPD7KMQ#!SJ$(N^L&7vz)# z=ls8Z(R01*iS!IUmO3^*c%+d0gAe}{%gv_*_leO zoLJU)gY*mO&g`(NYn)!;puzN^->aX6=hU$`-ms?sSR76^dr8uxxG5G!ldNa>e#G0B zHMf$3K9q4N+Rtj7EA}<=#VeeLu@!!&D055~2(x9*QI5~yhXiPVB5mZL_=j}p8`$qc ziG*nqzupn%!-5;E>x%~^81XTBzg6_2^1^B7M_Dyv)(EI-?CIAADku|`zmxN55Cz{O z(lM%@tb;J!sLcY)2VtsBpJnBVzvpOg35-5Lb@mABY(6Rgp6B(v%8tX6H zYl6@?qT=;6tcxrLgHK^Pg>)CO0s#ul+bX8ggTbJl>I)I+?&%K9(H)7uV_ha>ZF3?ts+?olK&HoJS^!bT&dsWEXx3%udPNVJ)Yhw)v5U}G&RM3$>J4-K zMj;HkmWk-Aklt)TEt=)g+3?W~69T_gaT}?}+%MEv3q;*p8%w8@P9GkZsq5rinc2b_6?6Zg`A}y(%i5 z-Bb57W*f&CZOztFI@2%li#C-T&bHzC2HF6vl7b!S``L_DlFO}=g9i=!((S743M{R% z*xvVro+(@x-%L!GY2((@)(viED>WcX%uKb27Fjmr(vFfzdb+eSKuAx``n+;j4z*md zb?E0ajVH1RYXsO-s~qtHfHRTSWiF0gH`hBCO(J14>sKxs3A?^Kp&6=Ri1D^#KC*(qZKzdfNSd?S0e9j^2o2-R$CQ!mV{aw^lbo zY$sG91C5t@(=sZO0`vo_UCd=<`-)nwZ}DALs?w3%=%Dx7@7y6leQR40;u#%VDqrt0 z^^@~Ab5Hxc+eV-h3(Z0Lr&NhsYCegJH-^7)^^lTBB}pf#h87_(2@zPumX%_~z7H*X z+OO4g)W^rgK2tSDH{$5PYQ?4ek%^&#%Iv_VnxjA)mC$VwgGKpVt=dr`wM5HhIN=D4 zvj&?aUH8biWlEIu#!JRMn#7XsM6Y@vgZJKgFPA0#a?*1kBYV$oOmcSangZfrpucA6 zx0B)MyYFT{AwxDV8{?XC#FWJ{=(*pKU}blDPw!G+bc6j{RI?y>`&5L-QkC=k7D%IE zSab2`x$FrG{_~BWWc<;1N!rKSRJfc>^k5wrRM9 zLy0pn?o$#&52Wq$r#sU2Q$KnVujG6`Nm06xfeT+gmby%W#Hw^~4wh52e<@|`$%%F? z5~n;M>W~8A(+|xUlxdOQ{%nqISRVQ{hK*xOZp-CEy+gj#<20K{qNGTWZT#^WE3?mLX=2ms z^M`9957xQQf%oT-b<10yN045Xm4myBd#PI;9?}~SQi>UjzkEmENY!`9R7^aopE8j+ zf_43to=Irn`LXd>Lqu9$njjbnuiR^4_#V*gnj*bypdmL&4#XHZWFJ>KYW9|Pp*`=CEn&$l zW9$fukQ}hF`L@pnrLl~~CbT{VHzDr!QRJK6+6{(BHkb`nj27HN1feAQsToAn$!`Xo z@n4Qf-jFY$*lB5u&6IyYfffvG=#2n_Kac?RXxrq|Cz?@0EBRRrX0HOq%5l2k+&QIW zv72wQ7;sJ)zNq+Y{h4}Xr}*Wfx6c)fFrR#?D63V#!RQ4+yFl)>d1h!;kWz-ZKIU;A=<4Ynv+sYKnXD0% z%3BqJHuG6GD63x9w3`1e&e#vn80a$8Fg?(o_Be8`nVCbbI3Z@^u0qRc(NUWE4$6&R z4X$8{$%&oWE}O`fhMueK<5JaqbKG;6G#`%_hb0nn;WsHg5a>YBeso6xQ=^r#MmyXyR1}=5C z(gB`s;MzB)rE4|jg$>V1?Ita4u?R(qr|{3FM;n%Jc^4{2$?ct09DKDs3oJ^i>)ul{ z=^%IDRXgXoM`m=i-%f}RCrp)B8W~r1UDEo2e?MQQSSFTiQCi-Ac<>Q2Bx5ab+VrB)+SezE=e>u0suftI+=^^Y)cl0^3?DA1DA>I zl9me0Lv0P%)%SomKt1@{)ZmY-02t4gtg;#2{ZQh~qKUoo_@k{W9xgQI=;Je1{<0)W zZsh$|4!}Nxu;Um$Hv)$`-$ugN+DA851I`yR>@V6&YMH29Rj#KDwfnxDACY^(x}UPw z+*#gXKASp~6;8+n;qB(ZJ$iA%*$uS0wTS*5F+XgetM+B#-aGJ!x#M=cvd>ENTcu2$!r8fzRknm> zcR~_x+gRW^WuJ3R*%2htH0MY{cmp?r^7(HrP;*3UsFIGjmTqXQ4P1R;O0e7w0+=Jiy{lTm?^*pJ53ZZ zue`=vQD9bPbZu)lY1TYx+l|W_?GU%-$m0hT>s)NyFCR@uT{FGC3E4*lXA7kel$8Kx z_)49j5U5sfli10ws4K|I#RHrznmvr@O$9ECNou9*DYg{uf`yfm1;eu<|J|2VQqP3- z@d5S$<&{4X+y}jfWd1zxb*V^5sDO!-qmo4P=RP^O&0E5BAL9^zM$Qr=HMvPRUaSp3 z;_f|7P``}-F@?nmfVdkBqxd`B-Wk90A}w(UFO*~%Xw>3A<{AdVRx`DF(boff&RYjw z)FJKRr9?-v$ipkyGSr7kuY(jaWjl_jBxMes%hg0?8r|Urq*W7bQ2T@mEItzc^21AD zKM~gcahX*Stf?N%(Z-dp()%&*LE8s6VkjfyQ&r`URS_=%A_RCY1h1FOz%+>FDwD4Y z33fCy#Db%>h-PrCHnEFgVSYy?_}gI@Wt2$v#0l@TC`Hf%K@-9nJn`4!H8cVVhGlQ2 zV1OS|bcVAulTkMFp%_^K$~=0&6Z7M$@iTr4#b>zHPL+eSmMj*e;aj=2Ft={I z;!6FzZ<;KLqwVmdlG{d8yS1Y}GxY8-vvIs*!lmNH6cGO= zOm;R|S1p$q9Fc6T8qYDv={ouw1 zI)xF>xgJ_X63TBWXL=-CP$dN)RMH$)mw9A)vG4ah|7ekW!Vf`rOLCcjxv`*^uhY_| z52}+bGj62CkO|F)atEQ@rsy`hHB6nwpdu|Kr@mH)Kiyk;*KdCne_~FL8YDS(2m7fl ze^4oLqLSKn+`D6%d6&7>F>CHk2w-glsTf22e_!W{rpL>vi*(-j%Az2OGtyr0s44&5@cvy)>p=w@v^2pb(>yNSY{| zO|u=i`Ua%;@9)>IKf#r~BY-7cex(prFTC-QPX#TagCYL=tB7G14%?%0a2beQb6fj; z@vQIZQvX@6iti|rvjVOGlXR`?2k_SoELe648{SWf%niZ3F$Ob0o8$FTqaTCYgdPf7 zPTMLnwTcMQ@M(|F24P`N^zaBeq3q~7#}=2VHfSRJ69439@P;jeusZ{Rn!)OY@w1nW z#-y)DC<@KYN_*4J>U%&rPn7qAi|WO5i|~>gXzcwm z`JwD#WHSM?7d6hR%i!}fRA=4UtZUnuk+m+8I~m5g0}{C#6I)=_b{$M~)7*l5_G zqD*w>119pY$uXw~Q_(T&g}7&Gg53sCog~VrG#-&oEPQN1*|TdMCrZWFGHZTZZ4p%x zguj1C^85uC?i4(eclu6Tp&Fa}OG?DWwuy+ama%sd%Aj~pCLGfBlX7Ido-RB9w=I&(6Te3% z84s{BVssAcU;o-f%E!8!f@!?o*EE=Mi7^Y!eu7a^I?&YwfssvJ;D%^MY^PtrCQfU{ zI*wq(dtEKuuk1RBLeo{1S$k0~lnPbykKAO#!h$rV)$wA?A_}AP*2bU7Wg1`y$bLKu z+z}iKIS#$v5~St{lvuB%kfp?1W256r0nw1h1C;USsk(Qe%W{L4D z+nzCXe|R8MQVJ6!Jkml|{A*FIC@nnuXa7Q>_!S0-WL!Sn3+KrndKTUtsCe4z zs>6Ugq&>{+a3E8~6Za2g+m!->cLMqgvXjr!F-}-jOlyz zDa~R)Wc`!)_=x&;@TF-mD*Ncs(zjv|w!^^-<@1Hv2o@s{zsm(~(CXP1{wLQo=uFfJ ze~vD!72c2>D>_tL$gTIcxv4<6HQzUSn%^qtx8Ih=z`^W>(~X|mxdrQKtg_##+kWt$ z(_XTHK08<0?JeArLLJ0BCdlR?ik5b1Lulyf^Y(XD@n8Q?;L7o|NWImoDX8=VewXEJ z*Yo}bs@W6OvWetQ^TX>p1hS3IwFt-ibY30zBkX5N^d`wmv3wrpG@__V_qSFUITzHc!88*Tu>kFXF#5Q+u8*#mXCnIZSB`5tpnHwE$p}Z8OvD~{mcbN%`D3Y zB)F+z%d9FV=XL>20qcn-3XN(77nvO*&LpVsMNl_l(HK@3cgOqREW6U%xVAgOC>3qE zAm1K>zM$pf*_fi=xedDqzpl#&B8qR>%rt1A&d%+L>67kD53;wAdc@kB#9hl%t5Hz| z&m?CQh8HXlEdc}5{yb5ItqhpkGHI~d*>%)uwIy9MH6*{Tjcyw*G5CY0i>wI@8{Rel z*{7M4@$2$bx1pkE^7$?79)qnjGftz?jpF|8w@d98k6Ml_oA6L-qYEv!f)|hs!rwIR@WqeRemWVI#=XHiTQ+Wn2EWd}~D$R4^>} z_;Mm{Gpg{FP`$^oDtXcwtD$`o^Q;bYLYaX}gl4?=F96*Pw3PYo;gqJB2nz4OB)!!l z{rYuTWV2B-bzBmrgl@UP;iRVj=1o}yVcKw%-()1fb;Qj8K9jc4GN&XwreClP<8iP9 zzbUd#lf?7=fRRNKnRQK>XY%6{(zF|IwPu@oq4C=e+8A82_hEXCx?2Zn``rr<_do1% z@^`mYH~z1cfMd$e6!T8wVL}mVLt-BzXAB;j-;zQIz+4t;0 zFPGjHNV;^L{#b*e7EgN(u?K@WiDXev+B(#S2*Ox6*|D_}blN3pxFsE1qjdflh!AgC z(*Aj~)&sqUQzL+u41f79iNUjBc2b~QleFx*)8{{*Sg>;t%1%y4;2D5n#DXqIf!x0D zmGwb!0i3@=O^9OyatrMv*B;^q;G_k7;x>9u63nijR?025Xr5<2PBQkZjOd2>xtu@@ z*%R!()kD00HYK9eQ00Q@uLP9+w~QMC&tkCNuwUcRK1VNjs!ejFE+!Uq;-C4`Q1^!U zo0?uyL4s6X;S8JGwIf$^U>7Xnit=l%kK_(*EqGtuY`vvcQ0L`kX4=7y`mGT5O=2mq zH-<*{B&s)Rg^@!!*2-%8{jBzDBb=SDU#X&cu@pPsEIp;v+57l0`=P<(01oAF>WNXO zz1r&MSdtwwa$k(}Hglgb+87(?y~yc(g`nvb{8)ocjHbrysgHd@gFuciGSYNQf0*aT zT@9iV7qp7neMu(UEfDqLnxwLFy(eapt9m}P(^RoU+a$TO@QB9`<3vF-k75**zv;~9 zou89aL>ZF_KOh7rWYxN}w&ckYszQc)?M*YK0*=6mYw}g8v)&DqwoWDlU&M79nH?e@ zQ@6he<_=Not~8b-UMI@WH}++o$`%kidiohJipDibTB*-k$^g@VOzCAZz{8EvMG+7V#V?e1!{^Lg7`5(~W8KZiRINsD(Yhj9&sjoyFwJ_563T z)Ia;dC$|2jibpKV+n5ap18lo~%)JGF4_9-+9u))AOa+FPLtR71^mz0ON$^wf$N9KI z7`(pQKA-RU8j9CNeFA!LTH4zpdB`Vy#A^f*P^lZ!db-}a>Q$Xtb26AxJJzua&Z^u$ zYyMXUcOV>lzErqFW$}_`#CLggF&uEh>ql)+@N*2_l@EkuJ*kV+<4>8dp0(vz-piSu z>}{8>x4N%0ECf1}=Vg1Nlrpk4%^M<7Ga|WPM3sDxbfyjp;dT2o_g-;&EKvhSwyz;l+`bZrloqw~=?o0u2IBXY@{) z(G&GYzU*k4Vnhb?CjWNM7dkCskbX_>GN0p#dbD7Aeq39_KCOfCCdI9COrWH0C@V)w zvTqu-Zg@vZC)0;AZuQhe&I*3A#Pzcw zB)Lwb@P>#)h)#tOuAgz97*e+vUI{cL0M3?48Plp8^8%I#o#}*B_KXiKJyii5%JA&U z>rziiQ(Aj3x8fs%CY5sAE{^W-dCBov$@`CJ*|Ti#vySLU(FDNT#sF}^t)q&9#46|9(an9=T%;#-v+Mb{nn)lq4~hE zYqI;??xtWExfalObNdiIlHt6oG{p9pNw=!qQBgj=V1Q|D$ zvb3BN%*H2QRai z82M}`KA94IMT-M8Zb%_tkeuNy9~|kBL(Q8)*||IU5e@B1>3k#^=edRW>9=~PUXh+G zCAWZbF@GGsuLHzh@z0I2y`%5Mf4HSJfj-Zfx_T8VkMKB?pP7gU0;1k=&Um|yNiQf7 z#u;%o_}3dxmN-?{EM%xqbL*w#yCx1%FS32gz(UIxt-4{I+=E>y#UIp=m${&W*7S%gIb5y%mI7PYl0K^EHuC#X zSxXF`;)G7)AuFDuzRPqUQLS=QE{bhv6itmUu#I4*wLo;pC0za*O4&%veAC{V{aaXn;HxWO8KvU>*)GGT$WLeaJ=5 zz!CqY@fs=NlY^hnmq~(Wz1I`9y`IJ-29tlvPNP($RHJ45(EoJk;gmDdDilYT7_o)# zzuG~xIx}%GSoz|gLOh}ES3q&hhFo6Eyz7xOO(e5T|+GC*(13c z5)_>alHKs?8m(^Ix6)=1drBL+SBnzH|3H0imHU)gLzd$MJ~ndSI4i!F%Gts zz)w*Dq=1=qe6aS`bGR|X(BG28emp(jj^983M{Ai^hT(9?w10R*gPrz&ye>;8|F_l> zxPuW}7_T0&YCT=#b@_p3#&ykSd?{>EQ~R;1h0%r4*iULF^gzE>_gkdg&hljg$8bx; z^|x*0j!O_!?c;S^Q}r){x=DQ>&w{X==fZ8=(tCOlSCO2l7`E)<@rm14`lvIv74PK` zYh|Oi+N=k*frKsNUbbVGJA#YZotnwKcQSe<^(3Gc8*iTgg}Sog`MzB@t+(|_C5C4c zOVuf8f^Vv3tIJRyr|PerQ-H&qi0)aVK017mV%gdHRpdt^3SBS zkyGf+*cRWP;(K~eL9~6c_%;pMRY>OZ3Kg7thp1Wy&jUl(gN=oY3PAc_K4Zkl6^zUN zZkx{Ad(_<5$PePY3{d{C?>^tN%rcrz|-mw-p-0A?HYE=OmmF&qTbNkt4)u##q44 z8Gv&fK5Ro-Vo_vor){s8=Z!P7dr!DwQx8719Z zGZIhdH&a6|l~SYgtG2(Ghu-CeD)SAJrMd>Wvp~FB(_AV~87# z7S-Hj*o5A!Xx~EUmgVA!y3yi_GL0cb&)7-npUNU^{ZC~P3huG~s?v{o{${}F+*Q)D2)lp&Ro%InVs9Fi(=I; zUpwYdC{JGEM+%Z911r|*DA7?tq7DUH8G_*~fHR9>lXL-;djmE9JhqW31B^tgODJPJ z^&qJ2Q#fxM*kZX!L#(;30cyY6 zOm)PH67|mT6Fx+LTjvRiSSE|L0!aLKnEV&cG(2(3eRk&fAHJhSD{-x)kibC9Nr*IU zCEvGN5l*dzB+1TtLm$wls;oqy7tl|HO_HC`u_QkLruoaLJmmg7INrSFb8UnK2_X&C z?o>Y!jJKolR56P|6-g>8#Lc<6mKE1szYjFDA6i>~*0({LRV(WpmxsC#`Qp-8Ax9I= zD#T(tjK=l-W(EUNMDB zik(;EA%eEs??NfZ=7dskN?MEk`(7EFE?4AMwqMoXvx=`{2r=6$tmQlSgAj2s%CgYA zB^hCTdYqT^PqfB@`^X3qD?WXTo%o=uy2~lIBnGi7f#?v#>IX64JRg3&l5UpMF(z#c zBi8-s`4ZOem~h>ASm;i5u540v{S{4U!5>K^Qr0;9IQRIQ-y`V-Rq_6hPYh-$0Rqg8 zUe6|tjrrdR1xxS=wXH|84}P~zn>H7Y(O1@pb+V6vqCg66cBY-V!%QG7#bUCyk3x9) z66nrX&i;fLQLSSo1l;L5e1c=VZDdTErc~%H$?;#8@c%D~<$se^W_J<)7^r3bpgO&^R*kLF#%qUT*CI^WvjEc#$kuGC!a;Wi zP)}zAH-%<2{u~RJL3zLG%vo;e@?nld8=iP+!uCb=@4J@TXTIM5-%%4sbKXs8LCco_ zC4)kd+?%?QP+x_;lv7VrzpSNX)7@>`ZF3bktGIP~R;MS!Qu1?z5Vv)!V*P!$ZiJ|8 z4-ZSc5dv^B0h+{CIZ}lsOZb{Eh!lWoui_xy6!_~zCEt4owpwWSKLQl@Gre`W8aK%& z=}vgOc4tjZ&KGA<4#Un{xao)6jgFu(kv~Ik2B6qyyVpGTfB&PW`q}jRZmd)&m962F{p`<3L{d(OVO9t&oZGv?qH9{@?ZJ4fA~NC76ypUmf@0!Z zcYp`27wFbClGVLE$yJh*&na7G>uZGT7LiQJTAc+y!~g>|N|h~b4{HmeqgA}Nuzug7 zxzWB2$qR4==mf3U0SOR7Pil~gqT$y#wY7>)hvtZf@1Il*hcpsznO=Ao3X3Ku35|HI z<$!IsXx36C(SlpMe*7#mb~|j4?R;Za!^@s{kD5p)1q(XwA+h5E9GG{L2)p0>hV|_> z)#aPvDLw_uD)`v)bK$7c_|fH@g&UGTr48s)b|>8e@oUa82aeD z*?o;-x5uIr`ka0!!Jn&M*-!S1%S{!ud|wt^%O8qTwXqApY1nqDg+9VxNnLp3C3zT9 ze){;0v7Ofm!Pa9O%6f}wwqgKAeB8Kt^gE(ts-gNW{?fjtqaW>f*3Or>XrM+J)twAo z^-c{rD(BK`XNYpj8XG06fAo=?D`b5*Asw@ew+EU@zSnbIkTx&FHG<*hE6C>Fe!lC9 zA)Yy?{J9%Jm`L6{l$!U5$(>-_xRA>Pts6+2fA{i6{c>JF8eYhWCzr_+{34diup_ie zAKoOj`M@ABl9UWaAl=)&_(Cp3DKEUdmiO4VJrxdiv zVxar(D{>lDTs)_~$2z9wXfc+)}TXz~TSJ8=4UPwK|2{tYJj55x$| z7xS#&Uxyl6f^Bh0QI6jn^pj(e($?qCLuCZ^Dao~jACcMz_{kKifB7+{08?-oQu-K% z5Dwi4p`PzO&bj?Nufi+!g}}n07*f6REZ;g?F*rm{z%iuAY3-CCRofutS8WUyg}z+2 zoPECc$&`C^-k>Qh{g{9hlKABAe5?I_%ktJ0lS{d}xgTv_3_td}NDp2qRsJ%(!tKY% zGethFnm2;&O7NB`_Q)V=R%KboK;%|5^~dy7l-<2l3M0l>rOe(SK!`6;V`UOTP=>oe zDC=|_z^G0UgRe!8?ti;M$@DSXh}QIBpzm8j3Cd@ClDocFUNUmA2qSdo~d% zhFL~w64-+#nUMc4NtC+{Lbswj{CSeNxL!%fTW0p1YbuS%HkZ%Fy+|*3b}N2L`}^2( zE=F#4qgOelj_aADp2ntp*;tb^Q`}T*1n>}uy7h%OR^QB*hJFe2rUqBH@+4r=1kGwVwD;fANwl*(3pn%oXO22fTCxF|5 zBE{}=f&c_IBbJ_9n(S-c*irjGTtK&A=xtPfVM(o5Yl`o$|6P6A_5G*56#r9S6sVBg zBgMkda?dFY61c{-OJ)Ix(V0K>GMk84P_S`pH2#1IqyGg*KXH6c+kGs2x`H20nhaOl!r7@hXV5fG?4hX@^huh z-S9+E^Vx$tqu;7qg8~^o+%Z`cR`g)Vd<{pp31jdo;YcOL;SkSnm)>hFEySl=CfX0I$ zjHZ}J+n;vmE!iF$UJPI0Z11%-_%C0OYzJ`f=;HCYzC-wHr3csgBM8n{-#db#!>ev* zg8LTLn258zK3u+=9Emq0dNe=Cj(1?)b-sVN%PDfELumWZF& zftB(Eu2I(fK)qzzs=>y2vgb~C1OKvfN&fpdpwZZW3}DADZGB`{quaYk*~Nyj^nxAc znkyubw{M$Xx44}Tbm1YWnRYaUkw7LCI*k!lOb!@DbS0I6>9N)?3yi!zeE?Z zX2vfhv#~j`#xoxGb@mvr736aJ_0nCF9HMr#@=8Ihm!gl%{X4J3&Isb-xI98^2)mdNN~ktnPDl1;Pr5rrEH~6=$De#ZMVWri6DE397zd?ToSN ziN|f051!B-aeFOuMrGFfxwX?2in8=+;Cd>T4|-kYMCeN(@JNmqna%oljPW5BHjK_F z7K^1HlnG!=5_$O2(sQZ7CH)zjyRk3O+F;)DmTOU3PJB_-9|PGB?lCccU(8+W?hd}b zbP(uzX8bnX#gsVKen9RkjN-cDt^X!I1BjsL0V8#4;;&%E<*w@lb6e|BT{12YXWJ_K9_o!HThVxsBxe7|Z?Vavs(n5(aj@HLyOKRFRr;H15fg^by#J_8(hJ(Bb9Q2Xkx&xE}apl`ot!i$AurXUOdwn)5YT(E2<;CZZF~UkO zKlK@2H9^#tA;@YU8tM5+JhE)!FA`)tk^-xk{Zf>k-*#ED<30(}yV&g8!pe4}^=oYgL!5k>->ui=rQBe)A&I&-9O z8z4gG)MMx7y;qhu-T|vE^e!}uvw({Cys+$RL4W&sjTYMSqS$EncTF&o+@N5j+vDo% zy6MRFg_XetcPB4xK=0y(U>h@s4GEy+JQJNhO~HBM?X8a5hovnihTqVOAsgxT;EA65 zb(*N5#LEFp0Bru;^3Gq}A9BZePvMt$>YV~oJdRRn_ik4KRbB0)%jm908fDY*&N)5< z3`&?NP4!M%AT1Dk8B^Q^t=8|;P1tnj=?&hZwZ$Okb3-@YsVQ=peQ0z_GF{!qwkxt< zDRDddkav4dtUzf$ZmT!g^}U{(F9+{M7GK|b<|pvAwydcsQmi(zH~lDzE-GtVIX3~r3Pb99`L+u`T&O+_ z%@Z*|G?7}uqh}ka=i#?1_rsu-|G0?_{`1Yyd0c+Il=4Wq(Z5pnT0n`b=8ueBMO;$i z(e3tSPQVp?qnI$w{26>>MjCgoe$tx*HravYb5}80a`5r-ES=c!v-_CM^x=Z9Txp+qAMLl7Z+tO zSgCnn#LYY6j4FFs@H;|O*i?Ec_qp8=PffW7+v)4cCN#65@1wYRDYf`fL$bD>{hXv- zj8=H;M=|eu+$LcjJ++-Bv~bUGzVipf+q`Tx=l$9KaD$=@KPZ_8xyJjIV&R>)fuwZc zFq2PsY0Anlq;1p!ZD$i^PCMw+3RM_vhHEv{)V4Vlz<=>(pZT1Za8%cB2{u;lgem8M zd@fQ?d)wBgnsknSn|f~{ylmrbCCS|mj+)A^FSCQeqH{7M+{*wrqtdwv$@?f6d;2Is zcLt3w(F-_5&q)ELJ|-M5?AOgJuE?2?d-wjBw)-bm0Xfxcoj0Kio6~N-vv^Fh=a%JapfH8 z?=mwO!oxf1CQ>Os$`BWK9u6uBkm@$y0Y0p6`j3^$5yXz}C@Ml;IF-!){Pa;3^deXl z_1*gQPK6rurIKpe(1?dk=JLiLsOf8r^Z1f^#eEYi;l+_-tLdlgbX;%vrK{SmmN*$g zfZ3A%MS;a@ozO|6+(zJ0aOMvd7de^#(oe3nQf1KA zSV!Yi7;%${M^01TCTVSd(Th*nOEJgu5>cfoDL*6?_>+M&GQi)AG+6!&E4g=FFNEID z)^eM1M({Fb;m020Or@5$M4;9t>l>Uu5qsfFd09b!*nq*W8IoK_O9H2Ov%hToC$oYX zG572DS9C2_0%7H4nDC2kO}3|5m4vv9)IpTp-IE}yMn}PZ&QWa>eFd@Xy~)%S zlT%#vF5}VvBhWM^3Sa9al0ism`w=3Qg-`-XfuOn<|`=C_ofs2G1dnRX^T zNMA&qCdOv=BMOri{UmynR;-Cz!7aD+&jgc{pi0N}(jaZP!bAQOq%Ut%ZN8N9T`J+BKi^lYV=-_FOx(_Oa*o2TRBeZqxT`1tGzR57uXBL^kwGBr{$ zdyvlNPQlGuK~;s;)U0qkpW!Xdo-4mlL#p7pncrHmYm&hUA49Vj>OIc~C9-PCcJW};qncHL+!LNrWwLf2S-1_*!C zQemm?HMHPhH&zlD|JQe+Y|__D6kSH1%)_VRt<;sdoXKv)+?D~w+S;)lueK!H%h!_4 z1L!Ta%5c{I{Y2uoOL&c`U=c^>7|q+#yB_@P=Y`^# z3TdkB^e*)#v-9R%fGRt)M~s%_Y$|gvit%-{#BZ1-t;JTe_CmG)}x*@#W|@TO#}N{6Q5-I zCsj--K;DA?@5+Y4;G(g$>nWz0MZiy3x)eP(au-EWjm#aO z-Q}H?op~0tg(u914JY%bIdVeN_G}AX$%oA;Qg%4S4dT-FjP{3xHAb2W&T7NZTRj^^ zp8jrh{Kz$t#{KlV+2!vlx1{{ThDvFoi{_&%D~PjtGB1A4+)jTdR)-dRKIww%A)O#V zGK*mO%FJwG|Gs87>tjPLF z6YW>~Z#;gK5(2$er6S>@iE3G%k69hU#}2G!*WJ99F*dL&RS<#=5nAmRTx^_Uf5^u_ zE&_g2a>4?;T6TPsda<239@@sh1At?ba!5r}wY{Zm*Uq9$qp;`$S#hz3Eo%MS%3Ft{ zx9=*s+lqpQ2yM==QSEcXHk@5V`V80;Qm-&^S{hWO2!_516~i3X*^3rq1nmA2Xvwu2 zORnF?5(xn@kNFHKeWm?#z(U!AMR?#HPQz}dH3m9XLb z?u9@uSTNbUBdc)XHzU>yL$?QEQvzLpc&xvbr&19jJ^G>A?^Nt>1O{-tyRrb3hCRkn z#V5q4!i3b%?;@%zym!Eb?737# zaC8^n4Ml$(V^>|-;(UM^C%^sv)4~#`HQg+V8^|b7yJr2@A5&XJL6E^fQr{$G312rUwBI60)^KjxRqtWy=YYYbm^MLv{7WXiy05 zW~q#rln~nlJfsF-^%yEw7QqyroWxJ#WfsTgn_Ac1&<@gqb0JBil6+eY^>tK;x! z(imE0R(I7?p72Q1e@dOBVf@=Bi^(fi2>AF<$oZO%JYjTC#{`?WW^s54v{5aq81enV zd|0$___$0f=JnSd5+=a79RHq&jl&u$Xn8D*S`WBo=o_;f#-BvBaUY8IwMckiJYXx~ zkIw#V0(nP)&$_}E%q|bQmIl{~vTn`4cn`SR&A58}rl@ZKsmdT5`L$A7gsE+0@(xCo zbf-zd&#}+2w;n8^+_lv-+YH`V5-x4mHk7S8TrMTWFV~W_f9NJ5Td2M9LC8d4*mKpi z8B54|fkRyAJ?*KGro%Nm%M3Fo0;96tx@S(QF1#; z&&&t(w*2`;7BSn2>tOij0Wn0h=zy=447fWOzJ(Q$Z(G9zPB8}ygz3!)c&avA#BPO~ z-6$gm#J5p#t{p!6C#@W2xR(IPo;gb-ypITF~%}_2KkKg?wsH_QY>_x?(n#rZ= z;&lN>GnQA$tD$7J_EhKU-|j3Fo?128twsFcv+VO34=o+9X`5WzU+&XI&VLs1vAFgy z4{q5fhmcAZOQ7n{&uHFn(_tbXIsE!ks%UCtmZ+NMDL&@Ihi=X6Pb{W;4x~_}& zdb7iKH&5?h|6MCawq7-OnIYKSs>_#fH@xj~#C*UxXWmNwanXPHsOjO5(bl77WK(dEayWyag7Y?n7>XE}Da|QW?^mRCDTdk~m$n>Ih<&&ISTVcKmOy?TtbDxfVd?6!3~+L^Insfap$lIq zIV64gBX;`f5B7zU6TdYiR(~mh5+tYF?tS5`uA|>w+(O`?yOgFtbt~g%|D3MPoaPB5 zYWV-Rq0!fVeLyn|MpAZs3k-^x2fm2k0(|7DQePWFXs_0dK4H0n{dt%)aCB8hmGoJY zgdRa&!dp9RkTHUN!Lm}H=U+VULbaj@>wBOeorI);TBxm}92YCfb`fLL@J#)mGfL{6 zPHQ(Rc_3z>wa?>}{33N;NIo>TBkaPO*drBT{{wgjuo=v?%fCPuT7QqVUIi5QH*Q*u zzy+P48qJ@FQf$VkRO7^P3F){^Okp*SH9ND2iL`&s=v5XZ%FjZ*HpiPknbbEcLc;_o z*0GI;-@Xi3q{Cs`Ag2-Smp>1v&wtg|dlzMnqeUS2QH2pDLk?Nuu8|hu+bLN-`iP_F z3ObpAD|pS=(quus3gbGNFz8`$50gqvD%OjB)+x@9i$dgB3Pk34bsVIVLJggnz1Y1H zatTiqxbqr(2pBs>|B8@No|V0NIp^O}FcKLiEjh`U{BJwmT9SFWc8+-?!H>m6w9^*OTA(z25xEAPr z0o+-w$hrr>zr1*q*F#_+O1NAe2z_v>7%`^{H!0NOYYQqc$Q#F?>113!3qDzuP`>Ch+|MD$Fjk~%XQH0NAAQ-bUBLd_t zans8j00(cBI-mRwiAfFpCtD>=^$UbrDWQD*?oWPha17%bOU~${+oMOvgA&!hTSW1^ zFh)NukYWzCu#*`sGH*BM%0%9lt)7EwM>}mk)SOTLvN=#4PUr}&7fqQ}_i(jS`}6$^ z2S~=Yl!a^VQuWPE@Enx3aE$UZD{b`=^>HF>`YR~CE^meu0V2S<5Xo`L=<`8Py-Gp&( zQQKBGQ>{I!qtBjFMzS$E@Mkq5`Q0Lboh+6GpQ5*ZLoAF`LicI3>fu~c6YJ(%BB;+lhmz zIj+Vl@X_bi)emRQ0E&5`j_tjW1R+a_N|1Ktr&6ecfMey&{7!m||TN5CD*KH`sdb{&*zzqWiu9l@z{*w%s3|qPm?Jr_QFLPK6P} zXJYTp07b*mCmUBn8Pc>&Xn%gs6#Xb&4Dl8iG|2vx!OxdO?2JxCYL{DJ))Fy})H$e~ z!aU6coYW;;B&ZCkk-6|U@8JoD*FsEn154jcU{xu#L%qK5G>$fzKdf+DjKPb9{zTf@ z6<1oNC#gVx#!$K>bBQ!pmD^~|KdF|x!SNbAcynSNyH>kFQY^FtJ*BeEPlGG+g`c6( znm#i}Mts)Z#B`bL{a%N?C35P@SF{sc{@!-Ov*rz~vFCvQY=RVGd)GUjjeKvyTt2=- z1~M4jcK$uIw8^$6#d2%AkUjpOt<$Jf|A`|}kfVC<7@})7^kL?F2zS0`Kr<@R&hS5_ zP`2e>HSRbapC)l%6&-#{3*5}y7Uub6UZbK`#Z_+}o!UZ9f_jMsRga1=-)V`z~rEJwG`oYmGY2vRL z*$>12&Cek9S*KbWNB658tJ5m|3z^-Xn=$qSwOkq4{OUVw(kgGd(2)F8gD{&D)^3#S z`1MzIw5v`iNaAqtJ1`w!vi3*P8wyHbr8@EDx_3*gDST5?lC&XmB0%Q3SbV@qVWh<8 zuW3{LBJ^Bn`MI>PP9_550|!OSYOOqX3xOpz#-_3#%51-TdOzojluL-Cu?Hghr>Q!; zawLMN@EHR1xiJM5@^-e&gy~Oml)AYgC7_FBqKilL;dl)gqoOrI1?u`R{4jCPj&+F} zG8}82tkE}-{RwgGFMW<--OVQ;wXypTGlPGNb}CDGJBk}`#01$BPFP} zwv7gUiCc(3Ak65ILDJO5fnqc*u`2N{Z1L zC|!6yWyaB8jxdoE%Wc+9dODyWhHC8Mp=A2c1;N%K0OvfzYKaDPbci$7rf6JR|kA9b9+M=mp&lJMelwXM?G2Cfgz08`ouQ-yQ z_088jM8QhjCR=l%q@c}1QRprof_nP=6Mu$=dQFlolXH!p_C=%jgi=Pj{b;Gk`y%(O zg9m)i?`eP*2(1Z{a?o+->2uZ_+5f z2i#6lF3Cl27Ix61tNFfO+r%; zQkXX2U;my3G^U?Rw_KD5EX&$-~y4G1T zS8GyDU%EAUKRDMeSm?Qxd4W9K13gIF|D5E5dJ=J~Qyw<+{}6B=zqNFmnGgL_3!Uqv z5zW7CUR8eYEKZo|=u~(GM}Tqf=RG;jDb}5AW%_5w6~Aq{^XZ=g3;Wlh_Qvlv>x+iY z5q^o*qa9m6n-Tqk_DkGHNx?;S`d7tf6r>)>)?DI^p~xI3@6Fa+E5L&NhG*7fp1O|_ z62#k0q&IbCGIX@{X4?nwN7-vATbEX(FFFUAepUW}T7qM{P5b)}9sSeB9eUAp&3>J_ zY>aw~xq5Pa^H5Rxbk;Qx3S$L-r@Z-{cZSX;-rAsHo4Lj zC~)}pYZ+2&{CfObB56ZTNA<1dT#NdU7=U(DEJS>;@sj&t^-oc>r~9{=Eooy>C8tQ- zJsUyfyj?C7R~#b(uKiG9H&QSu_R~66ZE1R14f)DmpKFG4(5e3NE@`jD!Q94hSIJGv z81@kAkbc2xcO=xXa6Z$p%;ZdQ#D}U|-IduppDkGI`|vr#iTL;E0W!uqFn*By3xuL# z&T4#;gOK=5#xX~&U4ZZd+&nfiW#)64x#Q>Dra9kWMQv-vl)AFBbt}=Fg`fR}MWgMb z6jLg#78PpM9cz1EtZ1QG%z8SNpSW^FNq65+PMzDV|6KCk%hJ$qTt%3b{_%$UO5N%= zjh<2pOfHgAP~OkE4MaW?za=$WV8}SjE%xV1h2G5$urGU}oV%9T5^Se+g-smdD@&Y8MnpQ*MURS|odv(QOlBYE|00ch zpgq9$X0f-6bShC8N*&z=v*1)gp6ZkBX9f!roPl1z8&4%Cfy(9^9pykEWK@$@ZsN^O zLRmFX>dKmLxgf(g5}lbdFRO(WEglC_Z=XzmZd%P2zHb+FUw8NJf=^Hm)nWTQJ^96+Zd=89MglwFVl2?P3?oI*7j=LUHJ{mH(&ux#)yuNIAX26e$D|iEkye(V z?#>F0z-B4_6@JL^2Vo@vv`7{$@;-wEoHB zfEQ8rR8JjWK8BM~)_myYXO;p;$0(c@c;cIwnoNevxH1wT-sShoWaK-vTUI~?Z{NgG zP(@FqkK?stTzlLPG!I7IXc@f+X*h&f!US$)@S2)SCw`sOf}OjJiFVY^N@aF_oAgHz z>>J8A=L&jPZQ@>*%iv+Lv^wj?!^|bv(UbW+(tbcz1JR4o`0)X~m}ZJ^2T(%gOh;)N zze*ob6g?sHi#hJbuzXdMVO3sTHi0JrDE{(d_2*HE6nC!y=|Trt8j(u0?x*glIdkcuY-H~)nHjg_o!S(I0gwr>nnvYZj>iz2*B>*q5a+Z#?Z()hRoWp?^T z-67#;;~U!f^Zg|IJ8#VIf|PBVrk6Wjo0h)9(a%*wP+RzqOVtJ6B+#7KWFMYK4kE%@ zN^9}-sVFaqY6bhzbwBE|po(;2IZ4F$_HRd+_d4OfC%L?9Ev$;S&9bs33}*Rc#?p%d zxH`Pa#X7zb;C9)a#ECd_X3Q2BXn}SzoPNFXAd;l=`YQLg3vrCO-RME4$L8zOrox#z zZyV4_@a0cEUUR<4Y&+&AD<<$SA|2&BT`zwAIpvbtO+9-C=OWChBdlSa=B@qEll`md z`qgod#_2rkJuDmD%IudYjdJ5^clWoh{(;i#i5OvXpSzM5m5Q`^Ho;n-7-`j;jV|}0 zFA@AX*<$wB^W&M8R)gVI%C9m{5H76z)>|>IoLy$9DyS}njOamoD$kEKav49%moV;Q zG8`_{n??eLBFyGm-Hk8tb$7li9Ww@U4&5}rzI1(eMpHe#6kt{R!+gyOl`+iD^Jylb zETiku(LW;;4~||iuG;cQ%Pt#A0-nHYiIsTll1!?^aw}B=hkCtXaI1*sfQ@&5iy0^% zp0Ifypml8w;M-oI7=bF~?T%-PBB#A6+gjd7_9fZ9yN5hff~tS^1x9%fsqPycOjRB> z=hPg2{okyS`p}Q3O}ysrkiP@s*Fy;EvXJQ7(Wz-gCdRn*@dxCPkx_CM@x{Wr~#|9^&ve%dQqYeWci7NA^ZJ_jU|0C>}u z#wK&Z!jCHX2{s=yFh1rHC;ch(eOE5`hfFI~s(=A)VXbe6?^E~JSOP`%oB1{O>WgtU zfhqR6uV10-@w3Uz=v?^C@n(imG&9TRwW~fwIy|V7i&>yXS`~%_=%^j2iGM;^;IV>nK- z6`?<$b2Q8{ljxsn3I5zX>LP(2T-XQiYGgrzWX_DsEuvuacawZb7|{^)?PTU9spT1zK| zOqAV2s?SK~{OQz2Y0`?IO3Vvhn+wWR>ejzbNP4j2BWjhx$Cy(#8Ewu z94b-2inharZ$?PH2javIxYQQYJU25<7hcYAvGQ&d%^@sL%MIZ!!*VFu9NE49QR~Lp*siK(nfVEw_p#e}YvHjjxZQUihqHz=tnv-&x_*jowS# zJ+OjR6n3a7kIlp#gEa;tbBAFF5t`GewC`hT@ivEL@d@=(V;A5j$_jH4Q8ExO9CgJa zxy2tJzP#GM@PW`a`*L0J7kuO0@|4ajf2)FjKz!gHX*=cmHYVQlv}B~mYz7lBvsbem z)3YvR9L_y@^m5Krke0PE&heCgZHFERLAcQ*I1bSdr-HjlKT;agdUEBkYZuSpnmC$x znyg_~@w!*jViv($&Sv~rZdJs=ETn@_Jll;iwT0%9l3d;?7|ku>IWEgU%Qn?z?d{TY zl|i`E+BVn|vQni3v4%5?ZmX6yU3NKErND07-qdrEvh_yt-6SI;4A ziOzF0NJxe!BP=JLAzs;wc^`8DBRETAl;^p^@Oz+aYl;0 zJIofz9s#1gE8->ulu97m4?Z?lJbP#t4N2t|j=JhzP=6D+y(0mNCtq+cm%rCZqJ_|D zbUP(yk-VdJ*&8Mcp#sjx>L^CX#q)8B|2-#=6-&ZWl5v6Ev3s{aG= z5=g4>k!4sQ*RLR{Mw!C&jKUaebc|6y%3ryWAxWjl?$OKBqfJaaLLM82r1VO;s6k57j-rADj3cno*-O!66`*}Oj7Sa&L;=n7=-qpm zbP1pMh;~g%x|z>N{+pk<6#t$D$gMHw5(Av%1F53xD&e#Q zSYdXOe>gegy>H8TJLi@&yXmhi%1gnU&;>!}(Vbo>-qCz4mFV;0`U(Cpy7pnxY(wDX zlXfG8o>;W>0fKH_^#I_w0MoR~vB96USD2iohVTl5Y;(M&ApcatkmUlEdEX^`xM#_G@QtS9D@d~2la@+Edn7DCG^ETNVqGOG zWH7Za$z3NK>F!*t^eWH!zK1T)?~?OkHd!&3tvcn&HLANp{f zbDK20QoY9OVi*fdoD2^S&W{ZNbK<(!6yhrw2*{CbK7Nc_QfjyF$+t#pspa+Bk8vZE zxKhEYN{oc#hryrmFKdvXQIV19RgUSWJ?$M-zHtq~jN7!7XF>JR5|aulI45!WkwRk~ z<26PBMK34<^LfW9iX}DH-V$VAN7S^wH7Y$RwADx@{f8zG`$*RcP?@tWFv`XH zebRW7fgr6Z`Z`g3JMaGS4taw1TC{k(uR)cYV>g*Hk2?zbn7AZu)v-Nf15lhb-`_lP z*id-`Q1id*l=0Dw_-f)t25WRrOdE{2Y9GH*)mYRb)wf<_b#Et$`TQ9R%lJa26DTc( z;*e@oz(-x~E`yyfhSuHNkxyw%t*VJ`qUeCXi#?aB`AMr|FwdZgu z;payYdrwM$o2Os2Z2g4GpbV74_^Op#RhKq~MA=L|i$zKUr{Dd8%)JA|`P)LI5h^$_ zLT$&SUkxrnXTm=#mgeiqF$38OI%xiL<;wTujQ0=bLT>lzfWpb?tm{GU&o2U=< zDsBlSy@3bifxk3=a`{9{EJw2_y#!2fcT(n=+Tvb!m2Py}l_hm=wC!9_t(=0?uutT-c#OX;N`VGlAe;l3ey1Q1g2=wM7(6p6h zYg*~#LFWxR*nBR27JH3(ckplwn&+|mI_}w>;@3E!oOOW-X?}FplWWnEvZ&vGr-I;5 zJ;DqS^dgCn-j&^IWc%Gs?RwN4Y18qhM#@KY_)s2-;CY_-{Ml<%x-NHj+~jd4kv6Qi zJF%6_oNv|rPwsk%bs?{R1}^c`T6KUtR(vPh!#pk4Zl^SrEBa7$yD!-RU9Mx-h6m}` zy=qaYgJXe4z^9nk1Z_*=BFs>{ZXw)Y4-K#EY}KWuSH?c-BCbS0?-sn0 z#{=5Gg{4#DPDKI{((s&f&CO!zO;Xq<8;ZcEag2N>xx6T)aHxrgbY7ON|53v*)M>bD z056Qz)?`WdrWfKiB%oLEwkeBDcj^Z3O>BMPiI$yIVyBX`eOk2$)@picMw>+KHhd6X zIa~n6GHs0x5@~DGvUnF29&;1~Y&}*D<1AokIZNB)(uPb$iaXlwkG3!f6#|a%Z2zbh z^Ugmz?Aq2t95;(o&?l__x^Zw+VFf(}hkkw58rb@U?g3y9ZY;g+Y+0(OEEfMul&@9k z?}}HaxLy8%Mlg^0;e@)E92vvICM`|T!|oL;JAn52393EzGs-tbo!}qv{Sthc^_B18H;}(rG|H+GuE+A%hIRV)Y;RsL9;nKS$h1|d5~O5eoz95M%keVb}S$l3#0wYY}<{)-EXdZ zUdc}>2QV6VpDj#rS1G>Ea$NVY@&NO;(nwwQr*u%3H$?&9;|H#ucPRDhPuB!#;*=a@ zfpatGYoXWg1o*)ptTy}n%_lp?Sl&T5-1IbJjp1u;+0C&75WVR%j4Wt%1r??9_#gI%D($F%J z3-j$J%KA^7h~OHF@JM(Ms?|Nc(=Z=|FF{7nvK94~y? zhD(8nUk2W`^@c{K4qJ9|a^QGru$rt2RT>0!kQ9p{DShRYj}!1L$QU_HOn=IKp=Ze@ zYc1`y1RYktr;%n+SMtcc=b2ODbPl{sn~bj1oPd`U1CVd6*$JxM1Ex$TfOWArmf`%g z7%M3njftSzBf;5i<++M^?XQOj1;m5KUMqL^slFccNom4A>0Vcj~$tbp=WIy{4&^kqy<|)Xt|@zI%b|5 zGP5hi%`i@bXhPngK#CQdm2TDouAQ$)(y`&cdkx6C&@|W#0F>_x6sqA__PM$$w?XwB z049#G-#HEmM$;R|%8$98y9vSOB9P36mZwX`E%Lx4w9_&}ggs+q^WSo=pm3*0_>Fs= z+e5{=;lr81C18t&8-PLqb>{iZ*X+EhS7LLY2S2XS#&hi3?*+S|n8pM%l=g_Q)IJA_ zJ!>ig1zah8FZFZt&N>cHPdzn#$RDnQqusf=^yq4gdurDK>t!rdIhT1^xw4=zHg1wr`S*ri9VQ#lT|tkD&L;lPYhNF6CYpeI*pdRp<`*1 zP^pm+s;%E@-q;lXWj^mRE;+X?Sp9uwos@Txq=4D+nZEa?!I@gUx!Q@+V^^stKdVKNG@Uhs% ziNt`|0H*}lij)@mOgDI~``#_b@9H7b)1|)y>oiH%V&FCu(vK}GqPZyy>E;DFL9ak| zci{``6tg!$xtomHqc=)nC&cMU6{=TON<#EXAB1RcK%HGIghJ;4I^eK!omIrSIJX*xTw|qN1tIEwInW2?D6l*EK6lks|80eI>=rI-_0?=-39y@K zd+kL6vg_(yY&9I;OBO=IwokqH>|ejpEV<@wHT`49Xj#8iwUxQ^WzcIfJ7(IF#$`8S zi{FnC{gv-Ytgqf9hdtlToNdBuS|ry!D9yZkE8X0`n*l_U1Es_b798%s24xf4oVvAS z$GtQXd2dm(YABi{kX?yO58QSf)%!Ngk|Q)A7f-e7wl#hfIdFeYDx_aQNpdRUJCbu^ z!rRAdk(QZBI4Ux)^TX_yuu2@SO%p_nLfL1;ZdwRwCv+fp@@k9SwKGS=5wmOfSkh@d zsNSl~K-lVqeSGHVgP#0U@vUDE)l{!xrjLPs{4fmb7WEr5$;HmY*1JO)AGzyTRY1&< z;DflEsE~l?DuiNr&V=(f;7l_gbqWdc?w2uj_2*xAnk1YsOP@1kc+$i^|Ec8b*l9mc z6=lS%>UDR8Mv0K+|<}pucFuJUKf}DY}ns1hSFKlUP&ThbT#Q*v;xIfmnj3 zowD$4(zr4T+#LlrUL88uT*y4Sj6(E}6>!u7qb}LxOkP%-Il?qDb?%YDdr&0op;k%Jz>P~IwfqZeMXAH*+G z5%`>th1|ptuBs=O7&EkI*;#97WB^>0t}djEZIc&FCmIwVjHG(p12GAiJ`U6%qH|>^ z68&H;{}e7h`vcpN6M|Is>quC8MCtg$c07`_bz3t(xPbhvR=xXHPPz&@AbHV%q=Cj( zOC+l1gtY2Nf?b0*kVs?fB_0eDyYl6x`Q2mj#}9;lw$M*t7l#oegGgTVCC=WVATG%* zG1_`v^X8LZsM-l^pk@5RiWotVCa6&vPX5MrSvs7{cIKbMDrmdHmASUa8Dz_f)$^#@ZK zU*j8_mb<2wve$O;=0y`%O30JegISgF0{O_?{~2m+ z-9E+fp&xK^qc5q9-apcZ5m-1VtObNu)rqKdD zmf7S!Stmr>I_F&1vk!=|BNXIuIb*6dn-V5+c86Xz&VBIQ>TjF?eym!fWHX|zT&MKy zu=D9IL>i!q@Rdlw*?8jqEPM8kOj?QSk3AaOG9uDopK)F_O&<@!ct0okwlS#{NtM1e z){|WBy`YgVVxdma`CFpZqV@VFOt_6dRUq^|MGS*jh5`&Cy*zjM_0=!^!$AE$$@0Ew zw!WyyrF=b&>;55bF%o+uY&Q=i8%vZS=KDY!k5c<=AOaK2Z{vbuN4V z+lj14Q*hbS!A+&QYgv!$raank=5NX+`8gfvYM4A**q|OZ8#R{Z=PrTaG() zv|C**Gv`L`?&+kf`GSadi`|vy7IikI(zNI6p60HV$Tr3l_9ra*TF#zPGtd1;`c75{ zEAh#U`msdjK1Lb5=t|r)TB_JF!6ULiUwc~OGdkpMre|$oTIQJ$9Qih+%k5VYReSj0 zsHOSgj*kUPkY(uhaLYC*VIw_*ar{&Hzh?oBg9vt&Q+55ZA24(At*p7YFo!f5#7ntv z+g~uM%vjb372c@&6BiYmyIE6N?bI@ytlBs@dS~CpxG;1r+HB(ZVHxvEW*q6UN%7DC zAY}>CW1}e#XQ(B3Csb|NPw?_RYF|(2EDa5I=7KOV2owPV?8(=m?V7{b{Ad1}a@h@r zzlF!T*RjpgT)MACwEcMaucR}K4k1%LZkMGJ5%Rl|Prb(V2A6Qn3<@d^GL1=2Va~C# zTr8TN1bl_^Qn7>%-XttcEJSM*I<}>n>X)hJq$&RLB65xrF6l?VcGRw8xT4kLeL+4 z7@n_bK~pL8T!M6<spjF zX_*(wC1F6EYBYc@RIS|Imw|$TGPH`b=;TW21#zp`0+5^y8-bod=X)d$*QCNdWOl4X4SYFyr&otsGRC{hKBWsnX)=ux0BTZmcuf)g<7A8yO*#t2xk z{0ehxM{iCIQ&lTPP%pGhvfGd_%caw3WcUrRXV+*+u)7;1FsHdy;Tc-tr&$cfivWW` z2WW=JHlo*EZ8nT4X=6WRj?&sAX;00%aw;~Hb=WnykICjM8Ap@~=JX|lYz{hFuW$Z| zf82=q`<{#6lcsI$ZA;2u0J;NyD|;+QVB#bPHGRp)(fR4wy~~d#hklX4E-nW*Czh&s zCE*;GE#WyG|5O*73NHyGe8p*=j52WzctkN5LyO3uyzkE2H2qU9szc1}OhGk0k?O@q zD3SmAU~^}!s2!~Hyy!sV(vP#8lGD)G`Vr;8&p%6(htsnDj77baiE)LPM?jna{xI?B zHjMA@uf7%RjN)t-f&_`MbOl1F*OJMw!A^Y^=;%-ReV80@Xo;Aa~6SYrD+X+2K^ z?<{;&%y^sxYX4r7dO+4O4HH0UB7k`r9h!@S3aOVUvg@&WwD-J|Ie9d>QOXa4)w{jt z2~=e-#5n!q%xC#2lLaZzeo48f8kSia%tcQ8pC~KPbIy53L&{Vcp5Z? zjqCIBhdrY#Xc9yft^{Md4;i=VKA8`q!lnPOITF}-$9?#+MZHIG=s>yXjQtl#_ucu9 z_=~WMgg#L#5<<^FVClIuhsWtE&a9Z=1?~ zgY1{xkzS_)2$LLAhLytmfR71sn6|^$!%Zt#TK%*`)q!t3loywyn-b5X z`2=KVEPmBNw2p;71c+t8HR?H?c%8S!&v36WkNNu>it5~klUt8i^l{cs#D#NPwp{F4h#mCDI!UO@(d+<1ufomk3saDre3l zFPh6e)^)n~VT+E#3Jr%gQZK|BHRQ^+RuhaCsTCR|_TBS`>1Nl*Y#fX3zx?{t&#&xt zI+?cd{5)oB5#g|I#N-}>9VI!yYEQQCW4Py|LA!2mdh;`hkjKJCJ0KCFcbD(VPdbYYVdgdA z{1&+pe9Hr9!>KQ6Yci!4dag?LW?5JKF47E)1*waW&Z);@EKFP|wEp|y0uPJAhM-nb9fUv3Jjpmu0c=7g42;TCaa zuV?7KX`oOF#EPV-mqlfWb8U?ABkOjHj0-Iiy9z@&RgJxRrhFvuK(H8=J>oqw9Zrl~ z<&yt$?Rj23BKUQjnajc^Nn3n{da9ML9AijfP$sFTCy88N5E+JNut1Uh%w&bbRs0QNVw!yqkKE_kC?z>wUz~}O=W61 zCYams+);<*X7?KOMlo&F355@c(7t=fXG(0e4q7pMU;Tet6d|Pvd`772U-r$IaOM9G zi(-=!oL$iC2jYMWZ;^P_^4;@Z|M>Px#1b&vk^e^MtqG79N6)Y>D>JXA3m09F+ge^E ziu!v|WwfSS7@WW(C9~kTb|=0ovd}d8Ln4*shPO;aO#DsaJyE%t?3ICK2AVa9Mq%!K zA=)a7g+jW;6aV+mi~OK>s5PqPzehx~FB;u^RpFoWL_W+b9Lx!SsZ>mW(~9b`e0yyW zA0u+x*j0(ggC{H}CWHLih?vXzI6bK$eygC%b(k;op8Bja5l=XMU0%c(5p)e}k4clJ z`k)(EIwo+*y6V5wSIKt}+#6pQDq=}E&o?t&Lnab^X2-)QNDa4~g?H3K8N|p7Kyo}n zaun-S>;oe8C+pk7`x7;k3`Vr0G;mUQ0}wr<1d69GMiL?-cfZQ@pxEAVoCLaabv43 zy}&lTv$o59+JCwxI^R3cqSWIvjnCZM%vLy1>Dg&x9HXQ4sT|)dH8S9Xm8hQBOB81$ z4AnS|5)N_M^iclA>%SwXNEX)t=^R13Nedse9b5QeT+}uYD@B{BeR+~Le2aN*&iKrYoD*w$2|r3MWnN5+F2(G8a=)6 zCHc{9%EumfF#2fX9G^F?obAa2KG!DhH*Ss$IdNZ$1`b|xPJNh>V{AjUThRmw&7=AJ zX4`tklq2Af_`)Q-d^CJo!02B?Nwd zMlThF%5n#8El#E1(pVIXC$T=Rek@4Xp+scE{@Ot{4|P6VV>*y-xw!xOg1)r~(HNO4 z8nVr~eFGucTwT;|!Smsoat(?hinhlOA4yVF^wibS@2zQ1>0*ykI8o7UUh_G}4k5_F zR;>=c(=(0{1rA%>#aO^(26#P_CCa_0`XDngTeRKY^JpP1W#-RxhYXkZ#gK0W=%nYI z9OFMN3!{&#i5Gt<$0GO^hbdZ=+$GP+Hzi7&8m*S{x&%~QPUN!>1xzmVX5dGp zurH0ts%HWpcuLag1pS9$iaQP$AK?sEe=bkdQhuD0ePq1)ir`EygKDNiciK|UT|i~0 z7KB__>s_u0yApyfftE6?v-$~}86iJ*mJq^=8Sf{ltG%NQH^n_2Ad!lB=#v~`V8!EH z>+P7Mj!*@!h%)d1YQKSsd`u#U!3MOO>`2*O+yLpLs=)KVVEWK;S;#m_0&Z;1FDNd2u!iD5$Qd%Xg3*1z^?u2%r zJQ#!yz7K%#*+M9Mc~DN^y_}897X}fWxHP3<=_aQvmW63p!UhY_+6ziSI|us$cjS{^8O(|*vmaGc*DF_;+4US( zsW0{@kF){hx~@|-Em38W!>$b2LsTyy_M@gb&SuLdUSgHq;-g zOfHl^BvAT9EWy2B>WM^+iEnr$JKypQzxB|XV7}N|R0~mO$HHe|s!@t5lp*!cx#_-r zdcWp-?K>>muv7%qC+Bd=A?)qctWSz0RJ*$UXy<}yfgxl&ZnV>fZ7k^ak^d4$E28i* z?@^12@w+Pgj-b9ed|^C8w`eIE{vBQqGXfD7gNTYaoeye`vzsy4J}g^;((Hq(STRO?Gffzp5QFO`3_${wQ>wq=q7FGgO8_oe1tnKYB|w2`kqQ<` zTjDC_F~NQO&7cW=vKOYH&5kmGhQ=7e36ir2;lr(u;&4~Y?=8jsX$BV>yzvziT}XhK zb|EZhZ9BI*5@_lsr~yBRV#4G3+O=viVDB+73N{w_8`E4dLwL6c(ts5lmyJard|Y7w zkN%BKs7;3G!#DC0y!j~WTcI2vIIYB4f!9rAh!;vfwI4NHFKHkB?^(d>Cqwmd$y(## zouhWX#<2ev1iK`w+v^3$vGUy>SwFKel)_}UoUA|NsOh)N!K*XPEqGRWNvQGx zt1&L=D2xcb9R<&=SYo_(Sutz^k|EJfwfrmgJcJ9o_ns|9|4<8#0U~7Y8dVaYus;eY z{`&f{THOeb0Avi_VX6lUTi3h(#A~w8P!){ak+)|-b?`n9&%VZ#TgZg7z4+WJD7X;E zg4!_&iIl$RHFx}Y;~U|<(|e)3Bs`muDa5ua`|)y7M>(S-9B(?T(EPOHPvnQiQ0J_?A%p{7HRu+?FJ=f`Pwlh+ zAf-7?>wD6`3EM;2TdB^1nnElV^tTDt`{>!{nr;j}2|k>BNn~>2(D4lK!+PV%U-3jv zYves^)2PGa64NcG-gdsoN&C>P)!r+6S3c;e}xk4#QP>Zo#_AwO1FchrG@5 zI&NkoG%4|J6c`8Mn;Shdw*_^xmMzT~!+1m6f}ma15gj3n*_%N-p`&KIUzfXG=B~UC zFd1GT(6WvS7!fhdPx?e0y54>D9q2 z{_x~&3nR+LzQNS-MO%iSc^U1^h;C`7Z&_u3=iLexQ(QZPV80A|@598iqI7$`zu>m* zcJ9);ZpPU$W)EE%N5-(23zm|jf=BH$;_K3nG!)?4dCzD!#2j9+} zC!KEL5{5KNPvES5$tmw?F`Jg_{KyQj#j`zLb=9H7Vls~lR`BDr2_108eukgP>?OU& zTz{4$IC!_u7r+xELuC&so=3LOYbt8*F}Na>!|?~s(y%)$2HiQ!Lg;zISHZ~TL!lk` zB7`4ANGnuhZWmKmNJUvS(hPSJKR=Pcfq7I$XBsz=e$gM;-|>Hl+Uz@$4_)!4oo_DJ z)2nUPi_2VDd8P#e1Q-Ee7Ojrb%skf2ps23iE^u3js)*n3j&FM1fIZXKQd0?GgA}dd z!tGMqEp#2nM_~ylOd)AEHd=?0Mk=n-SF@c{4NAF_0Pjw*yfs}aF9#7pUa(yM>YxR? zlGhCv`-~9k0liDl@mvSds?jY4*+4hM0%?Lh6S(;nL-iBR$pdZPu}@PWXR-1Is|FSQ z7>1Z+81?l}1A&kP2@*3Z-51v1^(!K;gDZCc16V;Je>Ti6FEVA^~lCj`9$r81^b2KSWs!*J<~tFo?@#R z#C93mFfMzO57X^9v)FU8oiC7m;A;U1w*AKPcoWlDfh|rH6o_ftJ!|HZKA2dm!NZSv zAAd@Cff5j1t#p;67|Pt7%tA)n&tjPs?Xhrk4`(0QP%qMBp1$P5B zj@`g@hM)_1jmY59==?xMq9!tOrG5KH~l3LD#uJ? zg2bIUzvu)H?fNt_F?^%yLOECmQDk;pQ$?38W8t$D23Vrh$|KJpA@@MW--X{I<7zFr zt==efj=f(`uOK1BJtYZIRm&?_>`3J6_5UQr_6~Q-qyntLvtg<*7NBv9NtlocfYGJw zvvPL+=iiLmaoBb z7fHyd9ggI9A2(35C%smIB3GBS{aK46>M+rU=-jO+$O6zxSBfCc(^ko-oV)@|$-$y&`noI=Vo%}5)|L?f z+>Gw_34FwKXmy9i>Ap2;ea$--6`fq=)ey~7>{ebsT~fH`)k!^Vo+HJI-Ho4P>ruS+ z18u36rKH3MitFnTUR#wyrt{D9eK?f6fq%w5!nD+($)pmhfX)geFw4FV zDx=E82n8N_t_tf5A&GAAEQ0?Bb8j6J2lwv{wm8M1=-^PM6!!rJD9#jXp)F9{p*VwU zVQ{yigA^$8l;Z9(xJz+&ch`6N-2H8CHredvCcAl)`FD~@&Y5%0_oG(>pVk=}94Bvs zTHfiE7q+~8kxcEeB?+E3J#@aw)>?W`l#_75)8fdehu*5w)~UO4F6Q2SsCB=uaw+HN zO@Wfq_(LxV5x(W%#iy+1h1wj$kqpF67#VY&$(2gBuV*UTTvx6!BQSI69S{-fq&AW*nx98=7HVU`*Q1237tD2g%c_-M8qp06ya2{lcUgp1y1ndD zFyT~L9ln?LMrnR_9OeFNQp}&H`>Oe*scA_gzN--}?i@Q~QwLNYu8-a#$tdTg0U=AP z)Ea4pT>Fa$Z#RsePP=;3A+^E+XHB_m2^U@-a-SufwLkRfDWOY2U1I-9VZq&EZIvMH zO@H9zSFz5(QE_4@*EVr1WI|WLM7ed%VWCdO!b~BRWgZn_Xa0q|DltNQ3a0>2^znJj zkpca_43qoTEN33#Y)TOi+s&_)-ffcysm~l?{|Mnx{`BORVFVmG+$woGV?d(KSHM=7 ztCx%d~GeT457zv^C%j)jUz2aR&c;(%%Te6#jJKetRiCh78rGDT@S?p`YeC zqHm&`8*qVZu1ujS#esr4VTjvEMU(Fhdm1MCUq5g#5)9q;VY3?N=wFj*1c?&qZMCJ` z*~@3|TTVT{O5?qNWaBqF8O2}WYfzaoiB1su-*nr|NZ*Dka_*B zu^c!xu&z{?koEbWIH@Q>CC8ONsVtgh+))%sp>fqjq2KoG$oV7ZN2EZxq$F2gg;;hz zylLfB+|vore3!(8?Su0;ATbYIwmDg}|Ft?eo_TlSwN&fdRT)}Q`O#>Br;LL&^>-^; z)KAXhk`OSXvxAqcKif}BMLEp5$Zn#>XEGuw=#?S-2<@t5@;OX^Ys%SsJ#D48*ME1cZob3((X zKf8iBZG?ik)qMs~#{?aG5GF`Rq>`e{({Q9&WT5Yfs?Q_Nv%Rxxt*0VnU1=)vMubo>J@no- zWfYaWG4`}z;rD`RcRPEAdHNnLKCyCZ?m)Sqp>r79L}lQuZ`!kZ>@V${mZznt`i90^ z29P4vXRv9$ssCan81p;-XRL%!hRF^fe#J22(O+?A$U>3dGP5kLr6VAVFZ6_Yf;ZD% zhs-SAfKB|6T>*gH;ZpxhYfw*`a7Wmx2G}Nw?wWS(hhI_t{T5-3^NffO+fiSKofUTx zj`K)>m$X_teGl?E1G9UidDcj?e1Q^QL)PdXa&P$F2^1ylu{8R$lJA0&Rl>;K)Z5*{ zRG9OGGShcn=&=YVcKUpElWsQKK%1l@?h^u(|C}jMO%SnL#)MMtCPqsKFSArZ`$ zz9$)#3?t8|i?x$b3xP%=SfU?PW!kq*eo2F)Zy4mhLB3TGAzQ#MG4IeCxfV;DmujP@ zywRZxLNNf!!TI-2-J$7POXzzibsJrf{`TKDHq3HlP04J2)PmANQ_)+Mz&gh_KymRK zt{zthG06M zZoUMSeRS63ruodXjD2aAx(dgvK%gv@AADk+O&;JKQ(o6K1Fl4kX!PvP#K<3RE_B}+x@8anBvMa_gIGS~sU>H9$ zaJa`bM9GPcJZ_Vc#Jw2nn1a|~EU@pGf&|fUQmQY800iRnG7HXsb&lnOZ;Lm+g$Z&Ow-+Ig-3!fnjX93gBRnvPT zNnGKaeB1oThyC2Tn{kucvQN!V*>7S0!2+DTZFKv7I<%*xsm6R>o`4B5y%>0Bzf#4R z9LQmMtv-y|Exi?R-rk*ZhO4GHAoc^XaTG~^<~?xBlZtzo(fUu_d0RK-wwz9s{3(we zs+Vyqn_ps}Ki-Y^bV6#W`1=y=n=r$d{b5`hag;5+5QEJd`&+umViIkO9q7SouQ?p+ z#C7_&gfWFbu50n^1%+kVvm_IY3Gp`X*nScIbN*r1NdQeNk{BchFkiP{D*WFnY5#!@EXq%eZpxwmj@j zs``)RwYCT0CX#Wp{TA5x#B|nQBB^5=$;6YNS(cYR2eflhe4zV^tT2wVy#TR)=o8}1hA!**B$sD11{)&4Jlp)Dx3u{;AG&sTB@8Cg zs*z+i+LK@JYA+4nC@?Bbp#EFL2KajOd~$Edf=&4jx$-n-M)5=KAKxnKtS9|cfCL5e zG^Poq%oMrNfz#>!D~d`mDvsQG#m%|1mHYFN46Zakv(#ufx)rrew_OX9Usj%JQ$#k| zqdz2`ev5-eQMJ{G;QsjNSx-c_cKDC8&9_INwv_!>8_7rAHye#89w;@2zWlk!*#G5p zB5J#JL->x1T2fr@$UMNOg-|wv_p^R9uD#RdFE`zV@0GQ`+_QhSyd77VIevI8x*Q8( zQsJs}?}u?K9Q(mduDjUGncfl@fpW`M$5pq6UQNf%5M;6!>&n}%lN7_N;<_iMy3)}v ziLkl1Vsi2H{u^^4UYkUJXH){w`}0oocD304a`H^6wleTUDus0E(haQ#E;N3*f?oL? z^yaKkS38wF3jz^^33SZlwXWj(gq7~0E zdPwkHg)_aezng5D(}_I#fKemJEhL^8l)NPA8QIq!P+wev@yh-)^JYkXC-H7*7G9e! z=%n!Ut|SHJbOT&?;%UL+R8Ct!#fj=hovFZ!|+62x7Y!oPjB@xCbF^b?JAx(=`_2*+J7ImKN0B>Xof zk%RKx_JYHdGS_XvUgloSgojdoFemms{`eX>(=&4_9}1MSRjAqZgDcuyVLJ2tXziUJ z|Aw0VKnE}6ES$9>KRDmTAV%lIvywG;y!TtbMxkn!^d6kKI~*B@^6bRN)XdN|lp8dS zRK_@&WIXKfmO&tFKhTGhaFcIJzk0Qp9QY>^Z6s$MK+Lb}7Hsh=>RtK@r@hBujF;B&(n&P}B_fDjh0cIFOHpa*@C=?;x1d5bMK}uSmm;^=ZiD)roDMxKQYaDjzncoTR%teu;@7yZ`y$ z*a^=689PDJc3?&L`HhIh+=+d%;#nXsZR_lXnaFdkRLtUlYoTZUOF7KUMh@Dtpj^c4 zCSh4%qqMy7rUAnpc07}E^ta?`c21VEJY^)Z^qD<^>9-FMv)x+LF~H%abt=1cYd{*2~HqwERtGX=l80?$mNPnbUSJUR+w%6>}Rq67^UWlp! z^TI|RvlYy4_0a$c_YVZxzA595Xd|MBgbFE_B2~J}`=Nc5277EtwgUzf!RVqwFg(kh zlL%$)b2FdgPF$8VuS9ME1!2u(dMbRIoE1(bvP(28fc46!x%OVG%(C7A4B;YId_$Kr zw79X%R|{#r(ql&_IrS5M*KyS)UQW5@O2(=E=L9(vP$&CAj!i!#(%O2_dtW4x`R(b| zvrM|osOqzX$_<#M;C!q;6(n9VeO0ur@8rnBA$}5FY24^#O;#dikU1dnSTx55f#j@L zxhn?w_LAyxtT?;~9r_p;mB-W~s#arZF&*2?ExZZDV=Cuf0#l!I;UPT4U_Qvbp`x(B33Rd_wGnN?* zkgDp%Ov4l-d|L~IY?R;KU_YY9cg9C2=W4CBV{(>=t^vw5LaLM(jVJ~KDv169nDiBp zQadoNv%#vBp{~)%r1fElIy*lg!s@R|7PItoE16(IYn)l6=#o?e{1V$io9x{eLMw?C z=FU>7?eJ?jT3BJJ2S0+V_6=dm zrtii_Ce;N@{yg`E)e7%FAbh|`h-Jnx4P=Gi>hA=>Z2vjNZ2SpX6z~z&RSB?*ok}w; z-XPP{$vh#zwQJmHJ_$=rDchp(7Z4&Q&!9dVP+nNvU4|Zo66q_r-p|mPYzp3Z`VPIr zQH_x_o_d5|1!;+zah{NX&J6k;a+&S$5k4r40Ex^5Yr#% zoyl>I@4RWY>XnX6eBLEF_8GJ}U0mrIuG5&;xT*feAkPn6)VT4|xTbaZ1QhN`m#=HUEDBgK)IcW!ym1)tc>6;WoARdC%14J#hv(IxdC zi+Xl7#*1~cxRiIt*Ri3$W}8Az3cKV!XMIM#?Kn3|wi8@F(jD{Rt20+ji;imR&N^g{ z7nZ^O4Df0DVz!Lf)Fqj#Co%U!d0S4CoGOV-w2PwoXF%GmccG_g$X1s7y z=Q4T|-$WI4+Rl}J`m-c5QR$*0s>O-dIjF&FbrRqU%Lt&o8buRc&WZ~l#I#H0Xe1eHlXf4Q=g3zqJ-OC`GUookB78FLl z&vZ#dbF{h)TWd>k7x_YFCueN9+V5-FJETP+r}!xMt=5V*SwNvftFE`Cv=Qm&4UDp0&zmC zl*4uH65NgKJHkzAGk*5dOq&Q=Tvxodj-@%fip#Oo*+s^3nRMJ_^SppBlNqDvp(;CZ?9r zQ5(_{;rH)&aKH03-(cTTE4&7q9}h}n&qilv7=8MRjpPL=kO&e^JWJ(vJ2il7F<>5* z#FM(?K?DyN@$J_*P)RLM@YP@f?O-KJiZK1aab?8g@;c1~A^S9~<>+BzXM7|gjvt%V zA%toJ`@)I-^JO3EIB+qc@$>yxNVtnm$P(JIB3w>V>ummgPZ z(%`A1ZPg}5u1a67pUYVr;eja_Ks@Of5TZtqX6}vai}$Yk$O4~&*VuRxr(;%L_O((U z;(98&)Tq96@l3DRM|I2xxv3Ke!NknA&bPN=x7$RX%&&qtl=Qf9jnL)jl*pdG^{RXE zt_&mPNc5gsHYTP2&jyGS0fTEcm&z)Z-;3?sUxYDOaJ0q+AxxDxuWDO0RQ`fUQQ;Ec zUJJu4fqVX9P8gf`>Z+%}k2&AvpFuxT)62>jFNqYJPk{TIuGX^ziTl%CCMWCICnTW6 z++JSl&C~eEhgYXg$1dM$unmtH{Vwq6F2>w*xbG=#==Bv?D9O7wY+!$*p7c3lkt~9n zIDE{W`eY_ANhC_-*v7NHZ#U^~IjMZ)7x!ft@7n5B!IY(wy>PPwbW|t8Bub`uKGnRbZ>Z_e`ROTergWd_N!^(agMImmutF@T zX~(_$KwXLAd(-ECqK9JU5Go#uLjS~i%I6bW_NQV|7;U>tK}o^ci-WAIlOj6 zBN3Ja-16AW=rmu_$0a*3A6sG;*Pnu#4ad_a$u7-{s#N2=iM)9*8mbIr+?>gLOv0a? zf{$;de(?#HodQ?W2V}!s{gs+ZxqGSndNPheRDSi<@7e0;d|xn=&S9qR_;ZF8-eV$R{iQcf6Qm6{9rYLTB_7Z{99p9VVT&Wd$&C~LJ3SoeRV>Ybm>L0E%ZDr zrrJRBzg`Cy6~Q!NoWg&BR$9;=PzNt^c3F&yhd>8gX9?I$Jn5W9;OZgidM*-d&wEQ~ zoO-|9V=G1Ww|RpEU}D(LQW?AGX7x#*l6;FstGz#@A&|$5iMtH*RPIMd_2PBBR+?AG z&wvj`&#VFi`|%LM6qq7>C)|eM9KRLNYWRVU6jv1&oEk{Qm-33JA<<;*7;WAagx1(@)s)pJi^>cWs(8r57k69GVrom?kib~G+Z;exymoCz#I<8 zP0DwzO7ns_72MDPDeCuYi7DC+fJZTfyuuuK4aqlG`ggS= zo!(KAt@gy2o<;DNxG*#`TI!_f<2JKSx?~nf>u$MYK^EKA4?_Gh2f!MaXGAD1XgMXseNG1=1B^B1}b>-@%IKfU> zRh+$}O4jPvvA5D$kT+y@gvC!L9A&_9Je+Y8U2bg4)MNZLdQI3h3^^U#_%Gb!2}TfO zYHm?4ackX*vNMjOE!1f4TB-G^_Ec=u@GBbiiEptAMr{2 zhnTzK-}ig9J7^^<`~SYKt)RC-{N3fsPTN30uGN^LztByAdI}mZ{0u0+TPu{7J%>^V@z%8#TjuLCfT*mh1+l(}=}rlK|B__ojU&1QTcz6YJEBZ7z1thVQO z#+=F`&mqIKp|SzZ1|d7)SZ`f*uHPWP(|IAWU3yF zpPIjzpgyGv`0$fibS?Wa;&yf$E}JRSN&w}IKsTjY@sZ8#o)@^3)DbJ0b#5wk<0NCb zIll|{y+0d%I&=8<&Gd*37w_k$jdoAPa366Ga|_Vix=J06cEWNe&+gCbPMN!>t@Sha zVzJxhKX>hi3Xc?2yB{=OIo^Xz+ZXfqzvbJNZIze~ zDI+pZc`k{by9fe~`YUFr4LBr_{6#zF{q4|Oy;A^E)*3Gw#4!AtJ*6!7UJw|YvL(IaTWR9x8p#dD z{Ys`Pz9tjW(qa2R*%5;(2be1T6enlROVP!r?*W|jC&2_%8j_uI(;FR0_;j!B8`73_4+aNt{ns07VoITGbRUvYdV*Mg*aS1F;`IG zZBe8*qae0R00X(y5l-lLw0?40%d%ENEom)UH)brGHs)ssjFC4Y^jcbAo&udaVhg~0 zZ{dF;DE$)O%kesT--wdL%l*k*A&ue;R~d&_d!!Kq|e$S;5r88$2{ z@)TQ{0mJ09%b~40>dIYD7-!Dh8r)C?``*#&dz>WUdpnG*2t#IIB0FDJBp$ZTu1PPA zHr(YJ{5eKbwy%{#6RTjDEfp`$S_CHqyK}`#(=EPj;|cDphZ1`4-=>!nHg%H5qh?|( z6Ing9xMC1_7ByCLuZ|vXD9<)iFyl$n*t;Zjodrwwzg{TmpJxe9#!U3D-ti+P=>~Nm z6h0qe%DB*Vv=9K}C-e;y9PbX#0Ryw{7Zb$oVuE@+R}Yd>!8@xCYK$+{{HTGz)e6d*wj|Tp)RpcobmZ4 zwc{!MzzXg0FI{1-*KI|plU*S4Ztnp_o$XJ*r;*O>aJkI)DR>wNVYd2k#ohbi6mB7Jw= zIb$x1Cl(WXT_QeeX(oph|1#iDQxvQC(Eg4DKoeVc>-cQgx?M_TWd;JCTA7Km2H}ex z=dZ{aqDb`9t&m(lJrMZvUH#EUq{Htn{GoQjJAsQDM=M$QJewP=(mRDx`RLVjHltP> z{W1YXRVAHNRJ|vvPAKMMaqRu)iEk~i#~Mb*>Q~_IF@e1rle9pKI5!o7$pP0)mtUVT zzcYeW&pIO<2tTT6N@oJ2dhkP#rO#JrKXNkH?Q(A1wv{|u?UUzfFmh%r05&YqEzC}v zbx>atgk=Pi(Y}H-XxwXgD6;nmwEp1uN3ZViSIg+|P;kA9q(}BjY0wo{Rfq5KOrqlJ%$D!rAr03$E;;yUU@NKKOhRw=0q zy#$p#O^2*w`%z~vWo#g%e7wVWA|~J3ciQ4FV{jg*ClqiqaFO)8cCQoSJsZPBPbd`8 ze67GvZF$ZW;G1`4~kAikH0Zt0|J)~Kio ze%Vrg=&}^QC5h|EjVP{eBa{DP`SJfvyi)(e4-rJvSQJ6f>6C15Wzf)!!rdcag$S5K0J{5?6%2k+hlF@@5LVIGcw?k60>_ zpz|tIL`41#vhuZqB0 zk%ml3LQ5EiO{~K%R^dkS#cpkwn?YH6k2*_$lZ4wJ<)?o#Q2)yJsLnn3{b%UtVa$afg^Ec zxg`sA_t!`>448~F!ZwbVr&KpN@;6uuTxWbay)sCqBf#UvLcX+Zoy|k#3+?Y=A6OaXfh6c8w=ygDa|L}nyIaOCv|3rH(;xLxEL&h~BM@-4 z=B2jQ&3ZfnyW6OHuD3IBkhv*lLz&zqt%NX7%DXNFP1bk>unXCH{W=1Kl$Q^`pKl+x z2?~$2Rin|dMB>C1ux+jyZliu(8}fg4sby`z?!eCeE@OX{05>POBIV(XG?di1*bT{9 z(dro8BekcNeZ^&jhDpf<~%HRL1h6S<)>Gt&fxAcy% zoVmMzU^@)A(bj%+@Z;6|)QhFM=WBpoJ$L)K(9)z|UW}Y3-m7_OEip2uE4gQHOuSA! zw6lF@kO4@*r@sycn$k=UQDbEuNuvep#yEZD(7jd6m=Ggu;0^1qumLHJR}w zG1z>*ew+71b0wY;^w48=q=i{y{!#^{^P{F1)hf9TX^7HUi{n4B`G=@f!5A2e>P z?ptm(o-mJF`b0n8{qntN$(+`Is9|Jjo_^x=y;yo|f6RQ+UQMozEIAmyXYxi7XB1ao z1;?)tou-hhdc~N_Z^5??$b9X3FbkW0WZp+#(GRag-je_ljDf-m3F(Gu*Abam$g~gT zA*N!v26&jorQdqgcK$=@`1QF2t1zEVH1)76Rhku3o?RrUtIBWFUGY#smDB2oJmxGV z7$4C%6D+pxJ11t>)!oy=)GV7^M`=={&tQ19HLdkGUV}MyuPx1oG0&)N|17FvE35?B z2QJ^R!?Y-z;%I&Qz*63TSN8o0k-x>3`7lCWPktgiDXKI3g|4oGKp>lkN7z!>I%Z$e zm?{8rzX3PF%QQnEXWg~z3!E)t&DXB7PE_6Rtp#bZxfGOqqV0<1c8z>CJz(cF$R*Z! zcOn)?-L}`ED>AgYexL4rRc^ah)r~_8;5?ka(^~0T&%TQ;iPH62BU&Uxk{gR6XbH^* z|9i3;G;Jd1du}xYf-jB9wOKQC0Are7W zn&+KN5rXm}5=I6_AMlL^aA{x1_%lozPtw0)t)N^A)J&D(_uUWqu}o0T4J_mb@CB)r zfnXqJUXny6+*fZG`G=663Ive*>HewN&Su>9%<0zEdb1&>OE@tgf%&VZ|J7ULPi>ab zm8DHn40)9@o^7pR83FgG{eGSafrTaE=zHg~!043Q@y_Vp3%eqI8>qoSJCio*pJ-;A z3T|Pl+Rygd6zd-qZrTig$Dk5)gUE_r`B%~7rC|3zH}48->pG`iD&0WR!rv1HJ)&{+bZYeD% z#M2PPQ2fL=SLyJ&`&tn=u`J+lizMHTt5A@QV-l!uie!$a0vFuws1 zy6^fQHr+g8(-wt&SnOXq+^)99e5V z3Jjm;RHlYLkw_Nh&GP?C%>_8PDV9O_g|8hB{Or#hP}`B8f4-=Y+{Kpg z#|*@CGNXh{l0sRk&R5cUaHP9eBl95b()(bhb5DEmO%5}OuRCMF&g$)&^4YiKPQz=0b_+6b+c5`xo8XuOK>&%4IzO? zN`8aaXpvn($cMh$WPRaSVWu8APXWjUNvfGwj%Dpq)Nv8Xc?Bk~U8cACp|;tc8){^K z+75th$rrXYz3$iqJ8!tkBH}-#$d4w`dP}DXva4S~n@M!?P%H!tMG4)jGa;+Qk4C}N zWdfnRmhH^{JpHkLmuasXB-J$0fm^6iEY?#=w_^`WzDtjSfkMj+)8;iG>`!PtnK~Hg(dzqvH3~C6LVcP#0KIdp2X`l*+x9L7*a*en4sO zbS!$6+Ee=c6%zEE>Hp%}jTd(op~siMidC$oFwAO zOf6Nz%(TkFterVkFo-k8ZSY`NjmsgE=u5BoNA;!JNaEJxA{W7~K;Tj|jG3}xw2tiS zWMI>=u&9W_Uh=xR%W&OS%ukT@ZqNw>PU3YOQO*mq-2|=Pi5poPKZ_bp@Wb6KC1L)k^NkeS0I;yc(oFA$Bhcs>j2d3F~mjw{~FT z1|2x6aZl9@^E+QNsFb~`WLYYBoL*z5;4Qn>Z1O4P*?z5-u3u zCyiC$b9cIzBx6CQ@oZaDRWmxSlNaY{U65{}KjT6z>Xlj~`8bQIO4K(il>FQGtz!GL z6b4~F`T-N0+b|5dZX$j56e=m0p^_I9p)sI49sPMx+p1j=mba`{OCf{C1$q);G+~#k zwMf0y7};F%^1lTBOmb@((kt9X_QMzG6(3fxLKnZ?Fa(c1X_zt zGKCwxQSxC5VKP8DS^*1R~{$C_On@^&__H{SVUYQYj#!gwCTZ^rL5{Chg{cz>!FU;gDLu`ejRo*YzuL!JD zTScc`?u~P{Mq5U5t8b!YcPB|w5tWicqN)BI(}ZjoatHk-N z)x(^ARG-IlU+F3KZFFBb4mi8LpyPLxhS*>U(>eMH&&UsQIHe7GaK0zDiwVUsQs-t z7WNQf7}J3Zv80I67?@l#1Xh1ui_FOh`eZlLnGxF^;fi8TFc$YDduXp5+}< z1lH`3dISb9dc-`-+--BG;jO=D5gh;gxGQ^kUVGjdi`6i^?|)7E2|KR9{ErZGk>JCi zXMZ8JF0*zf%C{VG2ehS^59twmnl}ws_V=QPk9XE`(_gw4nK=l8!S|sOOuceSdbPYt z?#HYeycWAs>kK+c3T#dxLr47Ou6Tn5bEU znd>)~w^7@ZXeW9d?%67bHWALN9}A7G2tb}H`eEclf3(Fnr9>FT+7&Nc=KcW>$i-?9az+82M@B5&O2s)C=_Y>GO*@yN`uv-kDsxj}@+4w)$- z^|-w@Q?=y5GjP5i1Xt7(^BJ+ztMKp1=5-4^iGc}$paJmZjDQ|f3wYkuh#7Be3;pJ; z>eVGDq4C%iVqSiN_Hj^$^FWS~uf(l=CR1-$$o>*ID)vWZ$hjhTOA;A}_=q~}MoX3l zsH?d$Sb;o19)%0c9^)Ovgl>@;U1`1}a(f9E@lVFQLq{$rG zeXruM)Yvlr-j;fI-ii*TJmlBi0)5X_0_aAlMIK>0Z*KMDmX%#lUE+?#s38eC9mJ)tRR@W$C9Th4)IWt~Yg55osTQ z+Zy#5%5qIaD*kvka_*h zSYTKe*V)J~mknI=6i{tm)pSgt`q|%_5Oics$PoJ89F(!+&3UMrD*I>6odI}KHPRu4jj497-ktwH@b)ZmX3KK|QFR!U}a z*81w`TSHI{wL?e?e;iA5%&rVAM(zJ!VO$c(Oh@DacLM75w2mXyFOW#g61reDT=~f> z?mNb{b#VH@cw>Vv)d9o+`VzNh5k%LO);>4F*G6Lv@O|I*B;jcn!=e~RZ5}pF9BBhv zAHaS~ysnG2=xvYTh{xHnMg9Rw5Iqo5#8_Hz_?VGj7#dcPoGM$pwddbb98_z7VUWPg zB@DL={bjKcTs+px;UVHgSb=vWH{Jeo(iBn{8vd9~rWYXr=QEBC`@Adox?hjiY^^HS zD9%2f(B*yYc_aIz^H|9q*Ban@>gj{uENlWk&y)?K$iC3P+sT`JpTsi8flu`o)WVQ`;O&=st;F1}s7Mcl8 zjCkzD@%jat$s!^js9v&(h**9w=)u3*goShnPB+W&s|5t{NG= zUau*`FOvA-`hfREClRm5BYO5$Zi$Ea9`#MVsVGYdU97|hDo)*k&vx*SQ1@ru%uApq z^%IwA{O{iK{ety1KJuS_rH2wdSMGc16BNN*sH3y7IIk8g;4D!$pNSPe2=+2#OF9Xq zu-+U%dtJQ4f!;}~#EK;=#L(Vn+EDjE!;1Au@QjkZe1+?^7IFDvHh(=@>NQ7%Ii_-& zZtavujDBV#9pRMd`lk+`oMW%we`?yuj41*Q8>tW1y@qyOO)RU(aT&_-udC%N z+4PieKB`lByKNpD{38@GfDyRNycF%U!`zrFep;QvZ};83uE;=w%r5Ip&|`J^$R-yP zJ#hlcFgqIa%!Ss(Ry=STPm!{h}t?R*l&Y=R#Mo!!N@>{owRFZ zz!G=lBefn3*?Q2m)nB(~t{f&mgg89uiWAFA@ctkoQuW8WCnDjZgz>iIB-k7EVd>en z*yfNu2|@Oi2$1oJgNZ9Ko~PI|8Gd^l16E=R82#?jyEy|o-Op9^mmL`Zzgz1)QqdqV z<%qa%jsD<1iP5q>9-=nb={ED}M*C-x1e0ea4T){zs%6yKGzI4e+utEPuP=q)&xJE# z#S&{xyybqO@cY8(_J?`EnZO41u4^>8j2g%?@fCVux|RQeb_$=(y6g9N<3+fDiDiuS z`I)t3;uu@vTORDTtYpc_QSAOMcsl5AlaCqsYBaBAH|}rqA$tKVPe?s3oc2tZq!?T4 zxdKGRz9cZ2Du1m@BuudM8Ei6YU#7@=%OY)HARAtCQbndh^8`EMnyE23lE1_ng9YJ= zm?t1g>+nd+g%)C&Go=2%AIx}!n zA)@uDlZC7{^U=z<@E?zFkL5#CS6Pbe;bApbE)4_IU}LQbxzQLO-bcx&^;nJ_hqABg zr2Oi}7$(Yue|1i94H0~tkhWDQiK6(@m$0C!baV_T|MoRC<_BM&FL@Ny)#QOZ11j?n zVm)??cfz{~wv@+}rvk7kWTP_Va$Hi!kR#N63@KR1%!b-CdGN{jJfi4h9ZoD;nFM;v zaAb2Cal$4z*Kyg6CSG=#3F{B0F-c0>e{ZC(I;{bHUx+0;a{Fhr?X3>L{kg%33#*00pc%2-3A6pii@*O)OqtJOsVb9G zM0}+jC^1{%IZBCI^|gQYL|w%MLpm^gaaW?vbI^dfHLp2mdjYbO;ACcn2--Go#dKJF zXuky?E(t4$360ZKs-7W&0iOu#4YrP*G?ng~FgEe!Ug?nY=jZ-HQoB=(14YMpKhluD zA_dprvAQZpQFX!5M{)8WvqkRsuYT2GH&?4H1O4Xyv)S9SoP`z@ixcR?W3D5T=%t>&b$PW??x;u7Ikd4u+uR&OX%I^ zk80(}7<5yN-+JMx*#Yrtz*@%9!^A3GvsRqiY!#9;8rA ztO<9NGtd3~$Rt1Ok0(idxu_5pL!`2XZk9vJ0e>~nW<@V}>PeTlNZUbeUK&Jmb*<2JDzzHR?K>K_p5 zW=duXSI9`M6{I34WHFc=vU~kWn^$6t%>&xMKl5e8U$LJo=XK6t0;SPU7NPHxsLcoIG>xekBCfNOVRyK^RYHsQbg zU(CJbUz88j#;GC<-QC^YjYF3ppuo@#3P>s4LpMVs%}6Lnr-U@a07HqCzw?A%7r4lk^0w@r>BFVYahnsCy$XNr>e7?AqL7tnNSj2 zOgFTiQM>tNb)p(P0?q240?sq=IIXFoHtvO|BUWS1dB+dO+~rEd6Go`rhAr>J`VddU zdP{ZQN^{3CKaZI=MmQE%1n!I(VbqKUwm7I=XPd^U=k8~6~#uh z(%M>rR*mSFErB^0Q$Vr_$Kpm@DmnSno{!=ag2}b4AYy+8TC8+!R#IjhY)~gIFFC3- zxEy=G9>uWo$Kl4to+xucJpCLMY`+bDoDT*Do1Yr4zUp9lVubu56mS!oa992~*l%U7 zR!*b)v;9Oj(TI`ii(2XU7f76h?3L_AIwVB7*=7UR-w}FcWLG2U1abLx($lP}%CVIO zz8Dx>c=JsPJ3;e;@q;HW?%vu{!S$3#x#knjGz~%daPXK3L#J$$GVaTasw71zUK}0e z5@D8Gqa=bHf=u9vj2qJ(p=0oR`CZP#y2k#|u(;40yB0!YnANuXxA`+9>V$9h=E(_J z<0G{y^VGjPOx@!_ zx!Xw*;ZnH|{;NT&L7}v`hhZE|t34&VCrr5cV9eX%$mgYRe?$U z79;r(PvH!#0k3dd@#xY$wx+z>q)9uH^v&Kv-AYDof?B*> z;%1j836u5@@NOG{t9^|@Y*dXd}by9E^V)Lp4vo7)zv5(V-*fMpin?a9@HvKav+cW-bcz=84WHehdn-I1a02Qoq&xfNQ31fLrxR4!yZQJyHPrJU-)apQnz_&Z z-&w$wYs$}@fYFA@08R7$Fm`5ys?g`zO)AM@&<~3K07m(CL;r|!F>0=50Mm=q3qTl` zZgB)huyx@2J+s0T!4cSGw#Y`t*e8@gZ~g61u=bw6+)bOW84d(DFRf?YnO{|>E$J~nYC)Riy z0t9r*-PdDIB!u>zOP(lP5T^ZnXH`sqa`IB5%%J+07w&PjtY3X?8 zFOj^Z^*vEvEh5r*&!Fj+6bXC{OTyxNnG*GCjh;2=dbl7f`yk0z^?X^Xh77nJvwTV6 zZwC%QVIJ=I#Gw=Q$9J|iDbY`aQa9(VkFSz&5?kUhbWP-ZXGr>9^A(DKDUIJ5cImjW5k`X2pJbgk{e%nP@OZ1 zsT?U@;#s~E{>oeox)1%kk}<>9+`*er6oL0i51+cIn2mTq?S+X=zH0>+m0g6^Cb@#I zp%8Ulx_$j$!avM_2x7`l)0Wc=k9bH`V?R}w-QFd(FQD~I^6EB2V`r^2eb}q`6#9WQ z1Df#!2UGF77@JS;zvh39Y_4M74CL$ z)4!iBs|qv1jLHR?KwHjmF6NNv&xFG zzDLig0O4B)m$+U-@YqTFF}#iS&x?5VH$BTlxJzoILlqvPEko`?g2h5$*Qk!O+e;RH zZxKTyfiP|@&UDrA6MqJ3>s0)1?*3AMR(W!&$ex5bA+v+hR&rSILR3zu8?U4%?qfM? zs(>dEaM6Ug@w;8@aYPyk#}C%b_{nOsORGm&3Lc|9NF4Iv%TrO7S>u6e(fpeJ-lb|P zl$~Ecin+6hv@(suw%IdByI*Zo^{Rcq{@rZs)N$f6XJYWFP1z2^o5`_*>}4yvQY{+; zo~+IAcy`@qn>9NhM6@pLnls?dw`kl{*CTp~HX4;-&1uWN2JBIV#YjkPd^&3%^*=%> z1)T-1gE+mQ6PV6BGrh)r8ah__l9TdaCAZ*W`w-0cf5bKWzS2On+!Y~Tv4{teQ>sr1 zQh=mZYL0Hfpo(ib{$-}~zddwm9KMA`ZNBD{$bLwU&MwQp7jCTWjFeo%;~o0eJQ2sr z+Cb>+hzQYSC@;=S-CdZj{qa3+4P~akAWz7zxmu+9uQT;5dFL}#r#<%%YtJ5!O|3p8 z+7L?9LpY)Zf5^c^ETrUEPT3~n4#rC(09bRHi* zFK|{wHJLw7G7N^xpHUjn7D(OG*=*ugZuKEK->Lf2ud$SKG;McE`Ym&pZzye>Zg*u2 zn%W^`E<3%KbsGHq#R$FVGoeI0CNE26UrBlyAdX;g4&FRFMvN%R;lgws>1_@vOIy*~tf%qq%72dq;eSQ!@KI%H1qFZ!T)z33Z#M zacCXR6)yl(9vZ!g&GyDoOMcBP^_}kzb!q;cSL}<_+j9#+!M2+z|ngzaDS6 zE{bBSj0@~a8P-+S-Uu#35_*0G$j!$#q0X&lYpZDYyc`P~^`$c2$5Q1hnSPXFCg#0A z3wdyS_^WWg(QwXl7yp29+WmY&CTANQ@MW9t>Xyw{(I75)5$?EFxn`KPox_YcouLj& zA5^NWu9t6u#0fQlr!0itjwnYogkB2VZTc{G16+ZfF)aJ@Lf@%#O#0I9mn1$d0z8i? zy_rH(hXRhb-y;DRV5LvGvbZCk*r^ipzkpB1N-lNc(iGLoPb)vlYmU?3$f+hC;i)>5 zD!LPoXMc1#`9iCNQ5d#ag#&9(WD$-&dN^V4OBk2mlu#bXXSdr)I9-X{aCy4k#jE{2 z3$L``j5XKPjSw^@w+y>rAk49+%4;b#@UboF+hV)^HD2gWU6vbpB$RReOK9{aWoyYN z2-k0xa|7(y@5@xq3mA$>eu<~`rIVT1US3tT9;ltb!J#$e1mx_htqQUE5UW=j?fP=$ z*KCi>HhSpYm}l75(Ga zZEz;_fLuAP|8~Y!iY<(+td*6sgo8FmB8OAz-$RO8!xhjoTby+|vt!jQUrC(jzo99Z z|IaR*Reo0+o53P4mGj&A)1m*wm@7}#VSLSfvtV_HHT&!j^qQ34X8Oz84KLq{DP>N& zF`1q2|wHzWYZWO%hFsD}J}R4KeccjTmfxAn%mpVvegFjGK;2RVmdi4*m9%bi5U(H&edh z1xqkClPrbF`iPGycko`7X7PoBg%>cdWwJ)n{%=kLI+=X2zCDopm0>j3BycXrhLwoJKVe$QkD z1ey5XHJoqLNFUqodek+X8h`gc*NRRw8FGcUcQt5ZQQ)d_!76{}Su02!BMu=VE z2%rzn8lVbI%M{>b_=`h{dKv%+LNV|4=G&l$afwsMD8@}d89;1S(1Br=wj-+i-BMPj z7_XIG4_bd}(1t=P``dQ*;EH<7OU;5adS8P6HGoBP*r=n9+ilbai3cHg#);I@Pu5&B z`Hsp)3rA23)Jsp;sD|lGf9=R9oD!UoF%n1b zES;IQtp-@YGdf~YS2UccBj;RzsnzL>zv;7qiCC89{)s0YP~>CTLEsq`cLJ;*>IpA( z_N$KrEUuI|hFYqxTu(Ll?#QCO-POI5xZZILKKAokR=eaFZ<6by880~)E!%5jq)Fy* z*f<{>JZDShPUwBEcNg6@yWcJQZHgMeeCfioXHs3^fiE`?ste_=*GoLYXOr@x79wfeFK{ZCP64m$5I2(y zgoB9+N88}#$`zsQIB)mi9wje%GEfN^!I-;6tNT_zmilW?utobc&vKQF)5N{v9A)irT+m>)jl!bIUbUrifpB$Wzx5q!r>d^ zWVS>9C~cQEDUce6CgZl%?*z;AJ*P4)e#Gy*kcs1=RsTK0+YGTo=OY{Vyj}WJjK+noaY8#U`#!;7 zk#nt-ooqmb$B(7xn8O6$`Z1x>SEj3|A-l5F;HC9ACpX2{R|CjcOeyVC3S~|dK9-v( zIa7cVhv$h}5|#MZbe%UejjdI*YW~TYq8B|#JgmR{9NLHE9T`#YH(xhgDCf@4GFKJ# z3y^>A8K!IGB#94I;!QO*nm%g|11ppg^7#5&f!0T>Y!BG~(L@p$^_|K1%K9fIb? zQMDuhYPa=-E_WB%Z;m|ROD{pZ3WWkzu1k0qA*iS7+1aWh(CU|7ABiepnj7(YFCKM0 zGr`EDzCJpLd4!q3ZGwdpi;yhb45czMjSYz#tJ&600A`-S$L85f5LZ8RtlW9STw}vY z{i)#fg5S%y5}^58)I4M z@5VorW|)o-2`?Ew?L0RhldfAyTxI7s3;z~}&VH{PO+sOEAtKb6O<4jr$a+gB`lY6% z$!@+TrouNzm{lb6Eo(^0fc`njmvK8TmF5@59aZ-+=tmR8Y~K}@Z&b5gVyeQs%;uFd zy-@}39C7>k;UW-C{7Oe_iwY)pzJB1XZ(q*`;~tK~o6xiggMb=hN~&>Q<24*fs?5iL zN{ez5=SM;|G-_2ab(^_3D4hFTH%RQknQXl;TQN0^?KJ+Oz9&LelxJA^^h04m)0XOE zY{%`oXr_zW!cNJ_9E{CT*Ns%8wN;%e?!4bY{r{V1=k|#I+vHF?0n{!H(Rbz9V z`)Vswx~lRHw)v=>?XtBdV%nCV+ixY}$o|UXwHp`b4=YU|XFC>=A^+mo;gLG9qCN*< zm5LVvgh5g+$iGgqP4v52%gQ({9Q1b1Dp-Axxqi1BfOdHG(h8#n5c)RskI>h0@Bi$& z#mL<7)NrD3fiUAPqMh%_C^u~iuo|hhMVoW}F0jDwd@ZLB47x=djI!^$Dm_q4N=TIM zoY;Det5z~`-)pcqTrw;1;=D+;m)ODcmaWYfQ%LwObz{AO150<4B+1bsFaa4`mT$$7 z`l2+t-%!>M|5{83fpYgifCKP0OGHqtk%9bgN>zpeDcS5jJeCF^lcYwn`L;w-N-83( z_-YGDqh_1j0V>;OQLlFUs+*ugU{;cMwXN()aVJBM|J7QI){BjOtV*1@M66i3EchNXv4rQWPMA+uFMWBzMWE2Bku zZY_$XR$3Z&bh7Lx;;Z?5_Wb1lYV!^5V8ulE?Te=N`$sRF&mO;EmCQ}!^>iw0 zHq5Lk`fo=x@Ar)VAoEvdl8u?KyAkb>CF!Byw@MqxmXsdV-i9YNn-?z(4HMY0wGVP-lC7={Jxjn0Rp z#W5~gC9?Y?QRalH3tJh($?VfSesoUdGW(@RG542G^5I zqy`}5PGI(A2>W$j_`e?Vwx!HTzIk61nfKR?tk8#lLEDDs><=``@GUX zwQs1PZ?scGQijHeNYAv)Ze^C^Rh)HpZ@JV5h*2jtiR~UQ6XJSYZJuuTEOMJxPr>@I zs*A+}fH7y!%up?O%c2&=M=~?+HjfC zU>W!l6cc&|u}K!rSGOx253c;x_vp-J34v=IiL8ej8S! z%N2!_mES2U1;0~7FrBa~w*89d2vhqgcSBY&rodQV|A;27a>TrIJW(_-I&(u32bX-d zMQdL_IyF#jvC_6*2c#9hw#5vQrD2m~>QwQV)LG`NM>V@Zn{&)4&>n4`wwdY|>umKN zDkgU>k|{iET#uMnZ!}i@X{L7c^~_G5>(VPi35qB>i1fS3tsNrWF#l=;DN;sZ4AC=DKR*PKf6=ozD857`9{9@bjfuLK7z^S*cQmoW3s=%>+X=>|%{0T6w>u zEb1b61<3!@LD|kqfzGz~kWSkm6*#1W*K|ZQhN${J327j~#*^im(|^gRl_uqc%>l8| z)7H^zvzhZPEACz=xWm|*H3pitzk#fcbT|Bc`J;{3S@oFluSBOjTvo!i)^i@n^Gg=f zx&wJ{0^{X`KojSm9#>w*Slh4FyTk*!v*lcIAV6bsiZqx>I6pB3n||lN%|;~#GhqeA zGdzMZzja_amXi35zMhH(T)60%F`_tT&dmvrfPM$aRRYptp5_U3?P$#xW+Q=SDrbj0 zbBaCEWmONg*J%EKKfenp5_Ht-4LX?|l_3hnCtWigoiz5i3~Z1A;hZF{}^&D>PhbNbuO@du%A}R>shg*_A@SrtW`?eG5F>%EOQmI42-8C_R35mP3CX zjwk}3huo{ruO*o9rU>Xv11S1p54;#j8~*k97|1%oSG?-(Lm7Mv!`_px#xhw5 zb}4sMm!`2)I^P8DUJP?hg;SeeB|udY7**tr6yULqjyE+YfMB$z?U1K<&!^V!;HAcz zD}u@^fdaq)&;gr3u^&y&HxDr^%P1Ybbi~{xFQUTLEdafsts*GQHp$F9%ah%?`*r`z zhjgBy4=mdWV35{VQ)3_MTR`(fcdTrw@OP3kK2oY?!C*M|?+;+^9GTy)+c+>6NcJ07 z(g5d$H3|4##$v<;C(uTaK8FOC^Z-duzI9txDx?RIT7GhGoss(hdr83R$?i{gQZT$N zGtAIUviRkJz8_dfL7yn+G(a_%C3~@UbMI8eB~bGDh-T}oxVYlsX53P+5Zv_p7r>*R z!R|@TYnLd=XWVaN=4PwHQT|o9+HJ;r7@=CBET(phyP2=L7Jrf#Bf1 z$sHe7LAo`LDb9dxQUY><0*ffpktEibkub0tkq?|I>Yk@HsV-zQsLX z_EPKd%e)m#J#{Y@@;^G$?tcn5hJ*de1h3}98IUKIbGJ7M^$ZC7FUQ)}TOj}AyX@^< zqI^t;AfeAmBC9_W=qoGx_L9oexu zM3An5D(6&|pq_so-}{7w+$_Dna`1jBGHPXVW=ZUw8Uuklq)cuYy*^Wu6MVqJ1n;Hw zd1Oqx+IB#>4*U(+G0-ujIsU0DoTHd}r%mu7pj%K1NV0V()$o1j{J_Gi(Sy;-`u*%0 zmYUNMPUX9&mes6+zhC49V#;OJ`R=wpag>qMk4oik;1t~ZumtpfS$1*d-73D(a=gvr}4HqC3{&L3x(2oeeBG50YED~yD%*88KUg^OcxrVtTo zx&pmYc5p7xl_pLl%D6xJe12$uTy*7+1-2|UaG2_VVpInkfauW8!o*jdSQX|Hxy|ndT9<9m+mSmg1 zD;1q4*V6hB#Px+;$d`MT_4h%gU!}T@-4v&W5L|og82i&(DxS(R>Xa*A(~JP68u_WO zJc$oXdQ?Tjx!*dMx(c7;v=wqTw``LUWfW+y&uU$Fu;zF$`}q+OC1YZ+E33Ae*qB6_ zV2@l}D{}hz_N^(W6hSXD#47&mlg9hbZRkF&DeR;ETu--R4`OxQPa%&#w{kXubJM(Z zU5SK>9etfF0vmCCrs*LD#rB>Y?(7nhNwP8C^B9~n0E(} zEniLD{q9>0XJXeR&DTj?i&4@C6mFSAH%*h^@=3$x!)Cpi`y>*p=$_2n)d5y8+Uz-R z81jk@%~I-vsMdm$OeGSyv(+S;%-+Yw#=!7-QyHzIyx@o*NnV!a819= z3uf@2mtg^UQ))}-%lw}}g8C^Ep6OdpFT@kF_d}m-@43T#`7*=i} z@9Zvz@ZbH5E=TEcY?dlkS|S3m<-ZrN4?U5^Wi8xD5S2W$Y7g#bN1xyFS3Lql&bvFV^PU^K@@+FZL7uQWlEXfEfU3NUcXJ<+#5K*O!k{p8B4f1q)} ztBAH1Uo7>2?9Hz~NJ`9a?$l3yFH74(UXFS}f&=2lhj>i98NyUO7`M zUyy3+QO}EHv%{k6hmoTgPQ%6Qf=$2HpD|I4BD13;IYh<-4x`49+B|F)(?)_lM#p}@ zVcz9jzmPFYI2q9(u0V0czAtL&!B0^-?V#(n?4D1k3zQ%N?me?`!5z2C$u z+#s^K9cI}#+{fZlB?3I__qqW>4(GKe(Mu`IH%osh5I)HB-)_Uy?NBT#>C$_jHOZg4 z_vaXrz5lstbKDm+`nKu^7IwR8dG?YT>u8GVQXv@s%{Z;LbtUoi|9&Tu6gW%c_+E>^ zD@1p@CcV9{g~pu6og)COoJ~}_jLuW%Q*f@oseyZ@3Vx}}G-1J~HI!=1-@BO-OD|+W z519?bok2amBy(ru+Ckln|3i}D>Ts*8>a|T!5xX&`?ik{U1nkh-v8XAXM)cfv=})z`u8 zk}MTO@~(&7FzFg;XIL}Yv=5YMsWxjC(9xt1#?kg}ooSgqExJ(Fg6FFL)nBgSW4Fw! z3d($jx}ktH3?3HO=inJin`t)wRh!+&niC5QXN6tvWVQ?BF$wUXvn=Shr5(IU(P3XF zGphAu=epEZ;i|0QL{$nW$cPM^TKcC)iD$fhqb|pPuC=Z)JimJ;0lyFTGe#RU>LPDK z1#;#`Gxb?!KH&i(GKa8$6x3{ma;7E%P6aFt_%kF#1Nv<}$pmX_LBKS`*+Ah%uEJ~FenxZ<2ih>G#cs8c*ZxkQPKfb4Wpwj(Oz2eRm5~X7yimrNx&rRGR zN#Zq7a##}A5JeiNWAongF&15uUcM)DQ@4@VgB2W2jzc~l+f4S+&8&!xB29aon9mJA zCJ&gZ*X1F_W=${pH;Z(A1_=W$jurzOUN%mkWE;Mo7kiYaIVH2t?4ZI^%TuK#YDL83 zh`>KCM4V^oRl_u`6hsGUV9^mAtDs{yYX-FW&^$oc5S|k*?y!gb++Z6B6_L(`v7WK; z>tZ>WG8+>UYQN$0dwP?Zeo6iZqPlDN!l3iN=59zUIl)JbEz2RW3D`t?;2{ zsWcX@jNv3jB{J6&VM7`^AF5Ewb@VNqBLv93d6c3UCGzzV6>#JlxsO@8+|qArop^JR zs6`!wDnS0=H{dFz2pi;G$iI5m-9gXToIh{FwKxJA4+a9iN2&z2==XrVvfqJi_0 z4Q%G47k}C9wcGn01d}hV)V##gIMg=fXz7!a_gv(P^Ap4}d9^|q-^wYBBC1rQi4FPF zf(D$h^zNdTx#w^{1(IhC=ppTL#0_yc$e(gXRvEOVrGqxAHpmnK)4u=QLa*SgYm0A(878{h{yXg`#-) zxB8B0m#;_W2}NoVU4VU4#~`AR041INDrB$MC$!wUABnvnk{CdIIJ5OjcEN}Sp8Mf) zbd`8C**I4J+L~jFY!#`inro%*u#mAQjAzNedpdJWPlpegF}6WuR|J5lB?VzQUmc8w z>rjHNHru+}s^fdBG-DqoDN`o<*P7A#G81Ppv?*$TL0=QifD z^LPEe>=kFP8$=iPtqQ>hR&4OqA+qfS;CN37xG(Zb7Bp0&Daj^1x}fIIOe-oIcaT$q zel%c!Q@-M%+DRl-j=wF~AQ_Nx)K^Gb1(2Pi5J|t-^!55Sm6ymZM=9<7gf?{@Tb@~w zML(tsbxRIh2QSY^;wS;8CqM5{6i7MykJHSeb=zJkp)r^;ye&kBG933vymC(h1la$j zJCjqEX$63zJ>8NIRBDxB;K>1p8(E5V;0TbJYZ=S?{b9fD2hkD#>~@BDf^qNAzOTp$ zW)d`s7c450S7eYy?pbExR;=OwSm)t;=lgddXl*UBGSaECh?fM~7*{5`OHHz0{7Ac) zYzl_{IPxG!5canQx(y8q8R81p)kIBx->lARt>r!`A1x@|FZ=@aQY1kEO<>3S=P<~@ z>u+cqvDu%}SNjR9Yf1dZ3G`ACm&4LF$ArY2G|W&k@=vd!Wb3KajyXN=QCRFOQBGen zLY<*~%IEHd$5X`2Wj)BKAXbNqH3)bq5CT3>AyK7>{0c+NAtXq?s~b;Ijmjer`U5x0 zEugn(Tgz;cZ&h<&3TV4#mg{bs>jrA91OQsW{oN74*igqsBf6%s%j!BwMW90x3&TW_gWgu#xuJHFY62u+E<0L`xvI zBd?qm0Wb@a`}I6n;dCLixI=YETKzORtg;EX)LuiE#LADUWMkvv5_SInxNTLm#ULpv z&L2A(g**PPwVx*xMLcXyMRZ(CBa(C9l2TM76GM9ooundeM9S6=ufxY}%93=5BBV+y z%+g4YArB{8pf|Aw2>W$Tba? zitKIG0#$HgO$5VaoYktvS>xe3u_SfP&yqyN93la1XChwpfeSO_-(2|=l~;Cfy1J|E zQTj}=D{Kkd%Wdh*c!?jh1k`HAN}+Ku<>8!|iO)n~=PvQF&-wKgp>s^Qr=Eeh^O#hO zr5ypaRud+q2R*Q_Y;e`IkDTYnMU!dZ_4PDajN~FC$ zl+%CP8Q;#fhUg@_i9~Lyz{TY;o-w6{XNXL~K^-ZPSYs4P4p;;ASVZ(X+|U#ts5#^N z1eQ0`ml)}L6h2aTQEn;l?Ar6OeW>tp`XK}@Gyu-m4Df4AUkqZ3b*=V|QTfMM#z@8l zyQ#Aa7+Tng8M{#-)V2{PG8@@UXKlPJ9}-SzeN&=Y%T@0Jha~i{ZiNnL|7JE3mnq7R zNmMZ;T4AmyPswqIXX-SX+=?%9kszOK!xHO_9 zd}8t#I1Wj@2Pz(Wb>Ep)zW+0T-m;1c!g(DrzU@g5?~_{~KRCW3Vj&B?IiEzG)+w^n z81|2!+97sYZxJk@6Ls}ov)E@4Y+9kZ>70TOd_i5NnDHZ-yrnY;Si@YyTk?rGjblCQ z$W)J#`=yoKOLum;!QZv5H_b|UMLDxPLGB~(h6CY4kQ)v%K9IT8t%%i(?M92vcT!|9eVNl zKvO-tTd|bla{lxin&fq07{&DH(7<~Fg_V8=JDN@thvcb z@v#;nhEPuu?LweQn%ay93Aa76sJq z91sD=ZJvv)lXtCE%7f%Dpe(V}0M1l(hZ@v>-HXnZNM_DQP~)5h!NXS)MUgfk5-^w* zbaqERnse>Yf6`7&6F`rBSqk~JI(n{=>b}aO~KR>$Zg*6-n@M~T-baaiS?y3E(?X2i#T+z6p(I)s{-ks|GS6~5o z9-q8Z-nRB{xP1SwM)aQ|AP4E>u$Q&#tM@amwa% z=t2KG3wSLUqJuG@;P$2$$2Mj3HfDFKkG`&$f!hC<&{5NRpnxULS8$V2ynA@^=p}2m zLA2m%K4AW3rqn&v213?ktM!BY)os+%LksOkU*~ z3798wgIdiYozG?1Xz_*GU&)O7Wo1rgGNQO_0lOnnzth|jZ;{M!y8Pu+UM67^4!?Cf zg^;PY8)#?;<3x*_a-Qk8;*dXA7TO!e1beM~tGg&hibd|)7K z+gGsiIpGiQ`oc$Pu&v9Fs}UxwMbY9PwEbfU!((nWnd$z-C4DvGoP0n<#;-enQ! zsb-nSzcBdhU)!a{$A--n^Mz%;b_$yrPMgcLt4?I6(EEl;xAjW6FXJ5b&E0cE6kG{? zUTkx&2T%QZdL6yVEB<-ng$zt999L6gAcQuo5=XXA1^}`JRIAw1$SUo?;)x9_WvxJv zpBNEy>SFk>3B?=D@9&m*lWbkQ=sB(%Qvy-cEj4Zu&H`WLD5@NGs6oK zCJX(3#&=WWG;GB0gepI6@;I0NRWutOMKSoBr&i)&k2i&n9A`BrEhl)!3y3#vo*(a% zUNz!mv8gkFp~uMPchFS2c-u5m(ONqI*6b^2QELgDc$gPeLg2<#gqmOoYRM4=v<{xa=_TZ;4i=!lS4DlINUC`ot9fkNt&Ibpf`GD)ZwDC&UiL-SWu zp7OiBYva4|e!_bBl2%?JX{nqv@9@r^Z7uMfeztnvJ3b7!8S!BH z^Yq+6E3nh&NVM4zjatZL+iryjr#vUDu9Sp$jtUC8lJz63{w}}^CqED^jBLB_eJ@76 zk6I)59q>e#YW`mR`z}_tWAxf{x^K&a&VgU=3J|;8Xjrn-?L83g1f9^gDp7-G19Ml1YzkR8X+ z>3iBCyPA9*2RQuLL$!y_0D?>SyD*RnZ1Vyd1eldhXscigz`Y=EhALoBdhiK47uPoD zwi)<(L54Fm&Yp(gICMI>w+<0vHN3Doe}v@yg~&ZLy0rfLN17djAqp{~_J;XEbN5Nv zzbB`qkT+0`+~F@3YMD{H!b8i^($lW3y)$_GQN5u6Y0?mo?_792;frxb#}K&Oqoi_M z+tIbQaBKB}psP?Vh~OhpY989=&!D`R*=1f|=74kpn|HIaCvV2NZz(o5c_s&0e3P#w zLprJ_Ik!u2w1i1c+%xyizfp{KIm*YxB%?x?&t|6$c8Tl+^sX;jp8OV`#Mh6WHWXqP zdFUxOr3kNlkKYvJv>p11*Fp!+{y0X5@KYuvmlrI6SE8!M+E;-a;O$LJeTCuo?N`?3 zxds8GYc4FF&8zUpG&?*k5KAUK4G35RaBhHZ4`U}h$Z@V)%f%am<7I>Ewt(iK+#NpmOB!vU$8plDQ#6J&t*d(-k zjQX8EnI3EX7f;9nI)o=QIy!faU$M18> zIXcluHw$)WHdQYPAqiS%=`>E3%`Os_U2VorazgY_B`za{n)ta#NkS|pzYX>?{?8kqd1KV9Q`6||_+mI}WO*HY9R$vQ6S7iOBB#zh{c zHK!YlZmixdW?r1S4pS397wW98la%~c(I%8#tfDQ~8`7!FZs|mol|%B-co;39Zo6os zH4oJCYzsCI*+F%Wx83=7O!G9GH(?TIOKKG^>0-+ncihe@Jep8<4Z}%zJ>Q`izF}YZ z$1k_ctC~82D&(I9I>1xRj!v<%!4s?Qscdg}Weq!Y9JpA`;3LV5HLaqwJRm^9Is^mH zg!c8W5>G9}Mdih7<;4ngjw}{oQ*kCYelA*WYRJc=6rwd{EFNVu4k-O?_;Qy|3~17A z*d(gI{~1-Lazvrf67|1IIJeQUxmDk+HVUy{KP>z2x!3uE&l$z)x0 zS4cf_$D)U_Pbj3viNZ7xVg zv}eHaiRDDG1DsrwB*xBKiREpxe(Arcp?m5scwuN!Xu#C*eSrxX9$TeDg~ zi%E;zp0A=BhmJ0+m`6|wUkhK85sHG**8}95k13$KH>#)nX>VoygbdD6p=<|lZ8yRC zNw&$Q5&O2)5*W#=8=m%sQHWd)3g54O4AsQw@|5qi8dZ6-#?nBh_y(0XPaO#I^dX$y~Yu0K6s}>1s0_YR?&n2j9YD-u=91%n^Hn}2oF4U_?C`6Y$~;!g zesbUF_rFcpF^_m4L@DD(fxQP3wf@}@2!`zbfI>x$`klYbQO>ulWu`r7JLCM&w68++8cBS$NO znL+_cw{ijKaQyq7RG;I(Z~&&Ow;+kHL$_LhU3bSo5|0Bd)T4InvYwFd9(Qj(W(=0z zvTdx=hpUZPt}aHt_Lu80L=*^RiZrQ}Q^vYn_fGZ-2t1_D3FlAHRmp$~%qNqZU z#|2&pVH-T;b;yB)AOU^LNe2_a2QVT_Tp-z6VJJ3(=`3$j z;Ls1Fo<1NzNQhZqE#c}JQ4Y+>v(~C$QR#1*{Cpbm&v?n>I7%pupJZ58s<+dblwy5z z%q`tX=gzKD7OssZt0=6k-_edUhBfKSTR?=~L2e%D+B2e5$@e$^GTa1cb1|Ub1h7(r z*YG+vS79MIL%Lr6lfH|6i^z38uXdXeWjf$`W%LA>;uHyJQ7?F+Wx!@UB~(y<O(e9ZPk-U1&~C_1+-zB|3(MD)Eau-`s>~ZWD~C-dI_QwSyZ}==x0M9#7@t2^p&& z{WE&*0#A7kKj<-doByUqSu=k-N^L`(9M9l`UsAX_0)r5Pjk*Nea}|}5nE0k%>H84e zTXJ$ehOOTIiQvP79NL{Di`WT*TBz&?e{Z5i0a&RaM3X}C^e0>mHZ`mfFU0}(DM*wQ zi7oxA_vj>MD!Tc^!8UA zsnM!k#V6B0Gj;3C+l#E$?`9IiPz;Q$oG!VgX@&~py=Tv!b((|cAbIXw_w`e?%6_i|7*&og zi*XiY5G#q%nD8q~#JF`H(r^Tmg(xFf>oQO`OY#IDdOV{?N+?`;UYDo+$3KHh&J|DF z!*!`4KaPfI%&S(leS~X{P5AZZnpAkL#Q&5sRz>W7%}Y}?M1g`~;T9%-`+}FVT?42%mZ5#2CQpgoZIl)E zqFcGY(>bIce`cx(9L<(bl5*;{;K^scY`oxt{UNXv0XhrS-?kx=`BmePhUu?7)FHX+ zqI{AP%MhV52h_gc{fL8Fq>?vlc*R4zHN@q7+(Q}p^bB*=-&2x!cK-s^`*yHl~HNhCtTPPW;ZVsp0{0p zsXxHbYJqZo$DUSG@ROiVxj55W_6akZ7goazlw(A7q^?=v5<}^RTfi~W`(94!6~$D3=r7z;T-A>^cE2C@PdOxNtI>XWVg+%1dwm-N_60m zx971NO4iSv8xrs@1!n&LCj|y=MZ7U}kodWRRp+PYcS>I5?1RuWaXKRt`^o@NCNNgA zC)7Z~FWbfTE!^>^MSq5M_Y*Ap5~w@BKIgY$sP?4tT2Z~G9%s7U*AGgf`{5(b{4<+T z$uzHr>GTjgri+eN^+)e$$eEo7Ji>zW0sCfSZv{6PrRv+>BtMe4f*CCc^hT+lnQRc; zVLqG(-3KkEE-E_tI1yg5UY2|1W-a-zj9OS6t;ld+v^NPgr7gVnN!k$_l~GC}+lM9? zcU{Si5UGntyXU~8j$r!U7mb8L9wQp$GCuB!I&#@(>kL5%w2og=2Xe38R~FYOQ9#&f zq~uPfKY9^TUx$h8dNH=@1N2ASdyf<=_92WWeQ5YnQ@(J(^n|R0b_#-_-OcJa>?fD$ zp+L2iT<@_Am3V+4H^2^F_cF4E)K7aFjfs2(+A`xk``G3^wrfjw->$fJrgdz?t?oQ= z!BxE#;UG)hLOcDg1TY`glDIxTkFE{D$#NcAUJDZ`AmP$EBH?a2CLy3jnwwj`ntn1s zg}@@-T9qj*%uV!IbCkoUL)z6V+qEVwC$8S%Qz((;6Pl!tp&M0fH&^oQAQatlR5HXvU&LF!hh+JtgT4brwq-uoo~gMZ);+@TyPhJ&=52>;nr`lR;@%fBlh zG3kCiVA`D2EIXduhfj&fCgl97EDn><^`@Q7c-=x`3cZ=Rq}xz49m&)4|6z@X{x_o2 z-pt(8G_NYC*ZVVvb&{EBq$OL6n*>Fl0 ze6|X?SmO8vNA@Tr+d^NNH!3KZ1ywwcysOmApvoFf!u^WszNn>_PVxo{e` zYaFJu)^_Ny0?h{vR~d?%o-e5T(_O;y9V!X%eFF1uMU~7O)6>Xsr*)Fz3s#mp+X;gg zGc_o9h{8UzaiSG-=`QRQkEYtWghTsk6#ubbIOYcUj-ojcq%=lte*mECp*q zW;(p0z{(ffT*bT^&mY^7r=N}7?9}wt8xQ3_UoJ)D{VXojZ}1>AbUO7P1-V2G4P|ij zdL+G1fueS|rV$`ZMO>2s{RP`K24laZ7fVf=p(-jj!Rf5~Jo9WB(+XmX)hG;hk($q% zeNr}q)vJcO;2p1i9S8ptte6)+vhB2HZT0s4GGu-lG-GM!HTxO)4m*M*6vVDiM!qQr z!_eV@bH+Tkx%%~p$UQ%}S-8VIT(s!Nq+E20_MU1^j)KiIor>q$mX-Syc-(iXL_e!z zDQ=_HD>LLI8Smwe)`87br|_^vek|jqL{>X6eO*nNPFaIl^={(mU_6aw;!)AZ6_io3 zVpABfaj0gDp~=vzJlEMu(_@mVeYlAId!06fguiw67@nQ=;QL%ciZKQ%-|<1kH8& zkM2;?M5A9kJPpr)|KF@-tzZ$nGOMhs<+H7ScQGR@#D^lyO*~n?*Zcpv%Dhj~ZJ7Qw zm026>ST=ubE`iMpFhkAqlP%9L>GK%yMp8Q&$Q070SWJfM%`){D=FhGp)X2~UvZ0V?C z7u^8Ia}&gP{nYv}bospv5pR(Y>|siePj5R-8Xw^X=P8gog&E}mlNuMGvdD10xXRFIwx2GZAKxg4&k<*y;(miqE$kV9ogsr} zZ$*gc&x2~5i)TTgDVvI``WyT&cF3a;Oskw52bp@WEAb%N!RKpeHS#Ysfk*cfSW%#2 zCN|8T1l3Y_gA_@ya_v{Cl@Jl7z)=iF`5hLco*SHgJ&{}zoE~-~>VV$VNHXeH7*+UgJ~(o5=UC`+vQ~a(G#-0{)af0>!vflxklu=zx|)s zw;Gm;Fa#?J+`^4&x)UBCDZCAhH0dLc`V@hCDo7nT7EAqnZ>}^sAx6AA_U!IuZia;J z7bK5)^gF=-^OyB`ZG_Vb#hYPem6=dblstjTsQJa0i=D?)slfZcL9I!x;~WI?xdQN~ znDxzx((s~9ML4>+;?tEFK31JT&ac?e8H`Snsl2oa*m1@Ds(1gTcY4nty?p>n=bORf z>CNlEDuYY;t<(r8nmA4koA=R5jY2lt^}9ETO;Og` zU1|v!xN3E|uw-s2-)(3)`TcV12mZQQC0F3SZRZ#CkKAFtia;*veo@gibiG%=ZQYJe z^*EXb5^JM<)AVGgRj3Swgo*1*AN9PcHOd9eoI6?d=ol?+U2w=!QthxL!_S+Q^|yf! z;iWwQOp#}b4)vFPko^TE;}x;R-`i*FQKQj%&5{DQmch8^LLm*OJx|y*(C9>I7@I?G zNZycLw28UPl?+U^zi9FR#Eep$y(P{4V;|;LiErj#07-TcGm` zy))Ak20mYmPA(68bvB;DVUTLkY8+uh8unf!C{jd@;VX;FZ#+BqQugwzU?2g?GCGE{ zj8$q93##b=qXHT7x~=$wuNS5hcqBZ+rc4WNmX_ z5c8H>8K@Y_r)pRlf6U73Neb9rP2nmhVZ`O2bCpq5Grb_1WU94ZaapKV6SW0o#Enjv zrXcd-O$Owif8YVYD2Ctf%%+uAXABWMg;vLWoA$u0>o9j!jZyo^zld@Jx35S$pmX@my;tubuj=a|U{PHjyL^;|J?meKgvK_Shf=9F#DF%Gt5Nk~@^ROu__jCUxWl^a1vvvf4bAKR3maGUs?a4JO9A z%tI&4?Z)KGWNO;#Uf|EacYB7tkZJhbTxb6px1F_LHT`2zRsS_#Cbt6dpI%FYH%w3j zWjTC~*k?P>SI_8Mh0-{N#r_1&8^6<}DXF{ygE|Y;T6<0MWo<$+&2sphR`JBs|J4Pt z&;sfrlkuloSeAmA1l>{>)dyf`I7RUxfXzBBLA|1xt0~LMtXjquZ?gR3V0Z_RQM&>j zbr@q&iCVw}{s2-Iax2-sWMgNvFsJ;N@bLed5i@ZAhnQ_yUH_wKj6-<)_mwg0A*>!# z(S9R#hg0W3k9ZVZl>JC!LE3^_ouHl;iex>wVIcaF9obJ}6yWCKy`yXMZobN9plJ68 zOTSHNkDw1SNTt%m&%u8VhZ~jONd4V^tCV%O6D{@2AOls2x!yL|rlHM=^uiyVYfA;#pzAx)wmsY7v<>j>_1qucu+IzZ zw0-O`UGN9gZsH=@M=7zo*q0sy>o&Uzoqy3cclShaIQKHfy&_l+)*cVp2?6^RC8){o z11g$O0QYa@Px_Es+u5q-|6l>n^Tm~n2=!ySeOVakenfn=?=!jaq}}OTp3*g@=je-h zsmWW+oyAXg8!t-gKk$LpyWDi8@Hf47;hN0!?-L^miELClKUd*s*hV$>%1OmZuRr>A z5L#cnCY;hWC}9~E7224nD0pPU=krwKXsum>^{)hO&ly9%1d3KV#ep6(DvEcFpU=hS z^wm62CjP#l*gWv*f-(ir?X}lL84|cBDZad|rp=bjehlILO|MtKu_;dmfEHuJJ^atE zO4hb*PfGjDCcxC~c0{RkH0%wQ)0 zjK!C(=eWIJO>Y3aBi945hxJ<2kOGnN)42_5_;3;;`;H-3^fn~}noiHR)3b2qJha18 zauTLS?@b4s;59k+wtn13g?mT*2&SjGlc5=p0gmYFb7t;u2~^p%(C5H}`sOK)Rk|`B z`~s#W*T1-)ZbT+}Z+sWNeI*o<8j$dPW}~=7I>)0RD)b}-;J4-c_;^JBkQ{Y9b7gRk z>6UwjD|u5HEjWq++j;VrXj4x~Vj19*ypk10rIC6gzD_IG=msyV9i$?(fOEyzaNnQi zOfcmEum^?dR`b`W^`L|V>v=Ac zjYF_aGko$)}DL<46>iQPE-n`QVai-gZ8@!l$PX<$F zLZ!encrgCeEV7Ex*}Jp#M$PWVd$gL z=r~QO?h6bXr?RF!htVQk^!8;3p?NYdA0Yf4|Z) zNFUPBL?!lht>bFX#KN{xl1`d*yT9I*wT*Rx?t=$A)vF@jX%i|T4!%eP!>RiYj zEawT6k5ZS0Z?mvTBpYI|%3(G#;9~t^Wu$QV7&rB7UKLpdPUyo`v~Z%cJo)5jquck@ zn~8-=RlXuVopmlJRf!2DVa1gR3wkICnyxr-zNM~&9<##nxA+>yET^`ERJ!#yjTwsb z!aA6R3Y%SD)@f@>r{WVZ+I}&-6Mg1>4@pQ8ijB!pr}idpNZ%0lmY4|JL;jf;obgTj<*~F`pM0i-oLh7d?IB=$^x%?6}Sm@o_2kY%pRa=02Qd0Eare;$udj6y24Tl2xK zW7Q~J+@2aWEAjeKKL7p+3~UQGyTYKJY;;A#cvRT0yAh>31ka;(t+LthrB3Rb5d*{9e(Y1d1{VP8<(7kPRMz8%Vi9iOieS z67sm8LrLD1_`Njv{yQiF4Yc$2nL1^W&XaUwl&9xe;)TU}gfJ=QYlr6U?c-`h5&9Eg zA^eV#sM2CsxOpftNoX#b_1=z9#zC$U$GNTW61v9GBLnp;n4)}9Qqo2@%dqRMsgEPc zoX`bxoi<^%w|@)^Z38$I=pvb4gRDbC9%mW-H)%qqH(BBY zZ1nVecbc~ZvC>PZMh2K~F)DVDSQhjbZRm`O%r?;kPfE~wY07o2_tAPdZ+-^Hv_JhA zN3rv(3k>LZji!Ch!1z=#Sh&=Nm5+n!+I5*1%6u98hPqZFoH^=7aX2G{}T5e zpFb(lU-io$mx(K<-0Ngn$TQHd8rqGKy|5H(-C5!6&dQ6C9XO3^^%ia7aH7#9N$bTb z`ljkNe%Lxe3VBybB&YV_heRsmhudtFW(S7+c>0ON{Z!{?*mvv=A z{3Zp(yg}EzxU%3@YVR1SomPS4(=$9`A^L%phm9Mdhw0XkMQ6Haa0Ylt95G$H4_ShE zqLR^q>m}Yup_hr`?S4j!QU?j7W%C&r3**uug3I6Xh7n%OgWG<$r zM6Encr7bU2b|zGl1s0Kq_Y<4R8iswo70xormk%N$|M=kw=XEJ_*qdeF1sVG!!--PG z+J=`HOZw+lUt+@G;I%Db1+%IfbY31o*JlAt%9tT;)Fp&9^NL92SxhXVxq1;e-818^ zdaMOV`jZp#=L0{}(NRGkH<(;1jf`T8w`MFV)l9jlg$g4Ri&&g0Hu_SwkOU{WJs=7c zne{Wh$(qA&{wNepo0s(S;n16z*VU-paa?y1_-Q;RyH?F?zL~No>{C;BBCFV>sWyA$ zxQ@HBjCA_?c*HaU+`!fEHa7k8wK{L1!JBb3^FldPXa|zDx$)B=D3#^Oxie)jv@Y+i`lV_gL(u3au*W1nO%~7)*j+RKc5Awu?4y!Ktv8%!JS#PT&KZTy(D$4 z=M$-Qh+woVHdE2t~SCPq!tV-vFAwq^Yr!f{sKf78VO@YV8X96Q{XxqQp2P zxlFGbnfou^a{+8cW1bnzuuvN`MyAOTV57ptBBLYP4s$WRo?0!jR47@dWUjQ{kFN9} zd~RD}&aR9)>>*4QiX_Fy-igKCZP(y%Bs#rd8P7|Z4im#r0Ku!{IL^(4M5&r+5CIiv zl58-$1cJz7YaB@_9F#)!2FJ7S*0VM?F{IWC774aX#lDGHnkIdDUVV92)DRXtkG6<>=ZX2FN=+fUjuXFyb=?<6wf z3;U}E$pxCnowJ4<(iecsS0qmlR-Pcv+D+_=hj*d`&h%uHOm5c0u|^dme^wHIh74}s zs&s*nUeV%uc}7b+VnEsKey!;Bt8Rez7FOZpW`#nz#a0vGchtrT(QpgO03ho}>6cn7 zPIHO?qM$HpKA*J#&{lhiVSipJPI6R3MSw65Ug(9Qq#n}TDw8w1j*J{Ak9I0DNjQQr za)Txjb|O};@Jg{BY{cCv(&8G-{9|@dfT6OXN(xkG(0KSt`?b!f3O$Rb;%z@Uk8|0y zF`bsAcOk;+A#&>htZn0T)H!o}?HRy0znhjsrLt|9bkhHe88VY`4wZ{Y%>-uOQTLjW z`wI{E(=B$$R0CqH^}Pd%vP2iHL~!^^e)J={26A+orTQ&XQD$7DD3n1!7HWWM3-#A3FPI%^{mYzz7UG z$c$uPhvA~YnEgo4dE=Z!PawI8Qt17A*%6thNegxM0w1=zA!K+g<)&QNR5Y?4AWacJ zv%U`AKtuo+a%;uG%Wc$m7az0#M$T^*;EmXoKIO3VcyOBL8yNI$qTKRMiRT$KX+j0(y6LM)+p#B{y2QROO(2 z(W$Q}ygDO*w_LxhT#l_0*J{ujS8X*!b_y=#mOhwcPb_s@ml^c6V0=!M>u11$9=-1H zDW}*?wf7j1v=*LrHB#d#YrzsH(QJU(74V2abd}SM$#2&5gXC+A|`lCzE%MTFjn`ca4$<{=;*b zZ!-nrlcnyXUDuO(JQ{OPv}~UNopP;qS>TpED`E~wffar7MAX+LZtxg_rZE{*(<1x? zmupDbm%&dOW{~@reOCMEKUhHjBX&&kaIt`y#_j|Aug-nWR-{aURG!TrcF&2$J3Icx z*_S3wEp`PK%##ARSOP2Frz~oica*=bsU0ZddzF_hQh!{@-dAD#o&^eCbQ7PBr_@vQ z6oSL`h8q9pa|iPD?kxiZ0f7md33d$Sb}_(Joth_qZ9@&Jva}~(zBKKr9*3DM0LHVg zBEfRvZvuBSEKeeGT4I92D0<8^RrLmaS!{E}MFK&4vbCmw^l(j7c)?a14CyRh{9d1~ z*K*72ZecOx@!;_;s5ffrlm@iDE}jM2KhtB>Rkbopc<&8OT3B~Zqo3mQS-#7`t77hw zGLI{MQG1oaN(o0bPedA<4jSsH&v7cx1b&&(a!V`-yGj&b;nuHoGHHei9kvaj+Yv9$ zf;R^MIO8l0Z$TcFkoHO(le$0A{Hc_F^OtOivirc!+8+QmDq8aE|Feh;A2Yxat>kjrjolSm29W;MFX z2)emHe%NugM0Am)cWzPo@D7N%BGhq-ov9zDVw+E^hUO#3Yw==9vLPz5@S?kLGZTh~ z>)%NvNz4HAW<~NhljYtjfWJyu#haTV6Hb9g1Z=+?d93rf~g0*dqEGGz{__8`-0Z?|4mWXy(jJP(5f1l6(@ z?`~83sW_m==>cD$O4-KjWgaWf>EN3pmd;L!3)r&jF8sdH&= zGB>68?!^?zNJX5#+Z`&DP`6RPk}Rz`S#7MKg%i|Xq?~j{mih%~S|ue5ts8f57CV}M z2<~~%-w>=-H#pSRFmE5a4n_6PMduRg!u+{cq222nCi4oW>%8pkSFhV&|NRjbXs_$= zYz6vmqhL-d&#uVfDlm-}v0Fq`LO$>RPKJWzN;(1JzwxPtC=b9#GogF3R|4H3cIZEh z(jZ&Wb>CEwTpQ5i^id6PT+~BFH9mpjE6=ZXORVbrax>Np{U@r?54)Q8B6IUyS@;*; zqnG6IlKK49xY2{3Ei|^l39Cp^CEZcf;H_^FypVoXK>qLvDd0SFpd+kp7)I%|uCT%zEdcJSB%M zw}iEH7|`6EIl^K6hN251b3CVX8DIJihI{|>xc^-+Ll@d( z)>Rkp^g{Ez%j`4V(daK}EXmTBgI*>S6@wSiiM<8tZIWrsi?gXB@tg2RVTiTqzKO{G zGQin)T!H3Q4UvM~d+55$yd^mk441vUi}V+i15)Ju`^gvbC@p~-0j5+-Krpm{(Zv1$GHskGrud+n9`d5ftAH&a4zhQ!1b?dAs9Zlaq=A>6E36AoqMKsNDa>p zF(m$-j^OvHgIbJfsJ^Y=TmNo-wFtagwRrl2@};*jcIFn?~9)-06V)~x!+m7D^oMZUM4o-Tn=Y! ze%?&qEPXa|=0q_g6;QFtmTT$v9g{=5kPutGy#4(=&dED)^~8zOL)iR1%J$p})m%q1 z1)jnaqS$5UoQN$1HrwZ7>9*sJW#_wc#~!p5oq1v)q?XQ>=o6i2V;JsPU&BBzjfRQy zQyY_B(71Q*#wK=|x1ud13b?ufwA4{Wt(%h;+h2G)K4b@ct)h(E9M(Y{yv!)I<-`X5 z7WXF6>QAl(aK&@#34bJzC90qC$E%X=btTP-oL5-f%?IoPHjD%;3c&Z;Th%z9wxses zdSnJ&z%BuV+u6=8^4pDuG<%Flqi*p*(cshg_Ty%nKVD};l?(@=~7Z(xvMjHAS7j7CBEWvnV1n4KU3Zx?K9dIsJr zIhR|i@J}Bl8Qp85@d~}49MqS6hl{&o?2yf?|KL_ut>m5usJ!R$k-fu6U|r$EUXop4 z@wIoPq21C)7gOD|N3JHHpEv1=WdFcyslw6Gd$m`M5e`;9z_1JE-P7_Gh&GWWSklyk zIc8!g-E#y|Y<_3l3W*L+2jSy9YghVKLdMJd+fknj1yrNGucih;;=l~qR1a=X0D*$7 z8!OxRSC3D|+#ZE;iLbn)#I+}VBu!r_On!uUe;(DQcgP9_csRN#VtW?ZQ4;~xCi=Un zn?+_LKeG+Ge4GgvLK0FBtd4pYFJR2_^YA29|v|#87xvSa5p1OBSuN)A& z0e40!^K2vS#g5az7SgDnAO`foIKk)&eS^?VmW*{>4S{?lJ+xzteWnVlG!@P{?C_K!xY zL%37>g4=B5Yz?kl5}5+$l6P4xrXSL9P4KqQ;w3vzrQq&cx!XM__Tchc0MiFbJ*vU?I?S|mD7zw*<`!puW z=rqXh!w`6j4djS4>KpKqdmhFhU}h!>()w7qa7!7Vjx7F59$ridp|9-kS}_Msr?YJ9 zs7{)f%1jq`PpqLv)++s5e^LZA)&!?(FzsB*oFX0Fq*YwJVTD?CUP;>d{EtBo5W8q= z6f#tENSy*{QfiR|SeEc=&tZ}zo(01R~OB$MF$(eWN= z$)AN<75bHCzA5Lg7Zrka=X7H!0%H~pHf@COtRHu3_UtjcfQ9|$T|YjpTv5@sWUq{M z=s3Hw2wVrZUfD&v6AlY#rKD~t#M=%-9%2&4k6G~7D({S_tKxdvPc$5_1c%m(z9sYf zU8&Iqk|<}@5RyoY#j61mXiCDRU3(VXKH6ub$G`gow)Lb3Af1#QpPR;=k*@?2DACQ2 z4*Mk_{RRq0SLEi7cF1U4tQv8hnk6otoVWcDnuXlAiI!gvL_anse^XwxZw zHj?f4IAdR!oI3j@>bJ(xjBF@U<`ne0DsfF$VASKUYi5Z8g2vFVy2lTs#C-CiDywmI zV)1DrcXG8`%47=`&f1MG2#V=LZq7T_Oo(GcsDU_sI6V$f3;gT6i;tKM(DTOgFBw_f zmT21Q`L!l?(q<5OyMqI1o@kNZ)C=tKIz%p2s~cd;Ffnd2<}Hja_*qyOuPyFIG!y=f z9F~m6naf}+EHv`g2RC*B_Fk$_3e=32$9fd{;nO6zF?*&2F-IP}OIFCC>)7q$5nm#B z@Q**i&*QdyT+>jBi*cFoTg8S%O@=4hE@713hStnz)2I_4j6lVFJ4NVx5Tw170e1F6 zRz5&Jex*+qo#ZG!`6928DqJ~j5dgFoSrVq|6q0^uV~D~m)7j_}h$5ll7diK4siEpc z+BQjiR>RB{dXp~vHyT%ce|miTtA;Ipgle5!?`MI#?_<9Yt49*OC#*la zjSi6O{Uvg>>g{4J^2WG|GCm@P_pv=Crv?<4ei#45bw(UypA=c+mYRz?-ZI636!OrX zFXc6sm`8prZE+|Y*;5ign2{uwN}EVqH!DSWOe$_QXk+({F6Vvd5>1g!q!3XA?^i)P z<*wKjA{%6TISmF|%U%EJX6hJ=<0MPjf$Z;TQn--t@SB<{=Su7kRnD_tDE9RUMYm`6 zE3pL*>^(6T*c9>1G`uZcE&OFhw<(Rox>6B8vm#>16u_C}{vg|8G?|##S(=7&hNt#J z5W~$EKf9`mAoy~X_aBwVU<_w%46O7@QQujWipaRUHyJ!%wD6&Z)h7Ox^Aj46gOQrG zwP0m$9&vcY23V+y@<(5X>OF_=43xVY(8#?^Lg#i$MyxWCeu&}2sBYF*PGr zj6kQ-bY(q+W*kp1P)%vdiVF-(NYubydMk;T)rTl)3-iCFXP)fbb>$UGE)i ziy$svwcb}e`uP(ikg->EqMh0}pp(JdBk7@Cd`K20yOeZN3t8BhDY?mGmedz|^OTLR zW@Go&gn#q$6eo?XX~e2)abhMNYTH4XAR7p>FaOUvW+gheB1|!TK`?}zD|%$U!{ktD zv&+Rj6-Lq%fz9EHD|~#t%hMxeIyI=Dx}4`Wo?5B5VJkY;zHZ-!&^ffVSDWAZ8DHqQ z4Tz&db(;Ojw6ri-0!s4W)DXl55>JH1Za9!tu$-4Pc_c5X<$HPhWKc!wd-n8voK@ty z?#ZppTB)*=(yg|jPVG(wc4@5Yrl77Iut5#s3mYVjB}~ZkL~K4vDM;FazAT@#j_;Vz z5$V-%sW#MRe6rArMhGxrx^h|Fc}Ce_DrnTAgmpR?fKbuv^NOMM-Tvk_jv%n5;-JG` z#Yy5+Y&!Tp%`2-Q2L%ve5*>NZ99CtjIvliJO1$8kuY6NKWAxWiT5ku`BtG*gU*V|_ zib8Y$@(}z2WP-of&SQ}gvjh=4KrbX{GQB`MI^zVczI!r6YPk6B0bh9wSK)WGvq44M z2K$PL#JE4(WDKV2X}yy(#)bup1hf0r`d9R~4Q^C7`;N1s0iPb2X)G;16hA+9a$h{TR06Sb=SLU4qanhgmG;C*z~=IySq#tg*8$0;oRWJ zwUL)izfQz>I)q_s@RgJixu$#D!*ae#uoXi<)_9!4B0g6p7stbM& zgYCVy_J8;De*>xR^99~M&3_-2Z;9vF+9D)7-@GQyp6&%{20?v za{^$AxSwu5Z3vpmWv*U#2GhK}Dd1Nt3|i}dpkayCw&#!W{cvas{S&XiV_>zdS?$Jf zqa8~xOs($jLS~=_at$)~LbAbXPL3ZQ=#?LGg8aOKFT)@~11FM0egnU%jd7Nx%u7U% z6Z&F{qV~#u$-ge2CDo)}dC{jrGc5HhB>V1~X;~VYKE5EqN9^VXcQv~DA|*4tQX)1V z9)NMVwJALQ%;Ez}TBHdnn~tjFcYgnuZC_?}tda^+u>g!2=#@-We_{ZYJapPG9-do5 zOCpYw;KHA2`>qol1W=N|SKlFBd5lBXz5Z51k}tfMo+!?W`i*--s}&wXH$fZ=qL9uN zMm?Gty9KZ}+cae(VeZJ=CZ-k_lvQiZ!RqM@9|CiR^ONZ8}$ zAlhUGUm;_w4Y58zZ zfXrKt!(aY6V$V*)1K7IAy#8975Phcl6TKlwchY{6NvSfL5KG(YNaJ`+LvHe5$@25` zhwdrnII%mIkBn}nX?KV2uD-5jY(N*W*`w)Y#k}pEHDsd$Y~S(cSu$1StSq`j0y3E1 zs-1`H;W?KCu7z|rZQbY6Wcwc8DWGXHIZw(pHQHTWs)qxYPy77S_*FN>Q7R<5O2M)v zBR;=mP+MASH^U`JMjUI~>&{>?BBgF!7G}vtBTi4!_fOq1ho?=mjk&qq0|>GJ-(kH;ioFOLNz>it-2IUWKYjpC6Z8FR#=VF zc*u~Mi++Z8ImfDh(DllL_QTT3(gf^ozuhm1)DFp~diiFb~jtkSOCJ2{#I!rlZaRmyd`dON#u9h&o&*||Xo3LnB z>k5m0Sj~T%MktE85DF8CEFvFl;2<%N@_q6 z`GXqGyn0cKSHSiJ(7@?sj^ov0Iw{OG#7lw6XN?uPOa1Rs#U@et=7;NxW6p1Oj2C#n z-nocZZVScrK;Mm8ZP>aUo_6CpBNx~NvbHW_zz^ZUvm>t!F{(kkD-U>2T6qxI?V}j8 z4{pJI{_729+3Q?)iltt*5;t;E45yYMlX!O{F>yS^e|DswC|zBwUDYnP9Gi;hd$l+tNu7ZybIY8|5w4quki=o zhfpLf&-`)7puzW@M)7KKZg(G=U3757Yy962Jtw&I;~P;QT9>0DC|fHDPDumS2C{0H zDWt&qh4j8u1VV$eQQ8zcZb>6aDSk)Xd_jU_Y^9r;&<*L%li`yeVKf&-ttJnpBk=;! zCHmD7S!1u6S5pJJ)Zg2lkHI<#3$3{@n=x1n9Hd+|LEWCFy!ax7BEGH zQc~SDNaN1nXw;`Dm2SsYaxgViN1VC-vD0Z>YVIJx@BtwP{|>xYq7F*(>J?x4o{A1{ zehWO_QeMVmNhXc3^c!4yEK-+@*0>QxpTQnpU&OglL#+&9-*bNg132QYRu5H|!?H#r z#@gId>~J$&MiHxc-0^u+o_yv z?2g*}OMJt8#D_fKkp)#$TgGHB)YzK-LXvm$a~wgFl-N#0mLjgMsDb2dRYeCwB57`a zk2_Nalf1}IUgCA3E9Uqarpdo_*5<=VYqwb2LWh{!=}QD0@pQ>MCIIMk#oH(5PRy(_ zs$;v+IOf$)wJZ_bkWe7=rC=WM zJn$llg52U(&*iDO)dU;Ajr2^@93*lc%o2Id_nvrU@B*@R^3m=xN(q0fSWRl+;mHh~ zg-_??P?3ZQY1R$2{odW!oS02v)R%?rCwrSWmP~rT&a32p<%e{bKRj00ivQnw12(oy_+4qd?iwA+1+baP=Qf# zkeb|O34SiQHEY%F>Fi1Q5ZVJiY(|qd<@;h4T?Gxsv@}B zSf28at%=H<>H2(~9od@^?4C~ud21+s9Y@0WfdA{<2KN;{g`;6j-Jxk}J7|ixrIN(H zJthoKzY6D^_g8H^wog||JIMBv69!X|sW$e3jo?Ji$uoPt!6CgDvei%!zHCSIO=f7+ zc#ur^nls|toRUJZ4F#cf%gLs4Chiq#)PZL~REeq0y=;0X5jPgtzEv8whq0`ig{;ne zaf;4ZH87~ze?9lp_#I=9%(DNI^%))3tP5GurU+9Vxp0G>yefaABL6I*JAO52Jd|&P z!NZXJHrR1kNx1Gbvb98wq|)wI`mXvC6*`NV14m0HNh)M9HDG+&op0$%+=M6XjOoWH zmPkM>BAa`cfI4CbDO4&$+Xl>LlM)|0QLZmJnv_8Ps<~cmjaytT_6y{QLNDQ!1Wp#I zv+OUL)Yu?1+2PJ1yI4<*Hbj=D$b)HS#4fAGa^=Wrn;oGxws0>IRt*8yJR0v{Q4MI% zwaD?V-=G$tWe$;jZPeB!55c!&TtU3EwUagfzFhkWPx$UdQ zIH%braN@YVqS<-&N3+;PJBdFRcJJ$ZJHx0F4|5#XP{mOD6$WC;Djr;-!Pmp!Z2Q;M zRgOsXk@MFmkK?AS#cBI0=`X}7xFR|R7LyiViRkNC=1U-Q#mw@CfkZl4oKQtVTS1q( zyT^CbztPo5j4>bMn~R%?e>5`>)gmkjg$7rBN%`DdCOMLT;gbcTek^-PybVqA#A4Xv zowL}<+LgIVv!XtcShat0Q(Zng-YdK$ckXa1qc>pV#m#L75$-Mw$=CaEyZK`>3s#8Q zEq={;{HE%1UhEAZ&UbRUC@ptY3Zy6AXu)>VY~M@_;Ec3CzEql(ay3z&_8S zzC6+~V)AP%jyEZ5X1K@OYSzM>DAMXcaqYCbduCqbwNqup#vfAjPTk)me7NIDSn|AN zKU`~RTkjJvLNn9P`9JDk;jpQNX4k{GB+z2-i85>Ai#L{BXD$GO7c*2P`5yD;xxU0W z)+69Wp%@}nR8?C`&RXgdoYYYcLN*gj-HdXJL-d>YcEW!2A;GRp4Scd8LSo|@Na2haUAyrEnw9V;Nw)?+`s{>opW{_pzv|Ba`*4lMeWuz?h{{RyY_(rP*XQU#zQ{*9hHjCHl|a^K3i60JN9}&-S<*=Dlg9GcCWLKyd_NF zlN;Bs)!~IQ^o>|M5dH67g>(H2N57;6&+3&#NC10DpGa!Hz7SBl3PHwDM(c1>i*1B9 zYmI`ji?(aSj>z3L4z6O0U7i5@1T$Whj(*-k@?Ba!{!!p-SicTmEaQ*^NR)W+Dm;Hy zF6^DCNXE+gA1okMn&6T;7yYx(l6URgpBHzZvy+uItf zD*?n%-`7y3PX-~hq4!R|9%~}*)|z_?THhCJAAgcin9NUHZGpbO7QRh9@|Z|np)+7s zW8+rH_s_pKi5t>Y!PFtqU)8b?GDq=LvOT*dgntKWz*a~t7H2Hm4kaEWy-^W2-`mu; zq-4f7>|8_rw?sNUN2H#25gR0R$@Q*=5`HRw(>%TbjolZmkV1SV7obu%Cl!kg zQf%M{AyI#_-W6Ru3{Z~ovIU`%8y7^w_LREnd?0Xe&i8-OR7?MjrfPynqs<-s59Z!7sLj4>`>jEsIJCHH zd*L3uI23EC;1b-uxVyU(pan{4OY!0a3)Tj=;E;p>MS{D$>3!eNJ9~fFGw(cm@0n*N zA2XTAnRETuI*#A5r0c(}eY|SnUHdJck79@h5f0K-TKJGw8vi3!$x|QPBk&Tp>knD> zM*gCoFj5MGYG9_}Jui(4^c3TCY8%-FyBqD8cnoS$_y-ig?7#tbF9PR`%^yGAy)qq#ZG3hPd!E(Gu#M=sP}-a~ zppEr=;Av%n9b(JaLRG+g>|(X{ove(RMw7`-I!+Xnncgr`Cj8JO`>@p8s-eq$o;BN< zPnz7~cDFb-ze~#~_5tW6vgloj6KII@5lDN5VAtnUGvi5%Yt z776Uv351<%)~?QOa2UD`lrLqY#{k35lfL zFcmpX&5}oM=2^PpbtDwg#}nbnv>qU+TndeC<}J85IV*Xpas@L(4Y$4)u%)dCCd$&d zphnNNp8d+x?B(3LYyrYcvhdUdoCPnakkXM8O=`oNqp@aARU6!#vN}Cq54slSe2&-D zGf0CYh_*mW?j2lgz)BXbq5UxCHQ<5G2)XVPs*#`UEvX;x7M|dK&qjxxAIh@*^kFQ? zKR~^zrVmiLi92Yo=+fegB-KWNnk7h&BL~AwD*9>e4w-J>1P`oSGOTv22325wH`hPH z=g!Xb0g$XbEh3;W-dF`{L0ybdn%`4bp=+2Lcm!42*cv0Mf#Y*t2pi~%H{ae|Y$UIO zhFC1ofHHZzZnt@M!rW$#3)H7j@NlPh&~+_`rhAm|Lt%C7`$WIb5awDy4*Tx^ty*2g zs^^PBkh-nH5SD-_{RI?n^tdLFjs+GOg)da_=&HZ>6@U{$Im1EeI*d*R_9@hNH;d5_ zV#QBK94C+>K9BuO^AT^uZ~J1>ChJdSIJKt~+PZ{osacrVC%E!hwJXrPO>~{(VmL-cnh6!+WR>c-n*z7q8NXxY1+(6VMxH8WZRmGqj?JuDfb&j)CWz&i-_!@ zB0A^EWp44JL%9+J?C0I|_7_NZIrs ziA7;hte46_alPx*Y{gZ{i!b5%Q9zsJ4|txma-@%k0<|_YB!x-2e2I&$c~i_fb;2Wd zoFQjt?Bz?bg_gG34d$>&?S2>ZI7S6| zgtIXjJf*0U+)c?vuTs=9C)yAjkXOGSS^w~=C|3N?%t-_>wX$!2Ep>;I+8+(Pw@_)$jjkBdY7HmXtL@eexv!6GM{D zwYRMF1*5KbMq3Ja?iBe=c(H@O2t4)X!MEO_FldlDNmSDC>g>_XMuwtI_)I|$$6^!nR8}Qg19$Qmv(WNLKepc zw==eHuDgZB9lQV%$4RDK0le(mZYHB&bLeW1E|=cc%E?p;Vn7gnTfEvim7@)tL}-u5 z{b9)-lm_I_%=b?D_{!;L*#_5jGMh<5K3FlLCKQ!btAQy?}l+NRQ!)4yM&+v zP&S$3>erTtyL;bznMH1v=zr3F__u?(xXI3@+g>rTrDdHTwFacMPOUXCvgh36`+Poo z!sg4UpfO+o28YyQOlO?iPkrSrdix5u?PX%@u-^q!vGf5VM6@oZnt_P!%k@s``rWH%2 zQ5PVyKd9utR`W%AsZQYQi8ZM#NMo#e|(62ABiHA zkeqf6XU+@wyDY4Qt8`IfQXIOd3l6ZHv?hmqv?fwrJd1jwblnPnfkwqQR@FKF{*xWFZ*~; zu03l3_);29@jf{Sn(lgy-*&-Ja2mlO)hK8n{coR+eH~#;%e9qdh{~vZw1Fj6XK7IE zF}9l;r!@r89TAVKgv11_KnZskzI8OQ5kp?!1yWP{_H&Ee$6I0PUvKMK?K69=B9vr2 zd=tyvl~ZhghP$f_fSBgiLI`KlPg!J^X?^(ACZE1&g>j!Q zQ)?0SzdUmp-TAUn_ykZEI`qkh5gK8Nw&ybw*{1u)BC}2woAM3)elM51x%vAwL;5e8 zM1QiCM$@nyq)wm77p_~Rfpl|+`Ba?(jOBxS{$Lo!n5;B%`VEoW%QVvmFjJMz(s(~a zPGXwA&4|#F-G<1;i0VFR;MPcB3+M6En+Mv-vqCDrqVlR&cHE~mi|}(PZsDY1Z)akx z0xwGubfz5xNMBPnv)u#ZmNXFeD$H4efcK16Ndu5$DJMJjrgU&-PjT;3fxmOT+&eE| zt+Zdp#qFPvjp9H+po^@0@%9r@w^erjXQ@1qgZ$xpP)OZvlQ{8qr zpiYU8c8phZzb{i%_JT-g*VJv$VXo?2%N%oVl_$LGI)i)bE%d;YoW7kz5?p)^}BV5L z05b)X=yFQUiV0WzWbcJru@yVFc1CU5s+3=X@dn0_)Y!zXR;O`hAKbh>)azkyxh$Bh_u z`faGwpN3V2i8%|&>f06I?$^&=18b;u4~1XwO*zD`+#6V_co$itEO?WF>*Y0moFEyD zPT$=y@isA1q6%wC-6SZ1fup3|W`z9`zJD?h^G{KMJ=E)wWSRhDaP-1Q>GGtTC!tdQ zg^EBj18D9f{Rt6kn$02f0AP??!!S@trN z*TW{vpX|o{hSuY{YDtJGl`$4SnGZprNp13dXhgOjb_Irq#&-p(z~M>Z{<9C9vk5qx zN8!VL0>NG6Hp@-7{TkI}Sl#F#B5bH?m55HII9I|9Xax4CNoc zA(L^x_=S97#p&{mEt=)ls;vD7)+dimRDMxZGa3m;R4wgrv%V>%bqDve$pTG} zYmrS!rMrbl#P8z7viC(#HI|tT!;?Aq@iZtZ^{EL=2nZZ%Q{YbpKRdd=yN*8kJr$V( z=OJPm1V{uw28FB6%krE*n(q&9G{}8ajBk_lm`AgNzMj*=X`RskE~365eFtmu5ve1L z{xK=$nXDv_`mb34x|`G9Kk`1M`Fp4#r9}@lQ6+CPP-?Y7t8M4rKr&kGNa`;pB6mA_ zC**UxO0y4q0As=RV|UCzTf~P)0<;sTs75o@oy>;sUdy|ofl}s=ksX_7iJIF z{nghKBnWWKPfy4X%rcGALhigRrSX0!MVs90+R%PDG+xC6+UO_$fOnn(O%PMw&?;vJ zpUCet8;Dw~+|kmEIe@WOD$ z8tCIEG@VY}ancZChz_iIoODcB8idv|nij7x_7b2QvgYK`Or2wgi!(+`3LN~b;j8ui zq}Fa}^|=IV9X*`MUjrFSKg*Np5_OcGB{ zrhVUGO%>4Xf}0GO`4&CymihKSl9V#VLUf#H-W;J$u`ejfr^X~#9yOQ|h*bh9+F?NL zFdbq|S&B-2ylc+|e4lhdPs(Fk5hht|d|?rfTWi>gMB2D=$t6ABD!~wi>b}N!=U_7= zt22OPpcA==5gl8>Gx`lLC|h4kjgdRBWuJ>3BG8L|P9nSh5?9M4RvH?#Tkmd9+8}p0 zR6@l)X)NFHvl;mOaq2)`v>T_}49O-<;)=T{tz>J*mcvEgK@xU>SD$Io{jk2Io3PrY zU)D_dx~=}Em&~FnVHpZmT9UxpzS(m6gtCn4?Sz%<#1Xv@ zHcxKmtCrNH$#fv${8IK2X(8H#A*qM0OlptG|mdfH^O#*2N11y@VNIU-lk-y?hg*hqs=~uS?wu@{u zDOPjj%M?Dwe_#+@9vUCGsiU5O%dx8f{7w1E)EnB}X-|{`8M$ zyM2qQK^`r)@~5q-9qk*>8gf5e7CU*>&$QQ80*yu?KGH)Zod5XWDM^s{&8By0dk|Nt zx_(RdgP=V7hsXr0Sy)e420AZhH}|DNF!x+jF|)kwtnFeO50my?mT<9nM6YjOu7qC> z`i4QN822NF1|M?7K2D;r?u@W?K>^I90Xh@fWu9zOb^OBL@BY~D*-a&4>XCX~d)M(T z5pl-`h}~c;Sncwp7*2Epg-7LQOso(4y>dC_k_}i)qo1$2Z|i~dWTC}cgYm1v_lz1` z!lmxw>cv?-2W;sOax8*%b6%V~_)ARIKKeoHIkIZUfMZ$vCsOtSlV7 z5$(_W<_tQ$^c&vTTYW#6_#CT5tuuIUkE(6_P}!+mvs6k~aT22L7dG?fnhB=>&^1_4 z{W0^lr=vKG<%j@{{j-FpblX)%AVNM?zNp>QNLsEJdj@P@g z`mR1LQFBy)85W2f$`GO1x7|Uz)__D9x%^VJ>JS7c1LVgR#baEi;c%D~6U*?Kk^+BYOyYq}f0<qqkG%7FnSCoV+s` zc7Z~7q@$g`s>~qf`VFS*4x3Kbb#zF>ApIasHB(9AA~PWO!8C+m#lf2dZB{u8j!zm-G;UEZP?t5 zY!i!Y$LMi52U+9h`2UdaO$RVu*QKsJf6Grm!Q0Fqf=qVPG)1mlx5c&F!4_+wwWoOd zeNMCuNuX6Bifpu+8!aMa+nI-%t>lHh_bv+(i>4R z_n)-b{|i{bKK;(&w!V8U%MwMglJz|fq04_uhL3ga`M6g(9@{q5U*mA(e(0K~-as^` z_{9-)e0v)3*BZD<@lSnsXfs#>Z552f8wo<6TsP|-{@_oN8B5)a(y1TsWX=Sh0L$w6 z%m(HGRg5Y*x3G68L=GW4+xJmYlZ<9VWA+)ns&bnBSAiYGW-WPZZ-9LABGp(E;{&dh zcAX#xKCtmQv!M8s%wqtCKxP1tCkRR%-Ju+2NxvryPB=l63mvJHCpZg zHZ^F7pW{Z?k6DfIO$>rF&I6ae%*DNUPdTcRWq;Ck9p@7|P+ugRJZfDeoT7jd9IjtW zyLjIZr63{Of}J!8^nR^1C5U1r_sevb8HJ3RWbwuoXTLe@8u|%PhX_$39&4OgSPd*&MRtffx1Ez3>pkBtT-Ru;C{&L3*@ZWg7UO^ioE*^1xwOsiW_ z<+q<#o(lfnr$G3lrXzAkq}d*1!m?6$Vt%09jn!91jKyAF0axO8 zA!lcIv43k%SL;Ja>6#4U>Dte*gXQz8)ld1QT=^$m+dkIm-ou9+sF475NYeegcGcmn z&igM)u2DB4JP4apW#HG(1YiYv_CT=TI#u0#@*_^vF;xL1r}>uVUIBviGxePa0Hq__ z?s@#i)gQ)6psF?~RU5T~WVc>rD9M8$$c>!JwlyhKJn{;)gpL_r5BYD3Fy88|{qh1# zRBMwQ)7Pame=jF8QS!*!mhK&}&XY(GaxOFjrsdU>0_MU;D$9S3f|dAA2kiPYuVVXa z6Gp%k8)4i+qn=*Po?MB^A*!PXJzvzaw9dZ%P<;xtMD#UZ%OS{m}dKjAkbo3&<#-?$u}+z+jOkbd#@ z;}P^boHsm6qc1wkdPav@W$2#%MeL^t@l+`c*Yc3PysqKCD!~Q%KmNUsCar?L$OK8& zMz5%zeAqvH{D~z$4D{W)MLG7NI9vE2m>ZsaBC)h9uYtc1b+lhsgoeP?J-=?Q@P%3C z%D2b(p9++nsQVu3cRHJ#pgyqyo5s8?oYgJDoyTSM>nw&S5L|9N7s=|Il=Gb9MvlnM zXS4akdvGj)Wf6c@bvld{kLi5J1B>K`FL}FtJm_Pz$6_}H(eB4#cHOz^8Exydu`#lP zg!tS|_5?DzA^Uy9(#a0V?9RQ}1Uab^p6S0b2wew<5-AlbgUr`ObpOEtXd5{Qd_!T4 z7Wr($m~&5T6*_mliwY>-S1U^0=sM0z++$_pY0>gEC6X(-{1`NrPx^Af8h=Ym*(o(D zj`5g}y;$sA`S)sCREMP}>5rM_Xdx%OTqV7OuD&lXo=0f0^WHt%A)7RYAlxIzryl;K zA*NjJ5#;=g5+TuiP^fH-{&xJ3+`;x!FtTrsLU4~4O@IMs-IjbdBO7it{h;hdoc-$g z9^KpbItnfsUcoQ?x*u6Dh%Y}C7FXvU;6q8*`0@#Y+xix$ky?B3GH6}xN(~kgpwVXp z?!--Uhn0#uy$)m6#M8h4X=wae(<(*p?ZdH8NG!W|RMJAq0jw z?|3-svs#QzARLX%iNJr7A*R|`ylSmtJG_5bWWYvdR04By;uzXz2VAI6BGtMcE_3y2 zX2h63RT zGO;+AaoWo*S2QkIr81)Kw~%+7(TBrs)%w6bkSK47U2Lbs^Q3`!Cb&o4@G4dDJ$p4) zX=439XQGCqetF?qCzTf13j7rVPw#NMZWX#hOb-bnit$We+qkje`yVNX>(E{1n^aX( zAQ1KWt>2t_M>4zP)&$}vyQ!h`AssARyH?vXi`#>`HHBrgE;H}C>c|4W9>*FCN1P0#?yWi2}5 zZ3io_rkRS@x$vJm?qL&qO^wsC0k_de;pBJ5|1}F>`9^w*f{tf5y?^+-t(x;kzQObJ zcr~kP2|E3f=CnYoA&0xdt9LSipw2P=?R?|oydtP_XKKP^`Y0xlX%zn(PWuHu{Q=sB zoyem(!xcRuZ}BBxZCHJ{<;n~gkP)%-((#|crsCT1uTQBq7TT{^QYnARXHRDUFE-r# z*K~+4#9{OS6v=}eC>!FoBRuSs58Hd^k=*md_~DVXTNe?GI+gtqrJarY|KY=t=40ZPXB}IkBc5PFQ$AchjwnDO^=ghls&olp~YFfG?v(yrO zy30av&|3T0CbRr#*EDqAm|of^>A>?`o!T?y-QzFhD~|U(EJ=jKJWi>CONyt!{INB_ zpe2HIA7Ap>2g}k}>)zr7&xnDFl&5T|?d%lvx9NG+IxE_+lSQWZ=hvXA#psOsgZ`HC z(f&0kpYaCr_G2NMaL+$zbn_@sVWQ5zj{lM=-ik?(Dec1u6hg-m=pr_+~|a^o@U3w8S)9Caz6Vl>L|J%NL>Dwi z&Y&oeJip92zwCoa#cXR&eSf)ugV-sN7<@JKtdf4Vx1so{Yl2qp?>)0ZOj1vgmzxj2W9H$AdRkw z&*t(r#kKZ&*Zz0OrJTwb>@21bEBROBbQS~d# zx-|N8Vc%MMBlZE;dwXS$f6*_7wW;gG7I)RMYh|wqTm7u-Ou_ zhKk%yme@?|O^h3+AUCW-@h8d5kCoc*fEb6mJED8wyrZnpb=K8O?Hb5GFK){3RpfIi zG+l~1Hrto&lSMpTr!$keerz3Xx5wPW+{1v$?|5Gy=ghF*o3-BsLi5||xjS6U7jIIC zE1DQfI0p5aaV+FsKGf|Bq$ln+CR1e zf0P3k{Bh9D85c>D6vMW42oe{5>YtUQo@ypwD~bI=Zi~zs|8MuTpHFCn&i&r>c`K-M zoi0d@^~;vi?SeU1E`Vj4tHIQdIAfMuNG)m2V5(14z2yZ}GCp*G9fzuUV@E}1f#}=s zDk(asuB{v&3Q>FsdC0MW=Ts_PK` z&}QV;0>kJ;I}s@#a64Zd0PtncvmInZ;`jNi9T>Yx=Xk=-*84MB1)lKAI?i}%r(#qj zZ(Cr$S%Ft;304I{PRoGh*{F>j^|g;3(}1u0gxCNk1>y279TnWGadYzaDtwPZ4Ns$Q zxupe;>4Op~Z0ibV##0ZB;sZz=a^txRNj=@;E3-NgLxQIro@Q0HRb*h(kDYWPEGe8+ zU&f)`ah@{000UB;tDASe{Q>^-=7($Nn%)72WLRR0h76qB0#0MjU~`3p%zCnH)D85V z=!nn?{OCs0Pd?a{@~DZCjRZ@1$Vqgy6c=~sTr9ok%Y5weks?AQk;Q z!lGU_e9`A=wKYadx#y?mNWXm?CU1%<_j>)z^{ykL^K^~)eD6Fvu00DP+n(hAy=!(7 zF0fon{j~ZX5JTsWmLaO%h@~mCxLZ_B4B?EeXOh8VnC(-Ul?aOZEKmdu&tf-rkK{^ujZhY6nOgqvl}POyNWzt_~gK^wL}g>B8Q07?pnwyVAMKlqwxd#5sGG*;6699)84;s$qY66?tihy~7E4vzymOWv+=2 zpq!vNZJqk@#PwqZWzOg?=l%#isr1~lMAfVw8>o=lOBE+-z#gzTjgg()_H!;x95DOE z-(K!N52uyx#+t40*rszQOOtDU4BUv^7f+yk;9^Xqpy%xAxN?KYuR zkngswW8l5TM$m1Ti3A<8vsR(nNju_wrvz@s`y$u&AM%JimTAAf^7zV#GiLFnJD@0d zFlyjbJUMaY8&`P3IW}!&6mz~t+^}AlRITwx=Kw2_ghpq^a>n2CC3Q)0HC9+cs#$*E zx0`Hsj>qJFEsd7Aedu@@P-?yKDDk1ww*kpVi;L2%F|pWuS0&BKY)bPNfimAfzCdh4 zLJ|8HheL?$lNB_gL~kE;?xKhG1;$<-C2<*C_FEmGh_pE`Rs5sJWsk~#{GofxCz+ds z5~85w9CRYzp(9ab$UQgI&(UvxbsV0S6_4NmnJgPpksuK)Y{GUY060U4!r}~veP3|D zz#u5POoVWd+h!Y6Lt*s&pnv>z@3*EM3x4=;*Fl%zv;b{#`kxjjdaYy=h@HiPKrI$n zTHB)FuiPhYBoL0J_e-yq)^H8ap~(pu_(DsOd{N#t5PDYeGBsp>>w?AY%A0Q2}Unbr%?Edg$Kv;8y za8p7OivvLYrS-KdEd_ z6I%UP{ls^`{_jO5ddX^sS!R}%JY3nqI=;&RM_Mb?jUGVmTYJ9K7hXUk_cz#f#}9CO z6>>8w;b$uSa%|&j+C|z2wqd!v+TtOx`MlUC1}twGhXH(&*1WO7olj~?pbxLu7d{&4 zcHMEe5Wgk}@`*kQ-&_cA-*z$kvzw3>FmIU(_QQz%akWI+p(mdG9z+semIgTZySJ!a zm#q2X-Wz%8bXbASszdc_aXczQ6;`W_7T7X_+|K9EY&yX3xTPAvL=IbO`gjY(XOqZO z^2%`3^iC+)=;mu-YxhDcu~_jD>}327$F+qB@YTR?V`|G$Pp;=c_BN7UYDSazH{z7I z)%PmgvHFVfiGB!OnGF)bJ$pVRIvzVTY?6{`g-ob9LA*-$l>{2wqE(Ja-)=hd&~=F2 zOiDLQa-I|Dx!(Mpa+}_cr1*4+Pn=nG)I;1MQVSJAViH$Nhe1d0r2IB!u2i3_9WxZu zFY7hm1e!4oV#wWFerEGq@ef{NE6_U^dndn%-|cTKoPw!(9v=kWCZ}57RGfFapp5GG zQ59T=En^O+kx^{jBdJ9htv{*gLz)_Qp=#F;7e7qRCs?5&a^KJ60(=keE0yjXMNyQ} z24R(;IYp4(n1xU$^Y~CeO3~}mL3Pig&6h+JyWGW3C^_+ALkIg-h*JKZc!dYtCETZ3 z)jZ-*0u^FzoHNtRN?^_aJp*Vz>rH~dtYY~25YO$Cw(T=UaJ1rBzR+p&vAl&3y9znC z-yeUo*Uk&aP;66k+VZ94P%2&cnql7P=AlRNhT)w*$MF+>KL6x#Sg&;H^+U#` zmB-7a4$t`wmhhY?$y(@`=&SR(0f3UBhi!q8oacRzl6h-03;c`!2O!DsNTT|`W&!^{ z!AXLCKxUkAucJWfs3vgNrnx{++Der@d&#h#PjBG5SYl?Qy+;#1%iGUu8WJxvBBVdd zgB#Va7X%Pgs+L&2do?zoQ4Nq?R$`1bc&XMW!ddCFf=dP%OPH_?6( zdtV>|Ey(d#ve(JH(q%rD`#8!-N|vH4aAO=vdgpHZ@pgK4e17mtLd}ASm-9zKy)WUrB&Rys%}$&GdKAF z6-N}aaJOrL6hin*%z5W^uN)eC7(0>*ZhpvtZu6)S@I%IP>{1zrghJ(PC!U4`VThq@ zyN@g-QTPRnN&bCMw+d?Z)*20dHBzFO>+(lnDn|FIGWLNdUM!H1qm{!paQQo({aF4T zmR`Hw{CJLXK8q)1K2Z06+Itgoy)7XY51nqkTKgn*I`HLRqb7m|6^QXBZK-YpRqMX{0>yEih zysnqQ1g4_=xgz*$?R{2T`1(63V_;_y2265Wquj^Z&Kd0DsY%MKsSIpR3}mfJJ<%Lt zJ;h#a*m+oWe$07_Gy6Bep_n-IMC*P`HNN9Jy^j4)he2x`f7=+R+-iX_rqpHj>S|`M zeT}{ZlX;bVnGJ<6;=H(6V3iz3-x?@)^bCyT)dgNw8EZYs@jpmW3%&4YPVg)&l`Ab= z$BILh4`=#;R0BaU4dcysKj6Z8SqUn|ukwg+q3bX~t|K~Cw>{y}`j+#4EN>*CcHHx2 z4hxdJTntFcORNc-e36?_&1mI(lUKk()oH~{^NHw#qL)@UlC>7%Av%0-Rv?aF%?)Vx z$_%xADngEb@y_VtF$pWFMIkH-4@Nd}ah=qb-XgBThjfIvf74Fwenk1*!DB zm73_u_rpCed!4hWi7thND87hTJQu0rEm9S*WV=d&yuNd>O6g3a z&{`p=E{Z_6(-zdk_E6} zPhW&EYejSYm3;6n3OjvPH>A3@d!)9ctQqlmh+>8c`nQLe*w43bj-D!6+i(>fEvK`6 zS@3t>in1Efx^HC9)oFd&HTV;?xJlW&+u^u0349)j4->&F)Mmj+i^OV*XchR$M*7?- z+<@L*P%=CWVYZ z0M{j%&vb(zi8h~Sp(=wBeVo8BHvcY2J~OXA6`-qV`=9tbx+vFoGg@6nz~pI3Pd+f9 zYS907isps?`i{8dps83PkoGI(S6LRm0POlEDs87@Yy#e%QZ6N?`Spia0^6!qcX6)J zjZIQc*>zKLXp4WLW+1{i4DHiPa?aUkg}u9}`w;Z)cQl37yvfVoThbM) zK8-N02RVQ0p!Y|tSl;u%eF!bT3NFLoq_RLBNED_$V=~;TaW#eVaCk1as}_rU$hUb} z?)OuDP;%OO93`6f&e)V%*{Hr|HQe##Y8=4?MNjS;X*e~5@3LXtv6TSfQ79k>n~!oB zuJfp=T3-L_CWV4{0$d;-P!qh+`e#T{)y?J8E_6N}`e>mfsK%-<{a=wUhYT5GybW3< zO*7aNYn5ohQtfYoQs^lx1&$(fwK1dQ^vBG|UaO~bJ@2#@^a9aw;^J~ksHVlOB2B(c~c5&uoS+7xNCv8LHr2fWX*7ji`*%_PP+2n z104JCldq~&uH*;+9?BfVS9X@xFO$s9n;qH*{mpk9+153$E-N{-+cUmzIO7n&_f zxNY*QFl8*@c9RF@=6lSif$VTz1BX3jeA~{a6g?ocZ>(R-*+usYFd3+-OrFdSm-<3< z5PhHVp=f@ifwVpOCf)M50U%{HZ7{!4Lg0qrlYw*uRY*5^n~`wsx5D$!wzxUVQpGZ) zW`bL<4=FG|wG;Y1=<~v^;(N&_(mUdN9mnw*vga1*PhS`>MtjsaE2uBv6M#TH1)X;! zcU%7|LAUu*t5TEulQkA4*`jW5OdSN2WL z<}`$@FX?5xAFg~7sLWnB3nt=uy{INzXZ15=K%IG0MgUV+ZCnTgAI%0I=T*;B)p5vN zE4VE6>@yU)u0N^O1#C>7$I+x*95=I3xz~%oLsw*^cNf&03T>3R7@WUM>CO}MF5N^k zPAwkeFYb98N$hy;!I^KFZGlNdb;Y({vIRaI9)&?G*U0WhfkFb5uL7xALt2C0L zz&2puB+x~==JRhq^dS{N^;5y(`c@46XrAWrj?9aOjB^R!-&<{h*EY(DOI3`UcBWo2gGt_Y@)nw&QrBzC2I!Q6MS!X~#cobOk_RZY(pqL%g5=&*lEUpE zg06G`wI|~mVT&6lGba2!0-V-Bnv91NS38Pgi#5e4RAoWwW=jhDTfR3XVOnkk_}uyq zxI!=~vR4s*Gp!%H#;|N*UMqWd!d+Z|0tKEWf+!@{f1#ko%8|YMqIYrZHTS3Wt@p`il?cF z^T3IQ+oQyFeZ{{jj%=b9(+m~le?^^&Lfkqgakt3RlELxQtidTRZTl+xbW89}cJE%w z=*o-_UgcFd{-Bx!mUH$RfJ@_wyr{MdGGkRnOm+5tN{}K`_ z@RVW1cO8=?n081;8v^{aJZ+jqJ;pmuFoUwaAuq1%rkJh*?wR4dH0ZPxrcK>k^Fl@- zpK2gta2C0C4)Omd>N{hh6WsHhaz#h*5#KAPw_manZ4zmKYo1s*r=qOzF%{0{3gxHIo=y@**eX-s`tSSZPdmcNSpASW%%~G!^W5Q2q zh9gG7QLRb$*vs3F)xy1SqMVHi(#HcFHa;cQLGp8R;6vYWWALh@m6CLNw~Mi~ zl|2V#Wr9vhSrGcXmx|Ev~bu?Ez`e9;tg*#s5Wqg>i_1+lPd2{E3g^8-~upfVo z!ESpyn&J7JGu37IP)da8*Vy+w`bN-lj${_15N5$adDE2W%FHMUH4$gskjD<{DwEBg?pR-kjBDReWd(^Nap$|eG8OL;1Ig?4B|-Was?L;Q^hEzPpTE z)m#EJ!SxZEdzzqp`TjruH4Att@b7%P;pu0Up428q+rM4~jQFlqKiAvDGDR02Y9!uy zUs?j)#TxHzj2sji%`ja3BI|e@+7h17_G^XZE4aIY%6-KHpMRhT<|>KJw=?CwT|EsS zk9cZ9{52ti2LSO@P9%S?Bii*`*&kmZfaWIoA9S3VkctJ?$>3F5IEj*Cipj)ZB#G!k zjY&~i>*G zp_-f0q!!tjy)BdKx;b51-GV(N(<%O}GfzFxY%=IMP-q)$&-FluB+0|$M6`JQxQ?Xt zweG>I4+4(7(sTUnib`sppL<~jfy!fr9*D_n!hzR`>-pDKpG0ZZfv32ewT=hjZp-6r zL$O9}AG+J4(B|3`k>e(d`Y1_NCNo!#qMe__LyYH|^W?pPjfpD=+r4qoN$BtB1+D|1 z)buTmks|@(S}q2k9axgEX<%wSAA7&wb47`R&EJ=>cV;bFc|0c>%Na*xqtgqX1~|(# zZ?1Y;Za!(@Dbo{!Yz}9m7vum22w@U+A1D*wo(vi~b7Ut*8Wvcfms#Kv4IqY zDL?b;go;`qjV1lobYURuUJ48tPjbO;s?E=?8djHQLy1~W_fUH z_#D*sdD{_B$|c$9Q*E1;>xZXUtEt+`n(b}KPKQ<yCm>v zAINJ(mzApx5`I*<_u$nVoQkG5D~61DQfDiER8g%0*k}+6#$tXSk`#E$(V`ygYJZSG zqAA0Vj?^}HPEAfJs?LMPb^H@F0cYL+vo*Q5&5&5*vo+Na(8M=`%(2|#Y=i~D`0Gzk zbd2@**MQR;5qhTl>x!9T?*LLGo76+^{f8-5*&Amhpyf}F% z$7$$5XK2{)pfeR+_=McQdZ!Kn0rcjiUBxY^cIGpp|Cx$)->?I0CJ z{9;DLJf(9fd%$bYBwD$n&AiWjKg(lC^-k5C#>@9ahEy^LUfDf=BTB(mch_`x34vg` zNS5y>Fnv$?R39D3vfv>?5|F!sLniguxkNfesFP6ac|x3^mBC3it&@fUkA3ryMV{E# zM5YW9t#a8nCh%_d*D9%V$&HPqzwe4(JvaaPXG{S}cM4B`8Iw&U=spLeF`KBY&9w?v z`my`@vx7Ss+czp+dql#7-4>CNdSF@+qON+ru5go%(+Tk^VM>Ud6W2eZ;qm`i0(*?Sk3O(@|I^D>`lMud?0`K0FL= z&-$GdFR={&#JKs{TxPSfu9+v9b>MdcTwlcd9Q4>ZA{6b${PMN z`OO^CCz970Iik;NmJF|6UOO<|;oft7bRHvvA;>*Kua=~}tMNPkHYCEBp0pxPsB;<1 zbyiybg>f3HU3KH(aml5)T><&}RV9eM&x^S*50{}(|ARom>j!w+E9zv%+LxKwzZQq14S0z#wbZjy3@li9&XLOEw%4|G54O)aE5Q& zZ@Nf=Frt@egXp~zQO77zqDJpMdMA+tqce;;dWl{JAzH#Hqm5yRE_x?==bb$N_gU{= z>)D_7-XHc__h(<`zMa=`{Ep+iP}FVRsT3SpGdvX2Qsq)d_a_nJs_haz8EKXUuZpE( zK4WhO48X*n2`MQUKQC|pK8|VMT(&r;S@>MoKNEkl_>o8zd=nYX8|3GhP3N}-r!yCt zqz-+eawzgaVupQkO-=0Db!+ezzM*>4Z7~!t?KC6A8Ok=!hb`QeYI!%GXJ3mgm5Li=$H z;HlS=MBMK^I3h_B5I5sxY0M?GFE_3|HKU$Q-N5=i)s`ha)Z-RDlMD7=&YdvOJAG-Z z#<@0OAb{pt`-1_^cb7D2(!+#wM;ijxlQ_N)`+T~$RtGCmE zz2=Cxj%_&$8L?KM3#s%v1ne)P7bd($I(x1A+^uBc^b6Y0(c}qzwBp!;Id&BhS5vhA zbS-}k`=bUG)QV-}z4gk%cxFtAp*UBchO zpSew2gSwE^r*{vTb+O&my$_vFqj1IJII4Qs$pJ8#3_39RB)dxE7ob==dRsG^Dr5=0*J-CVIb? zTeKErVZle3%(vG2=*aAO|Alam>yHA0%$aglrE14N(aSZF<_=3Wsdgae6p+tYrb>+R8_5fYlAXmvb*`t zl=TVYAGmDN8ycQDp{%hea(t^o2`TBj;Ir=6_v2KNH`@9cmlAJ?4S&{?E%K806`h|r-*Q$~hJ*f8 z05PJZWVZzc4jbx&$s_wVMMH}{y=TM1#3(|`j9o-MOYGMtB93g_9Ii)Q3Xui{i9{@2 zG0u(p4ui<}jZXbKC&wuJ(dVt^i4F0YM2kz_1eK~WX#_78d6Q;vQS^JYh_1pk}G}6py@zkt{W7)+KIrg-IJ7 zT%WQ`Nu+o4681PZUXbgJKVW?1#h>-X>Wr()kfq)_kD2+;XOvPlX^N1$W)zGhq$b## zquulb81{Bb7}e0ySX1oW8c!id4Uo&wx0JO%lK636KFRFoQQxZXJg(F!mrZ&MGib5L zP+f!?C-v%JeFy`)2!u4mu$nDSN zzifMjy~j#{&kjv*ZoxsO^SGF|2VS`v%*yEBvwW2}A#M-uIrJMYuV;2=$LTBWo_G<6 zTd@ISKVi-DUoRWXk+qC&UKU|+5y%Y8!V}W&40DFpSp`29SW2*j8MxR}+*UI$W;k^V zY%p4QL-}Po+O?^;;5rEMn6f6x9E(hHwLRRM;-u8qHUe(XPj?gpFx|D#Dq8QfdXre% z^=_w-%S#`6YTSPfGHXdwLOZSSdv$~zXHp{k)m+(0^^{Qx&27%L9j8i647IgsL{LRA z`6Ad()xVG#+<$dnb+C53|H#^*hr)R{QLfKiTX#Og4SXVSKhRRu{qfADrhkLjuc zFOl`}DUxiu<#%|WoJm$zUpbMN%!iJkFU8uSxfDUW;`CJ7B6?aO~CjqG8 zO${fOERH3;W+8Ot7(sNK;I?6CyqY#1qZZw&7#0)vlG}Om>-}Op1_B5J-Ibs+r_{cE zoD!{vqSv8sd^aupF{W|%J|g~5q-NX-eJb9yonq3+9%ra?bq9H{?j z+M~G2k4!z7l^pQhy;t>F>q-8#k{Z~XaG?a5NVnLz!b}{Q> zy{lFFG`F7|!ly4I9=u5ye7hradK_>iuy+Sd!f`?KOETMUdDZ9B>tNQ$%-J*M`R84X zDf)Cvym77*GIIEa;OUTVCaNMD3=yAIGOaFZPx?eIRQqCZ4mcyOi`-KEK$2# z@3{QwIf8+%hPIN=HkWo9LK>Fi6&Nd+K76#Lp0>L$tkOfKkPv4hq!!Wb7cJ6(OqB%x z6)-uL*HyZZv_I+H%;K3Omolbyp^GuAj;^#1kMXpa>H2Rk04Sec8~sE}gLwo45$~lE z=PMQz-!$vMm}*WzyZvLI_ltT>5vQV2(j1yFWT*#WYOe$MV(ay^o%)5^Bk{JveUt7B$)Uu1uadesy}XuX{;eX z=t?$C$OC;GXdWe_5*_!<8GGg!a8B>!<#0=?fR}DCc5>u?mo<)9rr^2#eFC4#t~0Wf zQ*k;ggj`@bRd63V*bSp@LTYl&s~({yc{iWai?9cf0vY60Y5bu0z_3q#{SB!c4dde% zcopA)YVTilC5wOfO{{-$N9r%*hwD`Nv=?p9o08r{_4|H2w{~RZo?Uvtulv*6qk-Mx z^)ymCRZwi>O(1>@s47Wb1f#3fl2-BFWjVDT3yNdqh8oG4j*LjTdYJ+rxnf7h^KUi zEO|(*;!o_U#Uu4=?ijfe-Sml)%$@)+@E-Ow~#XA7xzY9MoO3-_eSQ3q^So z_Dmsr@hmKuDfH4x( z9s2(UMZND>fZfq0DA5hnWv*~|kU!+K6#_}Wz$+C_xjVun<4c%Ht-pYoaG&uo*m+_;=dx_^2$WnH37lZTG&`#R3Blc ztop3Cnt59xiodWBrB$XfRO3fh}0Fg$d?kwzvnIZNTIviG60u@O1)}yk&sTO|rrXW+m&l{h0_3KNx0Zl@nv4 z|6_oN{E&|LvRtOl4GVZ~vLohwWQN!nV;VjDRG{^UQz!Q90xM_k8`hFbm3ojwn=#JHWd9l7w*-A5&quMj8w9LNY=FC>g;ihu zQqU!i&3U-*lYTEz%x9A@U>u@7Nf%gt@D8wHmfbeFx;HpQtqV|E8x+fOY1x?fLj*4+ z`<^r>1iY-m`nZdvUbFv>rH`CK`ZRtADouTj+BuqAAeaj)={HRE5_#e%NWGgWkCl_| z#BQI~8z|A#x%4zGe3dAO*#r=|nungd`**e#|4ZQQ@7>z$%A5wGefoV`4{47A{saWP zoJVnaozLkKmSC%$5?qtbEX{vEf4b33KVYJNQi}QLz9Po*zBVQ?fB)+YfrC9uD2Qt$ z?W>e2q-dd{exHx5)y@IY6YRcu=9`(+`oYDQb4B!VCUt#>_XUT)n{CxPJ(ICPbB}(H znf=L7&*Wtj@cYq)#~;z#fH}`4P6^wm9z!2&h$)G zy7dorwSB>~Gd0s)gh8yA3G?U+*4Cl+6q;zMQCHLDFH-$*-{rH0B=pBVk+7L$A=Ug6 z2F4m!i^XTmbtzWTe_{Ua0e+)HO(%92g?QY2>%qgP#Aa*>ND5|{Q~-A9Xx9++EbYHyS^WEcNeLmM2LRo&hxl*_jr|>#85mm1x(iIM>cq-3^O^!DR-DPnd3DbPcCD9=3eoQX%O|3|@LCkCX z{)<+~Dc>bC zAfM|1u)o%SA$Qc$vc@k=*rBu&sbUR-ztFd{sM%5Hk}1%idjF-ipq?-sb0?QW#M;#@ zxj=mit1?h4!9!9OmLA2;@A7y;y04ZCc%(a({~4)vCV*f*{t(0+VBc%DF;ZLl!h)v& z@8SQJB%&D%y3Tbly4v~zwF2wlQn9mPDxfPQk3joS&-qQ(m2iQTJ^L1&(6u3XWIwxK zUJ9N1r%w=DNr9TqEce)Mii-6)-ze@1Xv0JV-#|9varZiin#yq$_+vg*zx{Y}j$3AbGjH$-Kb78uoZ^&G3wB@GoI1DhZ$n8iX0+7p1ruS-K z0K_{RBpO+r=Wv>Lcigl^+y=c4@}f2ptBmk61!uhQ%e4jp&1n!W&xmF6#5@(FzM)?Q zhA;~ag2lh-W>1k2A4k%!sf&mptm15qnw-jH-tPa&2d1a8a81PqV7$^O+A0;4kipE)kve09LHt3zXHS8r7*0d;D1Rl3nD(V9J(Y(iv5+9%sxy!V5ux?J_wL`b zR}>Y}9hYu?Q)o3Pffq0G=vQ)!pK=8GW7&Dqt|rGh-sip3tgqIdKQ-ZeOzn_^&Jlqv8j1&#k0lY4dN$e+KRI<362 z(S-x2`{k$>DS-f0Ne?n(RNg8%v^z+wqery0ceXvMS)GWK9!{A+rK02$$F}R@t{0On zEBeQ?i?Q`pyTt{Ne&qH?EkjYP`VNdlCsMeI#ypkBkxLm>Q%uiISf!J?#k8x))T;7uQX z4YyG-&!9J%I(Ms&;g0zH2qLHWV>wA-`C_?2Hid9KlFh6d5WH5d`ry$9O)c=!?RhE5 zo%yBWxlbW|xTPh80d0F;w}-ULyG-XciJ5y`d~G$4&eBmUeykP?Pi2=N@FYAkQxcD`H z{}Cv0m1OQQEL~z&iG$2j^_T`08`N$3u<#JxydFXzOseV2Xu;#WIyP4lL2) zLg#dSx>`NvrS!`4n_Xvo;~&N7qeh~9TqeUr9?H&9NRATVzCbS%`?P4dL2V3|${EHq zwa$TzMG%NPt4_S})M4ua{KmOyw8xF1B#NQPLRGY3(_{VuCn{D_y|ZM^1Mfj%9s%=> zr=Gc0p)>0PCYxzr44~gS#C2nRfBWiIK^#})et)lc-=Gl_MIXc$xoxMW?k{IS;->2V zQU%6qxkzOrtRf#1RKN-)K_`j*Le~{!8oYlSZlYru@iuDTk`wb3fMm0VWtD7MPr`hc zc0QsinGO*PM!1g+_iwM>fTW4xToltHMNYnxnw+TaO@^#bM35VNH=h%B03d|ji$VF; z&eT9pI}}l!lP36mVxe_d%@H|y8_P6yJmJA{(DjkTPboBf=rpX1uQT-`NU&Qr+Ia#F ziA0>mB5xwt0N2&q~LhfE$*o~vvEQgrDI6MaY;CN~@}Jw(v{W@tb?k3c26g?yTB112*2u88omMd{!XXdAbp<)8>=$qCfapX+Gq# zYH!P@?SA_;{VlmhhLzDdak~!8D(ky+bCfXVY&GSnh?eTJNG=!%QXH1}Gq)hudI>D| zfMj0ZVtR4JJ#?V@5SW~AD{~r=_dAT>;f(Jq0Fg(Sl3@(yTU}u^o?!z7_ZQp#5Bf1C z9JT##FW~<<25KbaV%${V=sH)$&7n8%C7{4qSEb8$QBgE<%+_uUbR{oBlte^44s^Li zUak6ChWqEFgdXQ0`W9Ei5q;3*qc_T#sx@I!j?ZQ*8OhQ*y~)UT|#~I4;8e zVz>Tkn2ZiPDd7NFO39P`s(;OFIoIYLkFt$nni;xVu5i{9$L3V>dt zuOTq|WASlafJD>D7>L!RwX zRegpqH}iYYM0%Tq#1XH&xKO{9a&1SgxMIBLs^>}K)GMvHq^+k=vzu@6?OES268KQ` z&pTKXs1l&cC-+@R_a+E#&91Iu=on`0dS3~_TJiZ658bGW>8(|`7<#h;JIbfULSm>i zJp{PU5rsd@pe%z!~h z(Ac(Zh<~l8;ER1n$o!cTUY9o}K1)7Xim(=A=MIVTnB}#WQH3CitH10el_J*qRydth zGk43Ue_wnk_D!W(17$V)8O`*=PXY{E7%o>}HZrd!68(x}MIFoN8#$z=+xMG+zkZa# z{IfT%)12l4Q|mhekw^U|<|o?f-B~_EYcH}-zcoYg^6T*?nW=^qYg*}JugQpl*2-r+ zD8_eZ9HpQ4p36++K)0dbj$QK+Vre`gZ8tW|oENdFp~=q@KxbjA?W%~2KZ?l) zkNHjrpu@I%{7Rv7WeD!}C5f#cu1$z=UApWCJN4Pi%*S% zh%>2@-1I=a%{M2?AE6KH9996RhFvL-Zi*;=yDagknlRaIgYRD;vUhQ4UNZR%sl*G& z{g`HEvu&X9P8gXVomPqo%sk_4vU7+4^qT0H3XLsa_^~~fF(3=+gYP4hPI69j>6I(R z3xJm%rJ0mpzb}@^syPjkj$QWFpG*nhBvVOAu+k5a(@$a=7gxNKO!eoS#y%K`ZPhZN zghQK!drc);teyV^?0oXckB@Z@FCyih6T}vhi#dC&cs#tMZH7NTApnrrW@pvZP=D2> zz~M*CcA?%+Jdm9ht=9#Bcd63CNuGC67P==qp^BylzYK@`Gpk*F%MA+N?67k`kmE7@ z@x}1dKMs)FWxXOg5@0y89KP>J;%1qhIs*k^0njc5Yl#NJePqwq2R>jB50Hvw_RNN`tf9 z6Ou`8(zL;}L0gg(+|f!opM9c0*%-p3)i4&vA7hmdzfhH%PB{~n9&}n1kDj_%(1Tqp zhdU4*E!wfZJk0M7!Zb#X$g4U~4Sl{X3QWn3}6{e5~Igm?4M=jSRVpgUVBlKx~ef8&0| zY6(6lcdW;htWGulE(_h51bifhpGQvOCa;rA`_LgaXMkvb;1|Hz(NZqsR?Qrrz2Jj2 zHIw2UJ;DvQkqD$yB>x*k_hSwjMxSCqL-7(D9x6Q#zt>%&Jn3^N-**$SNkN4v!Ae5E z-GPetkOiukaMTy(cTr_iV57}y;9fKA68aOj;5=)x&wBFq^4U7R`|GA9Fwc=D#eTr8#dHvNTKk- zgHL}`u~TwNMhlHt4xp!?uCDHTsru0>85ej)j#pV#|6tIw2uB7UzqfvlZ(A^a)A5o8 z%YlcT(_i=XV#CIi1{v)%M*bTDwXD77o%d?lzKzwE5b#sH(w|lT7RUU{S9B)#JUYe{ zRMt&L@yVL@&wARSW*E_-rKa>)0jspQhiB^cSA2vlaqOXgfj}%Y0sXoxSSj2jlOo`) zT!hJ)(heYDc`aX)4#ghHsvf6Pw8jJgNe2!TfcQ7`)j^Soub@$OuSU&5%Wub2qs2JY zm#UvuS!ufG)Z@0vTL0N{BQ>4~ZrKl$*jq(k_Rj@L5Tf|^oFFxKc~F;=y9M-2t{3*X z<@wJ@29(VboRg#sQz``~QKwvzC_hJ@WI=pHNb2n2u8bmknF0^Iey212!6YFM$DNFr zB5kr-cOvTTq&(M4kk23b+XYw8K-L~-o~Gk-I)}-Om$^v?1VV3Djg~W*J}hNCkoR+% zLZBaRsf2!CGRP}J>nM*Nbt@jfRDTgIh5*v^&cH{nf&TuZ zf1Aq1xzsH+$7@4pDz;9y5sN#rg3C)RDzqn(A z@yN@(KizESDq~}aX!Ibxbju7_E~UTz<~X|!W)2uliAja{c>Y+QjJAUn9|;&FC)_h^ zH|UMQ85hCgJ-VC(vA!LiAT~CD1VK1P?pIS>i7Jo!uU1lFx82!IBQ-<<#8&OhO7c!g z;nyNqmOZ@nPu1=AW&1_8#HsUbhs4j$E~dhuYl7wuB*`-6vSzYbmIAR%w9;D?3+dcq zUF>1J)i*RZe+gVh?}XIC9v+;l%zuYtF^zb+QUdABTej~pYmX+gE{=SG7MmgsVu*YdsVB|OneUc~&K#&Y_$sD!5yCu}(H?Ku zoyodWgZWYv{X!J-`SA>}S!VGQRwp|;FXAiiCJ@J>(5~n#CM5rf!Ni`$(SwVi=WO`N z#WuHs9e?eHqO*ZXu|+49`0qkqHdO}nqpI&umWLEW)o30y@t7t`5ArOoopJUj;PXek z6JYs`)`+H6w$WkkPnXXRFNskKy}~B0T*XvUknrqx0uwK491@?s%8&3!bx7^4(Nl(T zA@Ifnl}WRS!vlHuAJ4TG#`yVEufGL%%7qkkJ;i&bB6m;tqJmZ^io}t3gR4t{+E3H> zxKortc>h6kEmn+1<2_KglWn1clGu(Nko#2gnOnq59h$nibV0WgQoYTe#!6-z_m6%? z{XDiLvDQ6%v#j-miyIeLN~wT1dd2~I_3us(P8LPnbp~9TjVu>D-T$Ydv`A*4EVuzA!D&MqWJw1wSDFTG-JI zQ0df9V&jBaWSq~mHWFm9*$%iGkoc<+ay#EeptoChUaP*i?AVx5+&uzZxD?=;9QWo! zeDgI7zWWeg+{q!MJ2% ztpI)9!DqvOoOGhDdgbWcl-ucGX{A#_E_S5dt3xq*J8!1!0EWBdp~7v;@T5^dwmD2 zZpj7Y<= zEug1juiK}3XRGy^m+y%&VFEh!BFcZ53FW*)QBs;1*bcLG@RtzWpt(>6jlZwTjL_?P zItgBO0=u$vm)UbMQjh@d^K;?{U=~$q1Z4n+4`M_*#UYlef*i?{xHQYsT^qcKVGDef z+Ewx6ClgB(v3ipp+`_k$tIWkuL ziDcfq>gpRuErs zw3i04m0q%*+IJPSuSzacr?F%U(7fk*eHps!Dn{VC2bNZGm|_Yt@citl=K!_{upk=$+A5(s zzr;HCDG;ye_Pp&vszz^ePa%jfPa7fPz0?dGA`e+=R^L{aZ0niU#5CJ7`E|SIv~AjU5M;e$h56;!z*U z_KIuS=r)lEND}1Hj@zN=_agcAd_^S$*iF#Nu_b??$iEiRhRc*FqIsoEQ{V4W2BlZc ziM{YX+sN+yl^J5M-eDl_D04tA445@xQ)aNdSaUjmcF9tCRHZH@ay?A6EhkGqaigd1 znizeykwAnx#GoNAw`JYMU*ZbkL6rkREWN(%O46NkZIfGLE=rXx`}?|Tg5x_yLIHLM zW6cL4muUO;9vm(upZz2~C24mqHH{N64Cwh-{ONP4Cx?CYn*~8SpGcQ zTX-9D$KF9(BMMnEz0oY9#P?7FxXrv4LGMU&t?XYYJ^$0FmcA)%uYM=R_jmkPEBhEU z9khp)PDU}&?O#R&IrS`?+t_0aq7bevaXmci7}2jx*9k`WZ-ft}Z=Ox0^~fwW#bAgE zZcDT&jYsYQQ>4^^C(TovK}UT(>U(%v+O#&=tiTlXbMOB!9aaD0lm9E!IlAo~yS(CD z$0~-4XHiQ6Te@z9K)%rL#Pn}u*I}>- zs(@V9#3b89vOPn?TwKDW#ezPygXW0Wtqadz?uRnG;O~ceZq|rfA?UG=7g2vhDn(Sr z7JB-FmY+5^3Q2hgoDB^(pccvyNmi}&zI5WOEn%<&jE*<5h>4Y0g$*=329r7^#y{E5 zNzPubQjHnB5jA%&`lhPt%L0EB9WMxNtIGDlQ+4#n?m_yn4ep%Y$DtHqKJeBhpbG}c zn6&1IAW|rSfTtgoGu*)FDCBHvS!JRlOh}(9ry3_sDG--6km^#)xGnH{YPnV==^K^u za)5XKj`^=H3v1fGb4(Cbg2puD2wo)AMi?a}*CJiRornx{2%P)lcT|iby?c@Ihn9=s zp!731e*7a?mjXJm<3JX$uQ;0wbLQhCREc=TzQv_bpgOH*}epi~#P4DFT?%YKv?#D^bK}Jw-mswu;=0BF& zsV82`e*C^!+S=RH1nUddArIEnYEF1v($pYKM8w5WIf1L}|;IT?oi;-D? zpz6=q?wsCKPGKP@*CI{z%~eYmB1+^4|RC5+`4a+(CAM@2Yl2sGafbu6@Mf1nv8chTy`Mb zoJ)GmZa2a!AL&MNpB-Oam$!l+w+}h`9h3$xc0sG1d1le~0bLQIiGZaCDse95&v^Og z=st_PQ<%>ltnV>)Mwx`S)-z=2GBt8!H2K??5f!e%L1nSIj^(zGRM{`tV%G1MXAX}H zsD6sCBd2oqF>T`*q#+JYIen-b_byXI!EzH2_ak25C@XA>OOyxMd@xj=;8K$N)LP0V zwS)TWvsvGK>GTV1(aYtXppyv=m7pc{s^?#AiiE*aOk&aGM+3$n3il&g9xn!P9pXF| z5x#tK79Trc5U(Q65=-o)QM9)Y_-C3exHgV8oz@&X|Mjx!Uvhk$0U6zk;|$hoS%|TX z;K@u=jHVWH%9AD<^IR%Zmqe2>B#Ux!326SlQ;@M3F1R^YU6Uw~Z19~k!+S8d#804? zq*ara=+X9QAtdjzg(TIZR$|RHTFS@4mBqwCe-zy<-f^TWBeC!lWb<}jRO-NBeRvT% zv&T8bp5AJ&G|FvhQ623RfKQ)qwRi@}H^_2ZU5a;*P0K1VTgXEEU6V)MSRY;w>-@5F zC?=vM3^I3@3fR(@Gq7ZJOAk;YoTahqiLP?e;CEKHX_qG-jnX|Iy3>=BI)%X|*akVao3-mm%mba#m%%rCeB(HL(24!OAwxy-)2cD_B3_!}2;sYlYDviPgdgDnenRT_rd zsGPax(i{AM5}8cGk}Q+Lcvhio@Mcp$H6OdXqAuB;xSg!a#poUXL`bCUARw<^ciCMP zR#L!xSp-zFNmF@3xJwFb1Bfb1>>&Hqw>4ZfpYJ6II$phTm`q=)OMl?9MsKc1M?2wQ zf1(@}2=i=0Xl`;Bz+^vOBWQ49xpab)$$6ePD)C4BD{%zBz&@T@;{`{N=>c!QTR@ww zuEwvxIc&Z_?H}f~Z(-%A!3a*G>(>`LJd2~Hd6J%DQnu6IReT!w3Iq6+E|X zra2dMS=vCa<;I#_9sRWaQv(x273PyX1JK2a2pBYE_+C-m9cPs}Dc6SXL zI;t>AS*6J`vC+K3MY3rof5qHy3@D9P2%ZF1p z$pXVQe(YI|l}96c-+Epo@scoeTlEU>;_R0wleTRM1fMzS-`1$ZUh3D&fZ#d8dTmOo0k;D&1V~_n+e{>a@4S=)jtc(uBB<1`2 zp1Nc6l1z2LZ?S~zasfx2IdslW0$*W46T)rGP(%S&9hp=sX9PZ??khjCT*8^Jnisbj zyH)~hc;u@>0}v+;GL<1K{Od2WtBze(iZ2?!jA0LHtKzRN(t zpd1#zL%T1I>fmj4gG7-qw+hQo24FLLkT4Mc@q9PLo?8d5WN3n6x2C@bq;g*Bn&@v> z^$FD%6q*LwxG~S$=Z;13v$z$P?JP9d#;VwvmO{zC<{v<5z(MOG2a{&;~F~ z?zS&JBA2LUVt904Gj2*7Z~54dK6Qd$Gie5tDRZ_oA9%ad-c~g~P5Xxu5Hd`WKA(RR z%n2lOW@UdE8TFN&n&eMfjIccW^4=~~7c|WFPnYp4G+6UM0ajsY5Wr7BN*5oC4#>q) z?qv>i#LkWcBE!2jE$jzy%-m3yas)MSR%)m|0c&pkmGR(LciUXYx0295A}@$GRHWGq z#hT*yikzE)g{Qk@&(4=8*S)WB3azCD7jRVX)~*sOK8jte9ppT~$(S@$CEAD;-UXHaOO9;s!KU;S9WC!*Uvtl zIl8wK-ygS#pP9Gq_-((aydIy9QmjS4TN1g66$3A_7T4yc@w57}UNhY@Nf9I;xtDF1 zNiSIXJ3V-~jyA>#oj45A_4Lf6^S=3+$#f1K{Z_kwlog;KCyW|ngYQ9}-F>8#J_YHy zeHgIowvIQ_{=d69`GxC;x%-V&mkmX}KG14bu&8;U!WOJ27zZ6fz-jvAq3gI~|5(Gy7NT4##?wE?N&RT>a?VkbauiiuVyR~dNSRrc7|ozoBT&*EqFDMIhfd$@ z+8&$H6Bkp}-=gnb9b>TVS|iiyvqio3$lHWMy4Yr#iZ{es?9ok72@v|sK7_x9kBqk# zQ~p9^asKK;Wai`Eeh^-;hEGo1Z%I=>>C4Lwg#JOfgH&fn&x<&(H*yvRqcY^aVH#RV z^Jr?cV=zzOHuPe-V=AVBue8(%t1sM}?a>)H9<)QPZhSDydN4tMtN0;!&wIfFZ!!wq za474r&CXfRV#@(Zo`uz$CeRqIrW(YQN~qGejD3Pt1Ts#Jx7rSoS!zBS)J`etT(&vS zHR?dV{AEUa>0O?ld4xrlhVS@{ouP&aTvxTTr9_D)cfV5KJ5iHToVC+k+`FU$Nnf-k zShb*!qn+NAy@N`9D|GZAV%DS8>SVMT=Yqc<3a*`0EF%9A(7Lqgwv#rs4#n!UTlxcU zK8Y#d2+T(ER3NOfc^&By`#%WGc`r8FxrH-cYyhqs1QgkAZuom`rR1cU-l7v3rF+2m z_6QDRN|h0ytcqk6k4h64XL%VZpt8dFLXbiR_L>lI`{_aH{9k>9^4BTt_m9I&>OAr5 z@BK60<)Zrg+zL+X3Q$B#znK@irTLmzq2E~lWeav&iJw_g%KZoE6n9)GywcnH@bW2X zRN0m}iEkN5knn4l410;;4{eV^&lV40-PJy)-sLAvpvz=1qn2)`VVxEAXX=5B{nUaM z7FHy+mt}`vxDz`!m%V}NL70GM5qDhYe? z^~=}&#|6p^3kv-kpkd&kRffCL)g2bis`m{2p8A%KDwQsYUi>IJXQS&T{u}#5wXf#r zry5*tfd{xU?d2ZR%1q@8T$p0tN9Pqvj%qn8w7bJ}6tbVZEo0#xTg=8v=ipFh4tM-w_a8ZQQYUh`E z0T6foeh@2*yA09(TPiLtms&2=li=&M+l~L&V&UwQb)(6sT z@_};D{9-y>Dop*ASE6CD$u8$LqX83lmC7_5>K}1i!ZzS?M0bw=NAqTbgVg@Ny@3DO z!uhxP{)dP zGj|z>%&_s=n4nFNy1s)+%9UVr7jKDk3NC4lHv{^}=U3hMze|6d8=|3zR1{||u~ZG7Cb!Dn=y zhi|ofMLKZWO`NY6Xn`Yv&s+b-O|def5Om@0tNTk2cw+BJdTIv$TywhG}IX#hcWaGQ>$5yjpnwgu6p@0(aACc?)ga zs8^}gwHQdgmohR3DMJKaQc(o*RMSzywm4O)znH1_cd1< z#kZ5EZjH7Nw6hPBJMzhuBo1apFsmrp)dE0J&PWYc$w!rk$LuQE&}$QR{p={~f?>)D zJHiA>ZwL4DzEXh3URO7d;kK-{F{%VhvGzn}gK5Z{CX^+OIA$q(AXr1ZDOmSpLJYe; z<0d&&hbTgu9b^Ux20UkFhP|X%PE~^1Nvay3EK8!6g5&li{suJT@-x%7MK?o728CS9 zHIC7&`i5vzi!EaKbF}5n3~CA%zpbqyxpfCjlFMo$^c7Vo8$xstZ)(Y22vght#!N0_ zZGJOWG9;dRD_`+Jq5mN$=N<7>-|IDl^w|OF%`)7!=)S_9zfvwff-_t3QWxs~1YG_84TK_^{+ZAu}ric&auPtrzdYdKJ!* z>*VY-{&UDcA!RC-7WDAK4?kHc>%CVm{^)Y0QIegACHwaJk*+O13?n%NUkbX$hpN#& zn}Fxn_XoHqjdLx2-=)>7IuFF=+ZOnGx^GAKMq{G=?0?=XU6X_ZIt})hEdXgVC2kZt zKyYPiID{r3T>ku3tpILb*#s)m9LOG&11IKGqfu(UCrphi6?badXni$AY~`N(|GI6X z_Nf2!XsHD85B{6fmDRvulVb|V!)3tmCoMsL2jYFX#%&L)v+TXd1{j)d{Pq^34bH=?L z(_XOFN$3f%l*`M%Z(3(qlBCYTz1s^Cos2xb4eP%Zvl89uLJ zk-<6r#BJ{Fml9&VEl-DO?9&)f{3WY#gvLW_m2e5o$Cqz*;X9o1&VHTsX%q|ZmPTRX zAa*fNW#{otE^Vi@)>uiEjbufe)~+!S)_n1e05dSmeO4?B%50ut@J*pE-z@Py-W)U$ zMW(lybDoyUYS%(J4x+KlGbkB=skl)R@k;y*BLlxp6#8AF_mi%t?fGvT3kU(nScrKC#YZZzC}kWFZisdAL;Q@oH%B;N z^ck}sqSxI1$&N?Cl66$XUq3EnC{Ogh!c|=3#R3f{9RyOuHV5B{x8Ky|dB7CvFnmFz z$_+aV(+h}QQHG)u)(P@PFNSEsm6eLUU@xjvGLJ{A6KsfrYB6;-#n^eF(*2~l7&{|V z%3GhhZ55CIG;JQ?nl=RiH_&`Tjj>#nQ0raCak`5k16ksHYUboWjAf6NtlCctK3bh9 z-&Fs@F-N=a$1S<&J?t52;j605Vh_)sEyi$rb4|usxov8Xc3L=@x8+NcWpA9 z^JvNY*uO!$=La2uDSs6Si0(UX)cKE=`?HETy5Phv)*DIIf98 zirs>~VZRt?IM2Ma1r6E_CCToMcbnp%U*vt9!#UMR72M;D$gz+`gLgdyPse6 zi=OWM@{S=q&06Wc5uyv*9wYXt13gM7rE;{R>-rzYjlwIGK#+z%7%iRg!O`mHmy6G*Jv@=kEqhv_d&RZ9DIDcR=S%VJz(jkSXLwSbOTC(tJ?Dwa^ zs6B$HE`A}6>)2UdL$+hq^Xpd4M#KqBQoP<$WEP?k!|VNM;7nA^{FI@VLZ^!XeVq#% z2Wz;je(CO~{8nHs*iBWtC)6~~(;cUo`N>*pHodr?5fVM>-dN7077g$oFtj1F`J?$0 zH#xXw>jfD`(ts%Mg zHY9cC*S2Z)4_v)Q^+eg(znvvWW;M3HJRLxYK z;wN>eZuY(Jwb#0~;G8~-uhAj)Q-e(|&Asb4Sl=>x)?>wzO>`hIKn`~F;Nx|TZLxt- zkmYH)TQLngl&RlErDcW3z_-}y-kCb>DISI1=TYGg?~%$BdD0%AlgkDTzm}3RKtYOA zV`EJj!8UZ;!S3KFDgVI`+Kr8Em05B=N#jVsEWn9~51+!D=_~L0R{@Vldp+FD8uzqS zu;+@_C$W@`nPK8d7xL3v-{k1k`oY;6#|Ww!!6cw+xUju6UPUqvN%j0LA{1;^pZDX` za7m9~@W(8W$Y=4B*SXMKOW3}w*X^9Hm{{-1o;Gb``88EoRr#wFzi_$<2!+f>Pljgy z7!!=7h@kB@+^ST_BPurM9g=+1`68W4Ys}c|j@=2IG;YXF-j~GZ9|pPB=uE#&}$mMC$M>f zmPm3t&drrXZ>f_w3AA<7&`eV0-#v)^h1ptbC#}qSXfM}z6;C$xFhXo#4Roxm*=re8 z+Qs^oMRsc*Nsn<50{?+u{Sz?QaNA6oBnei3tnl_&1Xnfc9U8!Y$*>`6FXFI!$A18^ zQL)?(bDcICkFqzFnyMB=ZD^5s7hA$e4D%2tOtih)Cj)awohgVNmQ=>( zD9X~|m6n$7bbORmT*XBY;0WasNmj#T5_#rskt)cvN& zuM^7zZ{K#nWJaD0riU42i%b7w3>linM>qDdoYH6CFQEAPODtcWlxR1v6*sGZkq%UBqnXK;>__!5WbXr zQOPY<>?u;~vWCl0d~nBw%FD?UiQuva(RhJ z}trb?}**$Yj8nkrz-xa1pR-Vw0Id&{o++T3iF5+ zN;K)j)?1^upG$PuXXJAoAaup@{7WLocs4zx3g{h?mM*{y)LX_m4r5BGk0Tn}7-depzkd$RcU4EvS4 zoaI(RnA%oBCVT&geAv_C0X60hzCHaw&F^#uZ|i=4Icr z^g~Fut8f1-{ucBD5CSR3Flnfc1S3u6dXcFLC*A5KC%q~=w{I2A7fShJ|%A2o=D<~_y(ohw&c&7n#c0;jDy z)IaZZPnYpz=9mxrlqYR@sD$OvlQmuLcc+n zy5gZ#B60EaZbCJE9yOn@d(N$I31U7)S}k+5+j#gvW>{l+7%m+s&dhJN1goFmIZ3r{ zCYY^BGfUt!%f@w)))gr#}OKO%_ff3*ONTUnr~pbgCxawGs{hn;20 zA8p`NUV>*-6V9mUWkush_iYlAmHWa?8$V8QQ;BOuWdn;J@xP}I6gv;s4vAy?O-AO8YWVq#x4jxWjp!v(>rUyMA^;Pcr8oqs0D*u4JL#-Dd)vt7R$N+ zAqCWh9(?~2MN>`R0pmMzd`%sL7%7*T_sa>>M0$xsk+%ArzIf*(i&D?5XBzK7RR4AB zRA$F4J8A<+In=e12wDxT)WcpF4zIQcl#YA?JfS-yoTVv13=D%%ZDqiOQ-C@T;T*L| zi6FR_RsvDy(K!d@Tgvb@v=pFseD8l>h`T+YS%e3QP#$IwP+j=TdWf4H#LDbDT@o>t zHt+qzQEn0-1Y}KR_f7VjxU_6Sj(2L&dfjO&8dsvfL=wrqSG^!NlRpw{!n@>tOe&(z z%t!m3%+HH-C9Z(hvm&D8+StO-IE$*kzMuqX%IiY9&x9{d8P_lV)NW5MM`$P6UeQ3_ z*DC}$?wV~Sp=%qt$Z8?dHPUV7OCmNaVDaZg#=cs)pdgEN8~OY(zu*JyCAEzwFh3$?6tEDeR6yeIca5@^!khHhI{6JyAX za?2Ty!kCy)bFV(U!;khljm4F}ajzgghE^mTtq09!%5jXJAWS%~V^gLN$dnxgRO|QN zV8}t-oZ02}%yj-0PHwSdS>|umS!hLc>hr6a+A`>#ilr^`?|$M{yd7JA0vvLWH(@?X zLi^}DT6>27&_a8DFZlI^4656v_!B4J!n?WlGhg>rll#iV$D0#Z7`_w+XZENix^ zHA%BgtgNqw8WIgLJOjvy z85Y&!HCfTnQkgRXWn<*RjV1Q`Zbjc|ThU9ffM>faMJ4*1{r0`ZcR(1yZVoBe3-`aM z2fc36vDS~&@4y$5q)y0f=`?T}p*jL=lKbl~Hu8ggy&c%>@%<(tD@b~rEPG?(oPb{p zTc9%CcYYLI>_m0rgDRP;xF<{0fuDqiIAl=uG+7@ERFj^W_yTJnIxi>WAcr|(>z{hN8B&s>f}&GsxRhAWh|$*zQ) z=T#sDVn|_wWW4vTzS}jQTQyH5;0A|m+$9}68wfLO)Yvp1_EALLOCM@@ zy(A&ss&xN(W}MJdws?FsHjmFuZflwTD~Ex*7fbSb-R#TxGowtqS(Aw!;0~bwq6C!1 zm2=_!P|4SIqS2YWeD`EWbK|q!rrdZb0pp`^+K&D?k?!InRebpe8c;@p4VYA0yb|B{ z@sYoRjgWYfspRWTZPNHcbdqs-tRjPu1Oebo z9NKjy{nEaPpb~7HAjWskxi;_D{WLFNwh86->L^zyDcb{v=4pN!PI_+BkcPc}8gq>K zlZCcYcMofRt(XZ%%Kk4-n?G?|d)=<1z%`3;YtVE77%0q6A3m9GZw)gZo2`DDJ@)BT z*Bv4!^e6i|$8sZZU5V|@hF%R*vEIih%*~o23UE#y4#e`>9KV4+Hb1v2tzXZazL=nl z&xA{Ce>`SBcF=`JfPM|yb6;`evP4|oCwz|jv9A<9ZnA8?|5At%Y>u<%ZeZl|BXt7l zmfc!9Cod)1%!>aW%b?XxtG7lq^AWXdozc^Y+v>NJ%VQ2Az73}6!CjUUDP97!bSZ3Av+Fy)`@`>vdw?X^nJp#~|VTlxPZ*kV2bCyjl~ zx{n%Sv{rh+SUq;P$HwB5Z|98w1B$t<i zV}f-BDQU)8=->`AWH7ei4Z3AdhN@|TrFX4}(M5A5|?eOwI1o$<(#T7W`eEc-eT`=tm1wD6=+jbhIKo zdptb9=u$YVYW`)oC-<>vXxH1(!Zhu_$46ua|9UAI8qR!V6tfnj#QSBqf1&naeS zg)KI!#isCS_;hZTb^UbrLo@o1_LoI4EHiJ*iYyrAkle**FlC*_=aE_o0cSs<(f!o} z3HA6Ct}HgDlpm#q66nd3>Ty||h1_@18Dc}Frp7&bjg6d&CtGF@(Y_T61VXhx6ppGo zzGA5t{rkIrp+SWbC(LE`zR)=SD8y>!T*hg8!c@B4Io0*lk63T#Trldf64gcgD0|)` zbcgYb-1?uH;y5wUsh`R+iXVq$qVJ|z6oaVy zr)8|wr1VBx`4}vJIieNKgM&$xU$42BI#fk> zD-=vZEDkTJwTI7EZIZCBGua2*xGl(v*h)063&@x?DUN`)frh zs{O5uL)hE{?{e$*FQ1e zi8up(9X2zsNulv^Rh~~6L?rpi5+&bF^d*C`>c7d*i;R9 zO8}jrnP6g9_d&eG!7Qb{oc2jjK2YnJ(@Odg43{F-m)1~E-k01MzfJyL=9h>V45=_j z6G3vs-S4Dqyje0~WQ{8eKn{MLtM6h(P!h|d0lQg$n&`O8^WP#KWcCA+`RaKS`~iqB z;(4>0S3R_eqO|G9ca9tG1 z2@OTiIzkfvXX6jY{+d7*q>)%{ikB`7BGb-2ti&jc(pb<5O)C z5A(q6oijh(3l@VDuNaq$naP^P%8aHde3et~Y{WyKr)xuz%*TlyJZv)b>xL!K_$Fxa(&LOs<9MQuoXuYi%eW1T}%p*1wN_bs4r<;6&n&2!Md?8?JmT*^p=;YKWVNV8(YtO`Q`W*> zdTmH-+_6To(fg1)(S_osLtk8u%q!})4WOD-2Au5Ks6qmo0Bnb)({v~tAcg7CMcNfr zm3Xl0w5|@aT2~~K0127qu+EZF@3o^&`FC4_W1aVmQMe1tNm=jGkjuZiQ@EHuu#Sw~ z79_$YGzYRMiDsvPx*9KLuRoE6JlnbNM6%>feu#?`C9+&`5lM%pr0sMI66F855 z&V3?-K7ZiimOsY$;a@BSr(|$F&{w`krtvSHirzWBTX+9c(-y~X{S+Vw_8Rdo@7Ec5 z+O69U1wW~Jm8IeP`dwK^2qf{>3Bj*I{ay6am-QXvct`BLo{n;I;Wa&#%+HNCdm4Xk zxO1RNOV3I|=iEn^qkzjeSoQkj0AJ*UMtd$8!9tGkD!Y_YZyjqyO~{(z^IKbm)$*p2 zSQ0<66%5yFi+fSIK~p_`qj0_1RQMd;bVTBJS&*EQ-#g=nc(fjI_+`OeL^#NAGwgcW z@Yil|KUfo&ro6v|Z#ygUWr%W+!A8Ee?i3koDJ{X%-30i#*T0o<{TlmBIFB>WmJ#Wy zftsSifc0Rpn{01kxpCq6qnwwN8PYf4JVrl;$a5o(j}lDQ7``;V6&X`#NwN-!UqdJ@L>_X> z0!+qp+j{d{x73=DNq_px{R2faNVEP{$;TxAHP{*JM-@Foy&KKDkTMhQ@j!VU=lgT~ z=M7;RxUcQX_O6$KH_;j(LS^LJ~uq=`1d}&qStyJ1(Uh$0Wk>5 zdBIt*u@M;gp4%T@-UcPR@x<`V_}R<*Y31X%Ei^>aH<_kXQ^M2>7{ri5g`>v~r6P<`ZnuDtH zBcu2NmoaBFOS}S$OcTC$k!#e1s-WeAal%7l;-ul_Jad}3GL}bsQ={-w5}^(a0CGSQ zkCXH{E;QNZ6`rEqUP=GTA*WnX-4Qu^)!oaH+5Y$M>Sx!kj+QQV)(#k0VbTfnsJG{?t$>LFmDbIpcsKcHc}RX-IS;9&+N-f4R?wGZjF ztw`9mqDLTXDMOij6?muKNd~mp{#22Bg|)rmw5Xr(h=>Ep@p)8+AYYi2LY5MhVABbC zKk9Lil;ppgCiRHrLoC~2v+n`UnZ7(;{;U6n2QjvnGN-bvWfat+{lw(NV>>3XWro>h zqTLy*zI=SP)2qXfH$?Z!XxT#OApcgPsN&J0osJE8&KmOi(H3s%ZAtc11-P#C!dY*B zR6&kuK6!ntS+BY$gjLy3mnK(!kmULLhS8F5H0jnd=X2PxctrjxM`9m@)v!r5;+xRh#AgxV zMH&{r!AiwwMT|sSX>`jrjk7`+ToG;&si0V}q5DZ=0{4s*T<(4tj#oS{2s4e1F+dz4 z&=!=FW}B1(t_{O`g|?!0iI1}0$+>V5W&wHGH1ue1_+~|4Xf1mmY1Wg<1HRtn_TT%v zP6VM_^z)L6_;vYZ4m_}v>;XLcDjCsM)qH8uLmM+QG;%rj!x*I2#GDq-u7DA}sa55+ zL6m5#ggbM`Y$RJvn?_->={VXJ%FV0h!*J4(u_!?(gfwU}A6hNM4xQ@-HZy?YMf!qi zm(omLU$eZzpMe9wypZ#X`FR|;TZsSqgiCBhYI&3l zo&=2C$L^By+N~0njlfdSkbWvHf?mTIX2v_~JtDP|A8rT9hhqKuEUocoQ*U%;`LL`X zh!;9lKGnL*9|wE(DS3H0{Ku*MFGT9g{q2F>4A%Hxf$Hc`Hemf7CpDHwRjf*FlH{%-jT6P^nG4+(6B zgP{Egku{Bl)cu*PL!F}o%h!~m;%)w?{{%`GKyEZ0&;wG*dYT-P~ zfgpr*0^bJ61R98#h%scPz#8kuGDsOUa?^C)|`!ZgDP)txC zRG-^I=GGfA^D4IYrMuur1!~>q4ZIWKdFD@`|HD1_w6|lTH>Y*NgVfT`zGtWB!7s#^ z4=l=e<-WZTGy%pgr_P*emQt9w^;IIyMOSd#Vkq`oc!*-!yTSOE_DD9*-_6hRgI@lQ z`Lykd`9QD<|lE#OTLd zJ3`bdvvI=;@5JuiUxPgVgW*H$?-yDS_+1~iOg30AP|Vi(%REi&eFgi@cry1qPnlPN zxd`1VM!iG4;NV&H0V`O}MAQ3vz_R@cMe>OiO-&{H(cNoxI-W8mR;kAKYAsnP=1u^b zuqMl|fPqyUI?mI2M7pI`&o^gT$I*ekC|6HIIHt}Mi5$% z+JiXvd+>k93P}GQD~z_HT;*Wo1l_JyNST+Mn+TpUVN#|P9lFoK+i*J#bm)$yX^o;g z^wgJA@X;9pBI|O=XQD+8{5KU zDh!M?Wh5{v`j<)~x5@sl%u3p?9E{-r2uR>7tO~I0?!upSJQEo68)JKhL!i{Q;r-lA zh8Uy%l);PYSzc4&>+VrR6Bb^L6YSio_LwBoK4L75wh#xO8M6atZ$q<4Q>H}8t79wLeiRm_Gpsmfabv{>S>gd!%* zZNBoA45(A!0^|9C8P(^X&F>NjlJ7m^y~vXYgQQ5Yjv9a5vwsRtUVT6GM@xwv!08^7 zfs3Q;4@2v1=oemrXOs!F6UGTkx{w)dr_$P61r!N#7n>?r9W(I@zW7NQVK3~IGB3(r zM8j~?edp3n#MfC2vBR}X(tu`|tT(9^kFgpea>>rBH0fb9h48^t9Up@wp1a{kpQ{C? zGPCyMtB(I9EU5Tgh9C|>?orVMVJK0@g#Ym+skoF=veKtR^D;H%ck~WEgkBY>nga@9 z`nIXI4Fdt+!Qrje`l+P*~fz!3hG;if@XWsjFzH|7^X9Rrx|iVq|>haR*mtKH~>v(!u?aqxO!E zO^({zwQ>L9Uuk~QoFG&BYJ}219r+j}aKi&baAsq8y!AN&OXJv^O>2dkO>jCVc;)k2 z(-}>YBZ!$KlxSR;m$_HooIjhN0SI-i`fdJ(9E244Xl@O0c3<; zlx^M3?|jWxDA_KwB@C)0iCG_SPMXH9`vi(9o?cN*@c!vlt~G8u_DjG9alfZZ78s7= zj$0TK&G@60j78E^E3j$LY8siJpbP3bfZ8`%o5wucTsA!pufTtD=?zT?y{zqKjZ5cY zUUJ>Fy-!86(#24@6%;0rw~HaELJhMwG2&PpTsx>MtWD(ds-u0R_%OuxJ|Cu5A-z6J z)k$u$9!uhmvZOt*fU@K4*m>#w+D}zu1AsL&FSmf3S4Tunp%Av)_*=Vx+mf(FOD{;C+@$?}Ug|`ygx{f{3@Y6|9CEs!B{oM&HQ|lL4V$HUv?9OUph?*k}Ix6_1jSEIh+wS6n!x zF()gyCWnrU8DU*TeDy1M0(Z-;-k8|K{w;W3SqZd?oGsD8#J^_nW#ZxM4E z)+hf%=pD>Ew$f4I8Py=w=uj67XU9|Har;%rv_qvXGo?on~Q_5JZzlJHLE7A?Z27u3t1C5U5k-xMyQZ;@m5xM@T1}TF+QU57JJM zLxz7;5|?hi?fCK|Z*i=>k-cBPOsYg`t*ls|37b%Dy@&E|5j0p5Wu75J;-kk@4!MPo zJidtf(18Q*r~{~T3yHZXzOU$QCku$*Q{{qbX9@3RMyPjhbSiv3(iY4G49i&b#xVRH?2r=Ud#;e$!h~ z0gr7-mNxwY6XM0$xBsgJNco3@nEDA#*s;H|DAulC1bT3-Vzp$Owv<>+%Z-|oD}-;d zxXvbYwL1p!Au~4D;60t*1DUz)3HR4b9cL+Ef)C9TjT`(ly+gGTI<2LKJ;7&s_>u`< z8QIrfzs)j>*Q9${0Y<3A*5(M;7yg^H+=g4t^hR<(tacO6Mr!K~hNLPIv`5s(I8#X6 zOMcB{xds^BX6YCFP~dSyCBN)~7_lXlz*~4S^;XH9{D_+677dH<0?&TnM_Tsv1?V`u z!!cgxL;1>5xZx1rgvj^si#idd>&TR&4tn;bp30;{+|mV=5<`I=UZjt~rJMmhkE_S77f?-0Xx2>02^CUh zfWUccRd{+_fCs2uBH%p8xFrn1!H1})5-!uj$K$s*=sCi2+`ld1ADYZZ?`Q^qq?l@( zr3044lGIl{(cu=}f*+AV;^QjDCF*B+}GC)IqjVEwk^75Eo@7o)%p z`^4z#PRE3y1oSC5BOu~C=Iue%f0iaE;yENB`x7JCiyvRmVG?lg1(a}ojDRVdEY0aEKEcjin_>0 zb7%Mn$RUa+{2A;tO~#E(Wm7Bk9OI5$^aLCQaNCG+>ll-HKXe zl$^CQ0ktW0ymMA8LvG;ju_%$v@W(?rs@LXM0!ksE(LDMHQxYEnN7RAL3At}r38%dG z8pzJ*4`{_a3=$X-vtw&ytW5^r9NP&=nfb_PZaye+e8!iamomxk#{;NNDZ7+pY*WKp zSbz7WjFE#fsUuaeIel1Kp(yY3b&H6=N7Dr!Q|^S+x5m4OnI>U{&KXWD!<`xlv^r)O zl~A%zg6!zft^@L!x3OkJyq7j!z%+@gl^%bd2#zK-=2hp(?O>inY+HypP?AoIba)}U zIfv1YYE&%6GODt$;bDYtTV~kv+B~eQltG#%gtd?Sl}KOU-%^=kISJMz(vZwI`S05@f^d61Ui_Vzk7N4d5;97?XgA6wBR|QtOqdJ;<-XSsGM;9aEy}i_ zr(3I35Bqui6PIstJJQg|`iN4yt*`2Iq(}V5@OsQ%r3GI|+=-12gGhbt^>h|Ht=@t)UOYyVNwI9r%LpdshECF(~VcGpsqL9MycmVx{I7iIvLl zwL%};AN$B?DV6_Vg+k-v6&Aeif0J*0mFwS0-*vflJpUTGeJ2me)=qY7GgUKVbv`Y2 zE_v%urj)AFmho@@0({8jv$_dkhTAdw_k1VssWPxi1GQcoSfxSYpqXQok-FLU6{nY`_d`{q zb*}*bOGG{*1PMsLzQ?&m1`9|yjyh-5I~kqHDZ?tZaT0mhfqgfLaG? zpvvnB?+}adfMUS<#T;qeZyeMv+Hlj;X>$;hR2%+A#Qt%hh#1`wa{7^&{fvYiz3YrP zasAzqh^qjT-80afDs*O)s<`1T*5Zc}t@|_ni1{Ogk$Q=0gG42l_!%pXqYSvoSBxii zhTqc(>N5@e<~{EZW8&5um}5wbPelTog0e(%Oh`V5EcJ7Th$emZ+?@qWygL44{kG}7 z&(744jgp``G_%;nZ4;kt=vdLu%wtjXy5bI(PBFcNd9)RjD|i5PKj8$O(ZrtI;pTNz zx92H=t=AeGCeZo_Zx@mDJf-3%WItOs{)r$jTmK+mGgX0A^H@x|X~yoA z)QcoreJ&#*Z_kO0Y7##mghJ?d!TmrylN^7QyH0r%)ir7?#U4} zS$fGJ+=PGg(EkYTTTcuxBif1Pva04shtXpgDSx*NA@S5x#irsgH&|z{QLI*xs=WPU zK>4b_Wspdhpv%X8ki=Vd;t1WnyD*Z0GugOV-#)izfIbgbTeVAA$o>-RSv>`=Q zIIb+R*MU_$Z#vN9)`6CjHHp1$$2p+CLR*^bvX+S4HDqcL>};h)HwvK){E+lPr~Ma) z$f0a9@Slz$Ku29(CCv6-x)28}g@n0$-(~SE#`QRTe~>6}Sa;?a4jB&KDFKzQu-2U$ zc+Jx=w_N5+UQ63~fyM7SV^4k!c^V7x&m1}W;Cfi~1TXPD1s0?m>qJqs;T%GZM<2MtC$t&dLupl%2wt|jg~cFl?e zaZ63&3sv4(9jZwlTALe@48%_eL?l5X89XY9p%w4qdyXcNVOwMZU(M+7J-Vb7l5tjV z19|46^N0{Ze()ie3z=G~m3k_^zXtq#^t$Z0bKkWO@GMa07O}ljLinQ_&-+WMKWwj$ z%6SLNjEcBpQwkQ~0si}FoYiktn-TDQR%Ipin_3%Y^ubSaantABfT%oLWpR!0>A{3g zh(#a*h$O`b^H0n~RTD5TJ3>}GWYR!BbXlCMh)kM^l4V2G9wLmgTvKnq6N{a1X8u;r zqB=C{8-~)6+R40M>3WUui_*`jkLCK`mzwbRtESfMU#EY&qk+T9dxwOk!)VfNdzd|- zhTq=^r)pDuyIwrbG!o6GHxpSFHB@kWCyGpUdTS%LI2Gf^ON99tkrA;4uL;=uxtQyo zZx-cmyo2|=XzTvCbvkUp=NN6>VJ&`Br@+&g9K?C(@_n!%U4sM3qrQ8?70`Q}xR!=}6sD-$M*-w7>r zB(zK7^CaHK6QdElKWFwM5pE9L%ews--m}djz~$9fkRo-ncM$QHSF;GJi6f z)MCkAUb`+d$;PR4iu!%B9qmw(MMaT|DDyL#O3I)i@NslR{A-fufqfHiuii}k0QdZ= zNqKktLDJh;?=CQpglPC*6yx8sE>H73d6N^GbiBiuvXKEp(x_IX4K?J$3hvOm$q^xe zwrdS$2Z^wHD0dO)ZTNPJt_48|GYIO{A4ZcgNqnlM$G$@{p&H2ou$OcO7qUN1`-nW6 zIhG#{>hoAA(geF$NqGZ(-URS=15L6%u)Lgn$|s_{ie}Q7`!aF{o6-IOo?pMP+gbf1e71+ZCpgejlX)=0 z+f|)pZdFx-7dpJ+yU}C!HZc4{0dUTI%nb7A9Cj5m5}_C zhpCUsRz@5ChyjfG;hm@XS8sN*uWUSeTZKki?Qd6-2gu$3_MZ?&V@1bP3t&23@&jE@ z0h#JxuuWIhc$8ZB=L^c6m3#g-$a^>F6MEMJ)G4cICQ4S^kgAp`K1sZbV!8~4x+W!( z%~7Wu(ruH;%;U%QcXd_n>1AY;+mfsNA$_Hh`8BL^bDe~K9g&?l(Es@5lb;W zha9H!WH_znolz@_*4S^KkKzyw@(znQIVp=qZ@yRgy+mer6$*F18;_oGp5NiVJjDj# zW?O6-z71rnbv)0+7WoGQV&UTT5qu?+sg^uKAo^wvTZ%HtNYrEVBrd;Rii8o`UE#Sm z$17czJGg#JJPr0Se8A^?F%b3iMQ-NdBLXC{&ez#L0w$~I1@7B9PFsT_dz#ZMwbP%A zqQ=QEE5DoGeZa?hw`%xGZCh6)n{McCBLj4$92eW<+!7FF>XpVyx(YnZ_-c>p)Wv6@FGBk#?!<-CaCP7egpO1 z5UXQGV1E#lL5s3eN^Ur_@5Qgn&>u*sR=|r=d-X)%S5!_@9`T#EGjrDheVH7lE*;jmRE>~^u?CGHxd-8^!xC85wUC+03)LbP)u<#frL+P#lg&qS`t(rO+9Udj8-;!y3H zrB(SY?_B@!sRo9(4!}r>{h#R12c9n$+IH5={!%nsJP~`_O;7cbH@Tu3-Rk`5t6Y>| znI!YP^(`t=6URe{{3=a({NNNgvn~7zU5L_e+*Ai|6p7i6S=aL>*eC;EIEV-m#UP(? z>Us#F>6NRidUqd_W@`fO8k`aVq&vDg7LhV)LnYmq1L5t4+Bge-WtZ?b>>v6OGzYT3 z?iwBI(jFDeVNBBd0Xr0;O^_c+s4++7>lu(ZZ@!m;MY*}Gw}5L*6zAIF_~~SH;FWOs zu#qN_L|nS5;V%c9n_!tnMvz&>%%^mvRhHgwjmTfc)muuWs;3w?D~xY2_~)p)-JDO@ zx6*;`k`g*zmm(G`{hlq8x@lGuRS4b2qE$s%K6de6=B4O5ke%VyR{eM zrHV0LXNe2=L(&%pd?qpjp^V|oCH~T6uF&8{3R2E-C4!}&pbqb#&B<#93SwyqbG#;` z-<{n#lu(3nWy>p=*?P(uk&t5mrF`WA$tDT*ePG?6Z)4+UEaqL){zAQ?YVBI6W?Y4!oLXq;_hU?;>4@HTt>u-#s_Ss2HEreXYMDXAj};$-$%o8Mo(y|CGi2frA^!ke!#OBresp#x5q2kjm zev8dx_PZ^9xn9c*4=!3K-XXL(V$j)-9GO}4dUq_0&H?ww5Fg3J=pvD8I^?DBuYZ^o zZ<_6RGK*WG^vGp2am9d2&u2R%?`e#+;(qiKGet zexl2NJ??%d(2h^|k1>wrW(-i@fNq{2a$6aRb#MNr-g8$vHa_XSq*FaJx8j!0C(T1$ z<;RIlY)U})oUbRnovJzCLC3N``B+nBn*;evQZDFi8;y~a9gTky1GgFS{A@@=#od$E zyHSEMDPS+%=vl+c$r{CGnaBU5!mvo-qO6uh#(;}PiVU077lr-}YGs60os^)~())N0 z_4=^O?rq>Mxl=${*)g7DWAw;Rg}AO2wcdyRjpAfJdA|2%P2yU}VRw%`;a#sB|5_Y0 z9ol`=(f76C<_+iueTdFK)W!Z7&8f|A{y&|r5VHUfg)*zL8tQeLKUd1oth|B&I^qw(zgPIcDeX*FSOk_k@Pp8Rg_ zQSl4h{4X+o6GHNBV%G2+B~b9?pZA6QEk-_i zg})eE_R-VPae{R}l@^tbGqrrcXy2gjrimdPX?_O82K{v?v&U|LY;!6df(l$5T)G8<%QM?Qsvt8XpVq~+8?CWHc#VHv>IDkJ*rh1g=s&aj zRodY#>QHsH^R13MPf8WfeY5k#WpM5KJpL3|lyfXdmv0tSj4?q#A`c5mTq<}^w0|od z9+#XsA@Z|xZ27ilYB89I%4_qi6$6D@kTe$dMN!$K>o9Q?);>TRiF`(BnI!!gmxfvf z^#k@>OWF}T)SWN845Pr-0N2`3^AcLtg4R9;&FO#%XQj`^4|RS>*ZeF_o^3^Gmvw^V zbt{-+N&dZ%3v+25GcO~LTYi(5o2r+C`#2B>EQCRfb$A-t@#jI1&w|7YVqRy=m#?^|Kg+4iCGwDkLA5oM$IAQD!hJGR2Bp+e1ysXHW*ljPXLOaiP1jIVEsnB>v_ zd--a6^?V)<-fbjQQa!a0*hu@`aSgAeW{($Rzj&ac?}>wZ3hv#KlVdXy#xUg(Htl6b z^WSC8@CFL{)9FR>=TsrDY%r?yYGqxDnXDhXrVse-zPiR_^A6 z@^Tit|L*T;#a#lNw)uh-F``M$u7OC{qUA1>2nJ{vD=<9pGk0Pq&|v#t18oBM{_m;h zw}~O#o%!Rl__cx6;=WI-&3x6~S-NZ~_M55g{9+<5Ny%y}ll4=9o^FFfZc~?Iek7TB z!J6*mex-3T^f)=OB>+wGH(IfP_f{WyJVj8YM>@O(FiyR0{e#qXy%8JeUh1r-HsV1Alb?e4k>Pc;ooa+8V2UFbg7_4`c>KHI3}I%;qF1vl9n8Z*2e$yr|E~~ zK-U-wB#VGsmk_amAzjp_J_v)UsLhC<@ie3adrQti-b+%(1)Gt&FMDp-A=P)z2-%CD zRo+IyS6r^SWzJVC<3Mn<^H$*v-gdaOB4{_Tclb9MP+l{3``e2P;h_e^)^WAPxIpE_ z@){Hs%Mh>~ROg`gJeF zVcCHq%;-WIMVutQU4wgf3Rlu>MGIJ>uZm8ok#es1z#1Fe&aatxE2;{-x#gPh(i!GJ zf}I_O-^8bDgouFetc8Z9lpCTT25ULu!9VDpT`qyBc0 z&a)gU=sC{RL}WK9+BVqqBe-eA_B`l>R?;T`@iqp&3w)9C-l!*+5>7W9Ge#M5R))SW zgY+O~riBPNvKAr4PV{^(f|_X~Z{cH)MGae3(1t-@s3X^kL}O)`jPby+jvbG&x0V@F z7Rk)Oy&$?x29v{&i4d~E6wM6o6bicDk^7j)ESHgM1X0tk^MsAFa5>;+BV#03#6Spu zGJn~~>+x^Y^7H|vJNhSWm=Zv3v0MoA_IQQj#)A|U5eq)wm|`)M4L|_*mLD``%1liHU}X3m@D;ozQYaNVfdjAisD4J?ONFQXPU_zoZsj?#Hs4d-GWoZ zb)^NJ1{?kRWXLkC6Waffc)GA1{`sXDuPwN@MVtGL2Uj}b|Dx`#qT*_|w#~diCxf8J2Ua+%W-gn8G1y(jcW+0*VcN+2G;ng}yND=_A0I`Dv;U~)2&uQx z=Ggo#vvDqt6q*{k4C(T~^GdlT&&&q;{M;2HzY~>byMxwCxTJCuH4eYWrDvtCwcWxD zVWH9e-+y1!K0m`i5G36m-Jtc~2BtEG?;XpJVvmt-?38^Nx%whkp1h(mNyca+LfG4b zQnjX)uC$MXv>&=z$6kz_v1}6039@Eu$8V=fdPDvkKKC^DFe}d|IJ$RgiTsR{8lcc! zD0;TC(Qz{~_|SPkNj56F5wn(=t8+otz1WdED>_&kEdbpTXY|`zPtH;fmG^7T8|2`5?U-xYU?mDQu;EarFf895ERSs>g zA8L)3`YfQK%8XuU-fx!*|D+#&sfG(ty;RCYUbz)+&8*67P6!)>F=PnJ0X(C>n!H1I zO!g&Gbn*JvCOmvh>GEe!DSb61o!&~g0eLMi;7XzK7(*<+f6MAuT0a1(#Qx?7(q_vd zV`Z*C-@=v?)JoZVbLgW@bDv@cTYX*bE`iOiY@Pl>8?OAu&j=+K{aYOpy9yk zsZ_$p&+-4tYv%wVO$c!4G2292@1NxNt~V4qY1f0tEivhoit zuZpJ2HfZe~yRREI7>E*nK^Z%r0=k2WP}o6*%ZSdqV!J})0{VC6YC9UZr!13Qq?sA- z;)1x@4>1@xL5nJJ*B_0j3`^KFvo-Bx{*wi`c>Rc=T?^`y7SUbou4xsZDt{-W*bQ3m z-{5X2n#KBZl6na5IHzKR)^j1iLN-}8O|0OgdYGnp@YsV_{@U0Z-{6*Vg~lv2HKEAQ zuc%1gGFU5L9MM9bcyEMQCmh$LJl%2n1n`?9< zzR3N_$}zs zGbt-th;>HAm)N8O!=X_Wxw*Q=Cw|c?DbcNeP&s^LWN}mZ2`{`h4*LN2o%n?r0ZYI~ zb5S>ho0rerL%M4t+9fpwrHXDi1hvv}oaDR#n}Tn#2RUWz z;NMseHY*9EdGnN50AW&U6{&@OQXiomX*x8E;Ddfaqx?*hMUHXRE89*vAnasc3*^9 z{&4@$f~b)~zhrm(Xu8OSgFGvJUpldkr(vD631OjYko$+Z(_NnP!g{fL`%`TDhON%jcL$`n7UoQNg9*Z+Xpp$I-hCOfi6S^wcn4) zz~|aG@CO3G_mxfTO^kk-M+5i1o5!>FfvhP82eqRC59eMEc#X#rTT4J`>oBc-IrN4h zf2#TPTTn86HFKxqa(fhlEUEd}DW6)s4MJCz&(z2K6<{Kn^!F8|o!IM?eXn>$gO=J6 z^Q#7qpCY6CsV3?4Bk=7e|Ig1hAP=!2Y3-9v0jYMqd1MwvZR#s~MYCuwYAvHGOF)@1 zYxRX4JDLZ_qEG*Wl3dg7IUA*=&Z(2Ip2P2*{}RvU7)9oaWJo>tVzy=iSx?66X=Pii zC3n2oRh*+jc&JFLTHJw|qcB5qt2%oy?T>dfI`WpO1BM9u5+}%4xMhRBlo~!L|FhOJ z)7AvAL-dTT%Vut#O2^mENr)VY+$Wf7YtO@3fVpvetv|_R1rzT?lR`tuc&8u?e1n_r zy1~jA`Gw-4Gl4AE9pfDctJ9|Yb>6r&O()BTfJiei`o|CTAMb`sCyWb8pFX>w{$4CG zVg=7e28LE~9#rzwBWwo1($0xoOTzHZ+<5{|A;ua?0uy<%v?G7XV}HjhuMWKJUrpf2 z_Q+eNQ)q0vQhKDSbb$%Q#>2*~l=gXnz_?W%hz4I_&1D=W6&;c)t}9XgMTjkSEsP#a zXfiLig%H(syfw6pV20xJjRYrHO|8WED2;6)c_25bamL}+OlM<3 z-FX3BN!YP^TrH*}T%4J=A|(s^lY{vx;VN|WbwK<5v=H;f)j;^@RR{}Vd=<}&Tkr|F2|L23*UaCl@6bnu&3G!DMLE%mgQ$63%wejs+ zs`C~L2@&^$RnvQ`1VYHzhq~-mXO2LrHu}oLnxEgZ-}Sct zh|>G3LdfCPoOKU7u!@yspb}~pH8C5aJLTBL_-^#3@MXlIJo=^YqC3GY1-p+nhcnH| zsU4LwiMY-(Zi`Q1fz)S#CIyOI6i2Wl65oBq0Cn*1UaZL&v)=+@wicDy2NQVck@eO% zyW+3k{H)@gxxm;Wi>4HaS1kX`fA`6M`#Ktt%+xI4F4QG4`o3f4=)2Xn7ns{*w>{sK z`t?#p*xTpUV?W$Fe2-o26wD^6@j@+dOSEtNl#g{p3@tvobl`=Iu(_fUvR*;yW&CL|%SsZ=K zir{=+$t2(+Wt~}mnqYjE5wx_&SXsuRtTE~B#wXv-vqBotQ!lho$188l!HLB8krC_d z2R@AY;JV=9@QqXA>zTi-STyqq*5ie9y1t)7ccLN4$LLgelk^AUhG?bHf(~c40W1X# zFHzxc0g|}AZ3&^QQJ8x*<5@DTrP^=e4e=bU!*4jC<9oH`6VF9fc_W;-D;I(JlI6|Q zrQC9=iF;V!`|`1-uzdHgzPAjI5&DgJd-=z8>26 z^omvglk2ox0l^&<`$}%c933$%)K0IAHLq$ZF<%QT-(!O!|LvZypoy9w(e8xka7uYq z!2yuDVe1LxIu-&|I7WQRWOs@0fyZh0?3aAy##U|JQBUzUS@dE3wtrWT*|#x4G2%OV z{=1gm4Hm$#kvI?-&mQ+UT4QYn3OpJS5!3*`Ekkl=-dT@Lzm^RN4(Ddi}n*Jo9>Rd_XO(lVa$+Ci@AG9e+H5Di`_3I6M*;r_ad`zMcis>4u(gDStN@>x>*TLN5 z49Wnz4Pc16O)%biaqfl0Z+ARL-lX7ITclUedkFu?u(F3_q15H%9jsq3vFirIK)vv3 z8h-p{Vn(Q2|AQ7CvsT=kk&co+q=Fduf@J(v-sSn_fZG?Q{iQE^v@7l-gC**+ifqa| zHrXb^hTpa-3;b+Xj9uQfnE8JOIefa1_XU}eV>nw&3y3{p7a1D!T3xfhv1Nn-f_qKeJt?I7|G|t9}ecnzPNZ9xr_$9nlw5t{B|XN zBZ&)m&dz3)9C~reIdCC;-oVflc|y}xS@!#|6q9VYuW$Qz16wyZz#WLK%b*)+Rc)zA zP&pG*a1u`#uWpPg<`M&faI^zfT$9t7XgUUGHt*n0Q|x^)DkiU{OS@{N?MVd`jls8TfUN3&OcZ<3y9#7 z-wzjufhf6>aI-||T~m8L_sW>HZcms2nJerVyO2yd^BSc2E>IReTmllCgLw2^o1f{{ zuu+&COS4_>2ehB%M)TV4yguy;O42#%MLPA&Pb?z0RdgGb;PtW7yp&-E-F*6(KE6>$ z$fW#3J5={;&&?b#>`y*b8N`+!wi8AU1E^F5uL3#7j9k`Do6R~O2v+86m<34%TFR5W z=}ykRxIB+I1CKX62$k3|{D2a7k%UBKZox36nI9RcK@N+OqNJZIx~gYG0=nIHGUW+4 zt;kLhb3a)MO;(f9Dd!BQ{Ek;~s$_1u0?(vphre_f!k%^ibsYGpeH(a}AA9#BX!i+Z z__&b20EV+>`+1UXSS{N5Ou5~4yXdC(J5}+wzrrqC<2&weTJ7-)JY=UYldrTVDKt#Q zR!z+%5Md9+ z2wDk+F&66crvvE#Vp$=cy=Hf}XB^oB>RW&r;97X@Pk~aq&8%u6>U_GI#a#I2Avl*q z#i>Q5=#w`!n;XhE#d_}k$_HG=(;Ga7Y+;TLS+eRyBU(9|B}w>JYu6upQOcW>ECmV( zk&sl48IQRkS;5BxLA7Zc0VOpSzQG>Mgl;-+4YNZLBFkl=s6k2@&%OcD(U`F~Dd8l6 zKT(GxUAZ#@wUjhx5})}5p;Sc39cvSQKBneBFOiw7L=Pm`Xi^D-9Qd3`N~p@cbwBFz zJ1HEEaVOBoa><*Ke3CG*LNOS08#7g|)}{I);L^(T6t&8pek8@}oCJ*nf1vNjp&V~l z@gxb~j++r-nFP$uO_b&&BsC$;$ImiEqs{@W&VLJ99sf@Rt>#>b2LH(d{*Q&O(xgpd z*Um19bcuxLlfFOMW7um>!$1Mi_Ol5{iqOcIl+$Yl=i%bymm<(!mLF)YN?ik}Z&1kV z9ORIL8#(_%1)krZH8?m0h?qHDfTNMv7xoEb4JfS?2&JtiT%=m;LfTLww(s$ZKbYJU;lYC zGs3u+QLU@R#-44odTUKno#3{0pc53&eDWD!30j?XJth{)y@=wAaVKDRt3_XrL|8Rm z>GK}Gf?}e6rEL!idsotbvwW|Xh$b=LY{K^{jmk=2`OuF59|Nx&ZQU$uG-T05_-*9y zUI)f*VO7Jch(A>Xl3-jkJb=-^}7YLiN>(_|Uxki!55A>FkbmP-{pP4ovZFW&N)OjoOH zsi3saxQMh?1@{ccau%FRRc>j1y7o_GFH?jrv5|ocr$3j$gyK)Wg>F3Ys%}noX$N>X zC@})n9AQJJ3);fJyFwFLHYJZ1P!QLL;E^Ys_~;q%cDOy>cuTC3{b^_B7t(PmC8<%%ETe!)vkb8s_*JPv3NFXY}OJo$GDx-b9TC8q*(i zYAV`YiBZy9!%j&lQD{&(%&f~w0aPSE$IgvD3LjokH4f~Ol-6c~T}-Q@4>d{tpWSCp zO)l@AFoNz}`@tQ_yX&8qB&k=aeSC*7oU@y%gS=XLes7n{7m2QoHR0|f>MLhjk6)Rc zPkQ+iwCnueCN(^!uaG*!inou06AtBt9}qFKYc52CpdZk&S+2I`;ve0?`nEKvo! zhWZ7Q86SRtClv0bP2cwDu^Te&P@q*B9G`}FSC(&o+Aq^S9W3qzFo@HUpt!`VC-{*) z@OdNec3W@LR-5R_*M&;bG13MxW{NB4qkTQMA^HVQyPH2H-@0T2C>Vl;dxtNJw-mcE zNa+%rS>N<(!E>AYz7j((M);<28oRWl!u#a6NtE*1 zby=u|*~E@k-q&y>F03IOO*x`?JWo|t=I|_Ux+=*Uv)G0VhF6BRnhQR#LdMdKI(&I# z1g5mLs{txWKT4v*e7jlZA81!1N9wusuIP!hmYd44j14bxsTK!ggdS}TL=wg>2X=4y z>bDuT<2NlR$7*~xxOuT4*(WBKz@F?bEvVx>`Uj-tTFmiac>!oxO+jG42p4Y1ahacx z*tX8v!@1yNU&y&ZtYynHj$_rE7BUpZGphP|;F!ph=+a!#2~K;g8!!?CWkShc9BIFbh*B_pel~JsoG9wRw#Q|Df;qmJY z+Zcs4l-|>hsM(706?u{5PuAR|6Tk6^72PRy22nUdl9*7@w9x9Q-X^wJZhDtX{Gs zS?Kpw*D3c?Twj;fvVVLU&}e7h=@QM{cOhHpSCR3hr(k)H2PVn{;N(- zAO|q`524k1B#3qooNSfqpfBZKro;#c8Ev(GB=VVmR?&b~e3ngxt7kGMf3R}JSM{g)jKzvPc-*8uIf{(2FQUW6(DzF?V2yyS9Hv_pOI)42dzA!zlsr9GstQ^m`+I zd1KMrw_~UCg#u<-w*n>z;v*f0JJqkGR9X7zf1+WPlCm~Jr>RSW*Evv>FVs;xwlyhed2T^6mIAvHUvJF@@!*j8uCW>G*D-IoS`h($1AO)WFBUfY(1}>g5Ch zf(08z$VBvqx{B^!LZ`%dsAAMkX*?oH4L3JujayRZhav&jW*?c1uJLG6iAr&s8V7Y_ zZKc;DM4OT>sdA7Qc(3c;xuqE6tct^j-Q2Reu#oU>pU$>g-=C?WdENA_CkcU_cTGZI z7V^S~(=JEHqRway;ixi^d*UycLf@(?wdoXN+@IyE#N>pqD6b(oO4&;CSa>`Hl`dIf&P z>6~Kd`|!G-J;L2r(`MlN#L#*e2(Nkd_~G=<_DCHXIY! zpFAXHdP|S_iL7DUFFKVYpa14RSgfy0HCO7e0(Mlg?^@#ks#ZU+n<&jA{JdRJmJ`RF zNclgJv5=f~0zc7np#&Yw(Gq>Ph^h#4Z(B(e_LfE1Y%K4sw{Aa!IXrq9enOH%xH|y{ zg4etBr)mrGiq6C?hHWL4>O&k5z1k!wKNqDri&w4ONSV#e1m`a9Tya_N@|aTiC1?Ab z^mD@yI=DdC`xxs!Oo`t43Yu0u4PVghdoxqDvCWXgh?(rj7*W!eO;Kd+wRXcq@ldVG z_Jv+{TRf|%rC+dSi+^~r2zIob5fxwqY6$W*-MpN;&x;gxz#fqtx?OS6oZvqkg(QBl z5P3~urKzani4-?0PVqzk!mkn`dO#otG%IOjUzeXpy-B<)$Z^2!Yq<_)2;8PCj>valC|pXnviaet+pMB**A%QV zvq@MMwsKVb=bNc!lEN`%OM*FZYNPwlqf$~3qnba4W-u()5YexA1y*(d-^LHs%MaxZ zwSxN#qelMJ{5Ro3^AYAnreujgP-et}} zmTD@7VKbfjo_Ff#^KQxEwtlYNbhWy|Li?kv^C>LuI$Blx1+c5;0;n*ySpIrV6({^; zW|Z)2YZQA=YAPe)kRucP`NPpwQ0Ws>V7&QaL+qK2e&&aEqm%fcWF1%wcBckgg)ADD z*+3C`vLF^>?z1z=wxcA;x;=>y%*l?+L$VYHAU+r~$|lMH4|*r!!3OK{JZ7!W*D8}d z+_GE;(CCii^ls5!cH`E@t_wO5>Wp9MSOM%nCSe%cC&cwK^HHW&Ip%Ir>hF0nzn|Yz z^ipO1Osw>C4Xb#|{d=130F; zBujvC9#hkVM9p5ceKO+xv(F)PR{Zh`(gGMa>dFG-sEpSG#l3Eu zdJLZ$wg|j)1E~T9f0$kEgdX(A<$5b)PyPrF`-{ZhJV8>Aq>c+`!f)mpeViL1iT?S0 z_x_7G#xv;)haD=~z796PzYUbm<;`)E*oduuPGGd~j~l$7h{ zGIkTyAkwVuX1+_< zhh_Nb)y&n$M|Z>EmS;1K#+5#vG45lhD4Pjex*52~BC0KoVx$XG(XRIVj9}5E2d9Eg zsvB+Pne;wV&)#JY2m$^t(w}Ce*3>26MDL_r(px6nWFK<9;b4IckLRgT?ObX8JBYZB zOZLhtaYe&Ct=&DJgfB2Ez2S!I7J0GTW@KdF{HyLq$;5D)S4VtLisi)KU&*}I3g%GD zRSY}egq=)h6m10XWGm;oyW-fW5Z`;Y${%#ZdkYBC)j~vnO=`$mJC3O}+FcrT{$8LK z+^pniEpG43rN0j(*-c*vH1b9E0`8yrN{?lKOljg~_U*GZyrJILGJmUOZ6f0bV zSRY|uko7EgHDb{39PhDaTE8@`Q-qFyhJx=I6r8wo$|!G%soqYcYlPq}V7y++_>vo5 z=9cT#IL$)$c8})yzGpHfTkrdbOs_;!28W`y{_!uA9ED_=lFzZEs#@!`i4Hq2v-zWh z?_F$0Uh8rrw_Y>yJZBg)GYyorRF07sMMup~FC*Jx#kC;=cu{eM%}ESi+Ol9k zS_7sT%(DMv0Y^gU+|B>0Z`#Y*J~eE=GI|0iK^!b|7v~qEO3Hnl*|kMu^EMk{dHU)m ztAm;nXzeu|5!dMjZwxH$?5lBR5p$XIRcVw$HT&zq8ctIvb??i$jIQ`9S`s{JGxW^n z3SPQM()ufq>EFcw9Dl%Z-Vc&GH=4(Se~;@ElEFrQyi$_6T-akSLt&$!BbdNmI2AAS zb=dv0cR@UIjOn_5P5jg9JB}iasnyYq!dpx%I9k7VqsQR|80K!Jp4<`9u{s%?qI?wZ zCm?xI(ChL+YnGy|m;e-Sn^o$2cYA*cFt4$O!A)`_=9WkAhe{vRwg`+oq!F6zHG9=n4FhQcc=r02w_3uz(jpq`AN4EjAreULwvS@!C(1S zd+5W45%FT7@+oWUYZkt)kpnlb3v8y5@q3`Qax=P5_=Jc~ot)}%0moGDfV8z+WDfTL zc0lUm3B8rQ3@_7aIkRT{??;APkGqF-XUUcl;vGEKCjA^m_QK;fizev)am1dFG?s2BK~p&!DlUZtOUo zDY6n5(IFJwUiOR$D|(+$BQoK<*wM%3S8y?)oARSz1#UdWf5gNY?DU8ZqLSIP z?io`CK9h$E)_EHeJ$woSP9kfUv}e zX8okhO(<^Ljy~`ceTS_WX3nW3e%rh0Po{eFiK;L5{xl(r*iFEg+F7@Tvvrh7Pm-8Gz$2*7>0~^$G%o{rPB-Gt=%K?POPz}qmTygt zCHmY48E=gL)`#r-jiuzy3xxwk7Z=}*Gx1WjD?^dw9YMj1vVBoqj!B(pFN}l~iew0f z%1&}X_I;1``+0S8x=4lF(ft|^PX!W3Zc2gVQMMk5`hx#W-rA})j`#1h^{ zov~u2hMpMP5u?UE#m8vRqZ;}#{{zc@&pPiab%H8FtuL2bg4<=It0yz1#pbIKgkOlI z9#tZqs;Oyga{-ZThhzo zD2=*^)?WOT4~P`d3gu4Y9G>QPFKL@P;v-FV5qB`vkfwo}Y}pBFVJwr)Q^#G@@o;BS zMQ*?#<|U0wH3k|0G&es=u(; z#-i*&X|)Vz2#Kwk@JR5{ zahB*GEhc$?b($yz{@>`J<{k~jK2w?cn?D{=Hh*8HC-~R>zS!ozoO;*tew8Ma){&_ zMVh1KH`1N?^b*xML{)SSq2An6pNEAeta}RxeTDxO#t^n3 zJYIVRE#A4e>$@jTH^{almBQTymNTRA#<{agFvy1u#`FR~Q52a<1gm-so-oPaYq%r( ze6x;MRLRD?mIk+Qfi+n#^Jy4gdd4At6id13{{=Y#IiCWmHMP=M6dkezz{0W+l*$8j z5mECZ;QW67QC&Cv0-2Tf0T&oQQoxC?hWa*;bXiGL39$rNR5^zSPu5beP2s{+vjc}`Pac91g%gKFl6gR^4Tho#(=z3nF%ah&CUtzL z8kq~)mZ;OB)X89d$8I^oTn_o2GqSC+Jkj+?oMC9&Q-2_ne|iv44Se|VaO6mxr;z%D zrsz~uv|mu*L?2`=QqkiOrX-Sa9U8mhqHK}SIXB2r~eB zf>-J}u%Ml195Tlg+M73c7$F|)VpTq*j+}dZqg*~N{#%1snO*iH;p`3=!QXNhKnJr$ zz*?IP)5h-ec5?eRel)o^y%^9NV8767e17AwxgxThHU@o7#y|lwA%~QAHb8=4_w0|4 zlVekl!;$-Eog$(Gc|-SeezzSqKR4^QjxX_xm9-(LPX2~BMs8slTOU4Sc3^ttSvgQ6HICNp!(=)ya`Upj25YzA|suZl=dg}2B;tjQV*ypmL zp;}P%@m;41U2M>#KzK{QM7k#xM5q;Sg@_GtV&V@eDC^;v^LAWw%)+{8sigPfW}A;M z{dZ=EB=d#nJ`2mU+--T})R-wbW4fl9k2G}!Jsmj@V7R+*zWQk(KfOO;`OBx4q5cm( z^urIOY-@#x@};FnQZ{-uR3-i*7H9QXBlCEMtjDlb=_L3d*zE~XzV17 z1}$tmFSzh=&Lx5T?J^8Sd1N20RTh^76n-d*l0(9YnUJrLM9ltv&~1HPu&Bq*l1ObP z_`GG?44XGeIH~Lt^>eR4D%Fdk9Q%BrD8=eP)-K|Vl78PoYc^1k!fQSrn?FHEv^W-J zLBsvcB(vG@clA#bcg!Bs*O5Nqk`4~0+2QRHHEFn(;$Rr&*^5BHA`<_<9z#vwVE-*G zp1XhW18edq!4y68vs$uLMpe0`WW#YmQotIXKW;^>e1@UaXh8!y!*yaZhl!NnK5D 1WY=`apq~JuMBwpa30w{ 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 z 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�)O=~orx3l*N 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%0AbVi4I|9**R;n@0@G^Z%8{@$@Z0B!+{ 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

    fYTNyV2IP!ZzCjNm5X%WNoW|J?f)`wVlY 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 Wz`mgES_FJTprHa+{-R_a^xpsm5f=ym literal 0 HcmV?d00001 diff --git a/quickstarts/ios/Sources/Assets.xcassets/AppIcon.appiconset/icon-120.png b/quickstarts/ios/Sources/Assets.xcassets/AppIcon.appiconset/icon-120.png new file mode 100644 index 0000000000000000000000000000000000000000..ddbd839323655d69fab5537abdef90ecb9bd9d2e GIT binary patch literal 14154 zcmV-QH?_!#P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91c%TCS1ONa40RR91cmMzZ00`n$?f?Kbv`IukRCoc!eF>0eS9RX)p6*#S zT1G3{EXx9eu>uIO8Ds;(APRYju?u2w;tlLT7N=M$u?v!vQ&53~syGD{726?R00Tv^ z69@1TVHsnB5E#s63mJs=ZDyp|r+d2decxH`dGBAQXG!Hw_q}KR&bjxz``-KC|NlJ; zJD>V<>kA95t*^I+p{?WJpiz-+M1$>;P6=$P4}`#@9WU1+MM?DhB&u>|0X{`ZjC@L5Y1Z39x>X;yOHmT$RoNa?I(jZGu)0wAfQ2`n zN;R;;7ywZN1u|k%6O9mPRJxw?8>3Fi8;UgFiWRMQbVc=8n zK-P81WaLAoW6;GDHA(MtJ?HpT?_65qxevoE8UCoa9#rwiG@aQr8k5PGCX~tLgo+Q9 zbNylwB3{X3ZgFXMTpvbvBMsAis9Km++(Dd?s&1J&VzpuBw5bD>Mv@28jnYEpifRp2Wzf=VX3!cJ4S|x}s^3 z3w-2Z=2g*Y#li{>B?60%(B8}{d?@S^XEfoC78W#Q4Qi`V(=H8Q>*nES><}Z27Q=5~ zB&Ir4njV%y7Rf{bRmSRPH2d^RbrR54no!2GpSg2sHt?$$peq}UWL42=Qrx*iiHC@r z8irKsRgY|Q~9L%ov zRN3?j21HAP6_BnPfUYbUvRR}A9T4!TPDT&>Qk}%er{kF);-+a5o?GEPS+kv#6IE?c z3Ewj^uZvAf$KWvUh6(`(km2|LwYZkMPSHNMJ|WJHNt%rhrMR)$u1`a`rO+_ExAp0m z^L-41VP@`J#)R49d^|b6$*XImlJ=0Kv!~=}lJqjMWn#D2Au$+?p_P+$E{gTEIaD8- zRljs_kgn?m_CTiU20E2lgbC-GTqNU0T8N%|$CFRNtA6uusOV(P*4(eIT`Xm=wmaP( zi;*X}l8RQGCXmSw9djn#4^DUjOmmR}N*-0hsSXkl4bAB=^XMjZp|IS}oXpQfC1ZG3 zpMozx*Hw(9b(7_Yp1d8QVUf{X;5@lp2~H=MuiK?*5(6JW4E%tSra>?%Uwje94`f*- zN~bkq<*k-oKOwPLrn8EguN@eWv%iSf<}?PQY_p^V z3B^l^yb{m3@D?i{vtNo@(ZHt$s)AJ-?v}mdbsqxLFV?^f6mRHbmh3HFji$`xV+Dwe z+&bALWIOEm(teb)yASQmEDB8*c{#MM?GYx@!rbk24FMff-jVH2Sx8-2^NID7w%Zw$ z@wGRzZfBr#c&hRef>U%og>XJ~xhEECMsf@)KY&~4lEA>nETd=au2yDL`RJ1$iv^WGvtj`2 zB%)p@uByc}pK4uccyaaFGFQ;CRh28y!CTsHOJkBeb!#L*7X?x22r2u@2 z!rtYwH2L^dBa6j_Qx z=9U9HLm2eT1;v$_hofE@sRKi$)3FO94a&3dQWpF0E2l*rNOk^|hHC~Yw1tjj!ldw# zoP5|7oyfw=#&~}>$(3o71aJ!Npp@9WK&3i~kxx&?{5DWrRYILb0%=^xh?zn%Xw+E* zv9%ky*_^!KuG2JgHvj<#8GY+tDiJ+8I7QE=VVGLt)&Y~JS>H~mt<#jsLPG}Jz6Pt%X2+Y`Z;VF=sTP7K9 z8N^+Nyxwdu(NNK6OTV7X+&2z9gbf81F+@L;Ti)PeYtD4bOo`exp)V}NL>hglRZabX0ROx&&( zDpoU80m*m@8iK&hxJkHK;pGFKq5|wsvPOoQVMejI^n+ZRAi!VH{{ou2&ZiiPQiH(ihms|Vvt+xro)|e|Yr%BEE*$$SaFQUzQ zt*sqfL4k2bSlna_8H+p`#kx#q7vB^-eAr^;bU5kS4q4eaI>;=QDFyQy_}~V@)d4ZM zJX$o9D{yqO_Z=*n892cqQWUwtoonual1IM8AvGH=3L6)IMLu$jyV+zL?tyW~UH7*| zouUcopcR0k3{Apq!qi3UDD2KlpW1eu|Jb(Y_M6+`y?4rSVG&CNTRWu}tnnhpgklX< zb=Whw-vjsyJjrC1xn+VqK#G#Ed5q)6>*zdB73OJRs=gJs3W<)*3P)_d)oz1x}oiQ+>6?yciz$- z`r041Ll1qUE${%suI5>c%`Q_8Du2J;N=r=GnJH)wKpv!avD0P~hC&uX`gX$bDy}Sx zugJn15M%ep7>&%y02;X-tyk|=(j(EBzaXMimwOfz?KJm(bYRr*s_0XX1>fj43R$hBty%fbpIVy01t?o=cg zlERam@O8bg=~L{*4*9{8EaAze8WlPwkRl`4=UpL#)Sxm!$D^5xpdV&u^j5sQ`J*wXI-XxO)Ic4V9MQm&UZZ zGhPry2EECjNNw7*Nkxk%RFXrth#M(Bu`)Sm$zta+dm?efFR{z7#T*Fy}K`T5+{wV@UdZz`WixrVX_;8%@OB-RC?c(w_oTB{( zi(toT+R0Zvr(O7zSLnfrnOiIiZ@3DtOOs_{JXYG(=9dfMOIvsu6kcTE$NI{<84f{G z_)WhgAS-lnrgY=Qh4rin5mPGygJNT+Xa(_Zprn^K%2`_a8*M=3DRTL=F?=w`rLE`S z25Z;kbR*1^kwrfL>K|!mUvV9Ze3WPw+9+deq2#TVRObh2mx{9Wmx1vc)el^p!4P76 z!ykDCmtvx)&}rjY^O?mRCnXF`T^g;k7Jv&cQTM3fAT8={NJ@6pVxa;ija>kREu)Ru z)4@F9P8z?s=<>#C)8;M1Da&$x$D6y0pZ;@gdB+7fIL3EpI5Sx|2k{9?X4wsAIa&Zt zG(;MMiJXdFqM@EO;t`wI;Eo1sRx$03V6WohXy9lq3A67CT2I(?b?7+7I7Rz{bAZ|` ze1$NmNL(=&8F(-p$253}Ir=YAoDMw3;RBAmAvWL*^{naUGtX@oJ^3eboZzL?plOL+ zqG%Rdl0JV;v@eX?=K}ab6#MWWh@9boUtMk;sh^@comPFQ4^EiP@wE_}@Jxb`R; z9r*hBg1`4NIY5*r@9z?0ieF=Tu)#g%tP zMkusoK~y>mj%YQz$N+`WvZYU$xiQ^DCSd}Xafnm0&J12?K8RS_a;BbQO_{z@-blx@ z^Uh12)OK9(c$}(n_mz`~gq292a-llD+tO5I___rX9EhCZ0H1nVmWL*U`6XBakB#SC zbGfxMs1ez_$`;;}#K1(f$SFec@aS*-*cyuD3!xD-#w-XZdznNzobjAEaTv?R21^6B z@HbA5VFw?6l4N8pK3`Sih+hs&O=5M@s_O-CS<%bK zc#_t@C)VK22CBPrKib?c2AYhD8>$k|MKE5+>h|5k z0XrOtg*E!-pZscDJ@N>!?X5!Pu7d{#z=-2Q!Nm~96XBvc$tPH+qY-j>$C)@)U(+7O z`^bwp!$eto;b6oZ%Q{;klrsx;J)K#_b#ps-!o2t^6a1+(-3-j``K;FIhUipsCG0aqlBseIZw!GH!$pu zF6KNqSIt*iQ{VT4>wP`))6=2PdE^Qh11Z&Jl5_@5#^B4`C<$ zaSe{6dkTo`t5c`t*IA`2gb5#{IkGbo6HYOYM5d3J5${r2FfCAk189I1dRp;xNv&)- zTA{a`b!qN|>A_A;x^35Y;>@I_x4491>|uf<@X&`?#_l74P#BE&F%&}&V|e8wJ3|n+ zO3(zLA9tk3FNE8sqVPID_(6<`^rD1)u8tpp7! zug^uBdk1lph|Y{eYXdlHSyr>733b_=_DuBE5bEeiyu9$zuKH0wyKw>e3C9kD14UTC zfRISa4aw#%5`2jP-6B3kdF0W1@F|T0+Rzr!4~T(1WH_DkDb=Q}XC6OQ_%3bV)iy0} z$IG}!eIgdy(1&>lu!u5%%jl!I#*(lInqUfo7{m&p3Y?&n3b;lzdU|o)E_~9h$d#Q< zt)I0Zq+AC}Iz>)%$F*atZS~L|`1&m2P6QT{r)`%CUpZ@mD2-Ve0X zN47J-Ft(pHL=q$jj%+lGg)xcQz>ptkXAb&6yKvyd2Q#!sq49|?oSKi}jr||T-SJL+ zCMzIjj&NOE+JXX~0Sr8XUEm&KGCX+P3q&opNnM$P9jr*-)lh)(=|X0P(o5xzZmx9) z?K?Q^tC7*_ff{R6q#k3^hcPI%ZvqUmg4|NJMU6Bn2EC^@ZrWow?X986*5Ic=;G7gZ zXhq>_#HE0C(fUe5PX+C`r)(rIDR%Gn^B<2-Z9HpZ#dUmsjF+#mbw&yNiP#p_#Egcf z!D5@hdtz`x7|haoiKH^#tZjwErQc*}F#@*2z`^~iRFS6m5P^0qphoXC2;NKVr&tx* z45gjhVMeQmcH@!e5$wKYEnrOC3JPx}iP*$YUgi|s=mx?5`MtKwovgqKDX95PGN+adnPHuC$mHiLG*KUlWpyrO; zu^NWu0W=YG5sO5IvbpxcQbi?pF5c}~zy|@idmEqim4{MuQX8mLU?!$tsys0G$X5;& zBSfr$QkJzB)7{daPLRc0lJ4#`Gb_U|$9@g=1VWj(1kB_>&fB?eXTFZW0Y3d3^nr{> zK{CV!8W-m10Th^x3l+HJnK<+Yi9WV9B$`v|%$F`>YSI><%BbxFGtKE#HpucCggAw)ywGc z>`5&O9Kd9>(8W2UNLCe{CN;CTb+>b}2qt?4Qxz;h^2cj1Ut2lSR&bN0=6Jq7Ho%6c zAuELWxXN}FnV1Jgk=VVfhuis2xUp?L=P@UA=bQnYSi?1(pth#Ow^+k9Hd*)WXB(3h zeIcnMd%WV(D*sasxeP#@(NGngCbgmBG9$JqGPYg39@d1Fu9?j0S-4|I_G1U{!R}ZE zlzqg9OQNFE5vOI#4l;gc*frGGtc^x5!ZpZ^A01jg&|`rjriEj z*{8I7*Kw1!ssb|%unAuaD_SXd=WF0YN!0Ws`*Cq6?CIrL_+zB~NO80>WJGz0W5>0G zU)OdDiUdy}_p!nCz_7f@Q!~Hu`pfSRUHPK7%r)ePJdQkif4lu-{}QnHgDO#Vd3nwX zXEBY09A^c-`LOG8KX~#tR*ZpptsOnojvam!2QZH~Mu@ne$8#mG^`tXNWn_$0g%3SM zloH)25iWG4i^^T}$hZay+EHf~mv*$t<~%Zq11V=CEKFxS;q;wGa3!Y6iwp%my8i(@ z(mbHk^mP21Clj#(^JUS})@`S>ds$OHN@ao7I6uwN;*?BH&iQycEH1604T>!x^fXAH zVoin1&EIq?u#s-8!D$DLAx^1XJIjY2(D6q>>si9&d2q|faTMs(I^rIAE@156DuR5p(I<#L3)79@(P<$?h>5gU8+0fnEz zy2--3a1?94BvIhb7+LtxLBv8$-MKQaK7=(se2RpmHJT_X5@Ub2ImzMho^JyZ4@0;} z6PJttg-&7F;gRIkKY_=K%crz^iOd2V-t#Ts9M+o-3c@_*6xS0`V#>ygD?vyJp&C#? ztJDO&QX>~s{WNDOVlhhnqR+6FCa_l`jiDa_tQvO3jnZFLyn^U#tOTKTp1>(n}n7mPSb8}$$*(&T=z|gBply( z|1(NpQlErGGf&HdM43xJ2L3D6j3=kAm}S=$m_16{8ZYJy}X0w+dquW2>wf2zq~HvkB+V$ z!I#Buz;~i9u{xYe(C|fwN51tbgz;D*=g2hFlCXSid!{;z3tQV@#XhYZD&|I(W~1U# z>^E5*#O#c(yc*xBR$whw>fk{?E}=JUp2R9~Y!;N2wci|s%a38gRz2Tw;?@{~^t zeJ;BC#x>X69YllEVVo&L;KilIpt!1B^>bQ=Ay1D)K3QT7e;DluPSJLQ1$lnIa;aDs<#Zab0P)wvAFW0+3ww7d17@;(L5jH&}=EYJs(LV}>LAb$lvw zD?XTh?&Dv4>JK#{Elgzf@Zt9GS3atzXF1oLRub+pg@?$bQ*`u7aS{=|Dn;j+8m9hc z!^ss_cZLIaATs{E;>yHMRbdK`Q*XS3-FJ^YBE0GVjkCVKsz0}|v~9;}d)>>w zPx|mz|D+v!@Ne`dArzKD3!x<;KRECt(3;g8~xQY@$3(1wLszHSfURgx>Yo=byIXa=xnv548Jl{VjiKugcvDBN1vC&f|c~u(SC8P%552kllPu`J1=jxfo6-2?HL$D(I&P_$= z>3fRp(C)ueA?@1Bn=HFy?tH^vr+XzHN#>R56eD7X0P2Ci`d~YR-Mg>}OwK0>$)*-p zYhrt%I6CRd%+T=?Hi@By#9dcr>Ou~A5)WSp`Qy7&gH+WAg2Cy>bui`u!8Y)thyu2O zpNUSi=XY}t@BS7bal2CRBIY_?7M*p)bMX80)3$s0nSulN-q!B>+<(>ImY!N%O~mHk zrwoceNY3u=O>d^4BkAJX*Q3~m-m!=och6z3LoQuJ&^pu{jkjb>QTwzli&_Cwhe zk+;GQf=PVB9Twym-h<_LjqDDZyVsh~ksJS{!iCrTl<7lx3L`HGtBCpS|NRzyA)WXo zVn_CM>9YhyW?FISHLtjXHKws)*~X)5j}kHZgAVD60sY4y{!eY+-M89PGtHsQ ziR7pt`BI4UmuayN{}d%5O)RT1?4jq+2uoh}YG$q_zE#X^%7d_>tVj3qIrMvOEd(WqTvpx95 z-@`R{t7aXiMov!x>)go?bfgspQH}{|E7V<_pNeHdEu%V4)zH$*Ye^pel?eJN#iddX zCtcjp4HdzZkWj&R8y)2#KA{n~hjxDxyOV!P&@%@v|8e)8`#nG0ww;H+2i?!yCj_6y zh{NLEcgy?QJ%9Nw-Bj5}g36pk7T#7-X+?2;WgXUS(92Ca1A=0Uc?!;g})yH)TB*T;MfPWZw(0&9(U=);prr|MoJMiVF zd}`)dg1~qG#eZq{e&#(0#l1mczYJ-f*3lTvRzMWy$$b{F<+gcWEy29A} zM8eMakd5!uiBs;P3jjO<%7QxthaQ~{Xr_yVLXv)SeB>&3!w}p_bZaa4kG1yVEjr%T z7N~W66o>EiZaM2*e5U#&fZc_=cIDtB?aojBM?9_ieSEED3zk6(k>R+wycbA8ghM`- zQmm*cViPz_SSPMwMG2`+Ah#_Om3oLzds>tNn?n}HVZzX}1Y3cPW}gWczfMm2P}jZF z@`MT9U}5o(?z$>Jzl9s*J zE7qh=le4p*TpOxweTmSiN(wu0u;q0i2_Gw*mr^rGGX$#GQEEm&fy2zGy3NC|n{?ao z6L3sW*-_(m8mdnkh~PnSs+UEcC0F*}m*1wh2*?1Z=L?_ukMQRd@JR9mcdrVIlfmKL z_q6*z_utw>*tPs%9&e}u-w7P=%`BcoZv6Mav8l$0P|Vwtuq$a=NqCUW}4)$6`TU_)Pd!JJD{DFh&siR2t`g z7@wfv`@8&RJsUq~b;iX{#{0c5*!b=Rj=l^5|HFIkZV!F=qwOL5KS_Fb2)O!R&xD>6 z&_dPxsnL3X2s*6olr96I&|roC-RkOU+q`{iy9ob5=LP5OYTH4tLbhk`qwW3&9%_5{ z;N!O_{38CVRsN?WdZ$YG>;l~&qjC!FqWo?Wk0K^Ja3LdMl~y`{!>{OO1(%E2b?Z)b z#0^r&@6hhskpRyHz`+kcE_2bfKZ8GnGUrp0@Z-V3-O9FdaDRLB-Y>R2fBVO6@88|5 zFS+qk8H>xh@zdzM%cUv!B+kyyDV! z)|oro68_g2o)r!qKGN<(fxqyjueSg3@tfNJ`s171gZDj%KLoQ?zInD5K0D7XQ#3*! zx|=L6l+-Jq^ynatH}orZvx+Mdvx{D*IQ&6T-pE9bgx^p@ezt?Z1;Q%DQ|UQZUEg+H z^?f?Pg-b9kFh&IC2R`^cr=$DsZ3iFtdfRu`=h}gLzNq(-`3(mvEWV*nV@uR%^x1rl zsdiiP5lXu@7?vM9k#8$L`&mzE|LT`s)n0V{b5zj8bb`Bd`?js^%I~;Tzc2lv7q)MG z`|kFxUw>bF_iw(x?LTm^E#v=~;M}=>{HK=5B+(YOJnqH)<=N1R-X4+zXtGRLWZm(_ zZs0>(=-h{n-O?!D>7I4@v)Tnu{t3L4=~{ShsIee--uw;~i+@^}pVqkenZJM!(mfv6 z-W4qBica6F_@==zykC3-*XyHrq z&I+jEztF{LcL}@pS6=t(_QrquGi~b@yPUYehKJ95?u+fUulqOc^Pm4R{xA#=LZ*we z7Xn(ezQ*KLU|H2kn3svw!`o&8FcPI^)lVwZj~Atfl{-4O!Vb|92HGd>ANKC-2+8tad&K8 zZolzszuJD{M_x1tcQVXF5ASKOeD&+wC;sTqRAfyL9S<~%-cfxAyCStoz_Qa*i<{~s z20nDJVU7d*A)GcG+bY<72}7Z|QsVILlCkPjvXCJfRNb zGsR#NsPm@~mJ>eiovwY6SZJ*geWZ6IxunAofE-m5w~TH-70aC}yan{Q989V7Wez^E z+@AxQ=B~tzw;uNVfe%w-aib+B1gp3ce%3Re(%$$_em2w_8sGWOced-VzrKC;v!9)7 zf5qjOw7352*W=!WUx@butmewxwmj|z%dRRSVQ8p~3AkYhF`A@j;SLaR5o5AiPy;gG zz?Y+ABvcX}2Ye9?7|91ps7HJ_Q;dY_WyZoo!9>$72|>l&WgA8?iQ*PV2LTwj4)R!A zIokf`2j10gxc)kG-#~x+?YFmUuDPb2efHVyrkieRS6+GLT(4C;AbI|cuWWz*7q_%! z+_>dh!;90>XR?Ni;uGW~WMq8yCe#Fmk)bdn1tB3L|Zqss-9G&9R(MS>S*JaDZ5GCO` z8(({xke^muDq`NWTE}&fuU}b!dF_KA{Gd+9&wS=H+sj_|vi7AfeW^X|X-{i!defWQ zwbx$Tp7*@xsn~qFHLJbw`Pa2eF5@4K2^-6r_6u7c`y%ITU|*j{8z>T%0^DFB-POf$ zKqS&sA0oP6x+l?Bu!zz=T?fihPH9x!s=bbLD@KZwFf2bHL#la!As=&O6l-p!0gm|L zWdMK1w0-*HzuTVrq$h^q#Q5I#zPG*hwXc<&|8Fvj7?%+8{5^vI_x`-|&TF6g)Ti1N zS6nfH5rV(}ieGFW{piQ>zo^=4W6C)V-@%rodL+luBpi*W!?3uL6mh{wZ~AmQqadIx z~A_31W6pE}|cz2wfPIEkuNEYlQyU=>jS(*p2M?* z(wJ?3HwhVzkIqtBxM>Ol_Yj4jSxm7@FX#s9!iX%qdGpTd6`vPniPJT zepXKIHppKQO+h!OYJ_3Dupimd&wh!Hf37!9PG*58b35>^5dRzcS#8grJ=k!=9XGb+ zfwF5C{(3xi^6}akJGP_1EG!$dv_4-4GfAs^sAK~xGj`71V(35tDm#g*pVKKy!rcnr z0Yq7@bM)2T%{Z4~ONEO^`e}27$;fIdwBv@Uk;ptyZ9} zi2Bin2fvM=5m&rM(vy0dE{vGovXN%3lZDnxQutMw1w#)AW@|EF-lNbUy)@mxS(Pl7dNc5Q7$u z<)nd#T8viVcTf6h~%9A28>z3E4G zKhi#rH|u9L?($c?>Qy>T$4jGWw$$;i`nk`2?liSze46#yTfc}8VDXe+CXEDf7r>*` zGnYBjj#g-ylp~r`Dr%eR$S?Itn3=zv2x|#x!rat~eeeU3GdUO$?pzcd%;}Sa&|>Fy zDJcE`Aa^P(iKpL`ldo$)`ysDIp%dhP@UcHtyjdNeH^2PlFVE92Z>kRC%?bX-6D*#Z zX)~|DU;fJ18-Mu;7EOc!eR8_VQlXesNJ$1wL(ShNA{7MPr`SsA$UY=am~jPD=R)#Y zlrZ8LZHhfriD87&mwZlfVH(8^be~)nw*b3Ijh{hHH)7Kl@s$4->d>J>x+cHmB`<0G<@K3`W?|p*mbc)5%^8kRT6^#Beh43Az<<`csQsF0 z&~Rb%RWGnKRk7*|u}^@fpMck?i1MigNe2gVo}7Hp714l^e4vDS#D_D*ia*rP-MKO~ zdvkYR46$n#0kXFC$W4RO^$!R;+3>~J}Q$DA-R*<2+u4Blnhv^5UrD^uja|)ElHP@4% z6pad_tS^kn!porWPO`@QPrSA*FSeWh@O|ytr(9hDPaFNRfB28v2Y>Gm+R~04m^^}x z^7B1iRuAzoX(SH%l@Ae55VOisyxg zXk*3gP?K0phd^$lk)6pF@lm4v2M)Ja|Fd6i5AVkR)^?iPe}4CGwhw*?#r4l-P0J4j zj^>GhHOdwur6h83$waF(Wrddyx*{4dk`I(nkN9wgSgL`Zwr-zpNtgo1rSN(C@c5{PM51MSQx_ zK2bV2!aenTyRc7;3CEqHN!hzTW|LWlJOs{@6^X8hMobumGt>j)u6G#i7D!d3?xl67 zY@iRU0i*#@6mv8`!xRl=V5Lqn6fbq=A0aFiqLvv#smlgr%Q$_0{1cySKl<`lwQt^W zr|eFp`?YudM*Hbk|57`Ohh>ZWvk}VJ;tN-#@%v>{q$s@qdHBJ7~pi@HZ6unFuN6l8x=nw&T;fw>Z!!v1u)+$e+CV zGwr!IysZ7s2R?G#=g=LkQ-6Eg-?f+Hn)}aR_olY8hW|cqi7$&d(_#F|FDzgAd|iqR z#tdsOxdasibY&|uVM~N!JWW5RxHT`MiPo>96Z&cRjBh{Mxq;J1S4tp&5p0nKkULxH zJCcf9%&VR+(N^$3$F$Xz_WjR!di#Z+eMNiW^S>YO_wMQdBZ|+ozx3B%ZNL4#54GQV z|3}*H2Ork=t)`xq_F_tZ}9dF2YzY!(n}wsJM1Upg8|=x zxBU375R3W%o-Kdv>$kOAKL15L#P}P$&c%OGux&fuS&BC(X6)Q?{LNQBFGWTqJEb75 zOOqs~*mBAn&=-@mPgxSSeu0_Czsl&!M4oKrPylHu}J;ad0^?@%LI|Ql;Iitg&%R6QI z%7Z3$ijr_y;T5#-A`2h-fykMZB_ZpqQi_vsRp%{D-)&%QNxEKh;3=Spl1W(-IcZ7I z)objDVnuHD5^d40quP}ouWxsocf7VWN0ZgW={9XHlH>SrSet|k&A)5rE$)P^Qh@I) ztg08y&SPcBB+NRtAjGjiRx|^M1*ezEdvOUp*gXZyyoa$e7gM4iVhv&u+ZQ)bGL{Rp zvl9#U6Y-(cu8j)TnI%X`Dy01LgPtfJiRFB4sx!g42-?1%71X`ZKh@r~(oOnsX{8!t(bRP{JZ(cB@w+P>z@1^@s67{VYS00001b5ch_0Itp) z=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91n4kjy1ONa40RR91m;e9(0O?;2*8l)O07*naRCocsy$Q5sSy?8yBjUvz zNsf^-Ns?qHk_;)5f((jCDPS>KVpgGOmuU4;yQsF?E_Ia+jZ$rwU9}1eS_|z})2g;? zs{mP)2#y6xr-0Img`$X=2|18co6=OKT@jwuY{u%cI0N5HPd_9VS|hXX=MzJr4J;$sx)q??f*-%ro_K z5EEO~)@bmlpLx;XPl{THf;^^haFeM`{7z-QI0mL{_Lz@w3F?%yIs_sD!U6})2_Xyw z8|7f6#!@+Yu=CJajm%bbat!;0Mf4^l){=Qvax2pB9QjO1lkHeUIHo4^K$?obB4nOz z`HCPf^o%DbTU27>l{R43MxH&&}$bgYs-F!7)x2kX~T%yQOdt1}jKcc(RJISQ3M0 z!kR#?pkrBR;qL)ag4}v}VMzKFBwrr9mO?@K%Yg>TB*#P*d_$XS7@oGY z)gn9ULSa#ZK}!I|T6omvz2e~4cm|(y1XV0ZVn+W-_m8OxW^_b$^{l~OjUaePhr5Bu zZuI!lF%^^FwJUl%yhmKt9h7`Omxh8wM^?g<-)Q?j2j_$X+50#q@l?ez5YU)FxiL{W6@%9mItd(F*D3J~S~-{_ z5dz>aaM0)ox)97c<%X&}LO3koLm6Qt27%1V_;@5XIYLMegkqCOmd+DMxk_;>5lBba zHS91rSrBAj{3a@@b8sR^sCY)DkQ6daFo9An;Lyehqauq!afm0t{BlXOx)iE|`BN7# z!`$34TyI^_qA%7A?_=m*bGq(vahB<*E_IGhTeHz0n=23&?HufK9^4kdsM;|nwL#6< zk&xUU@C*+_@yCp6jQ|Wipp_jPY|1@NM&?P=tizU2OOXlP&(2y3t`;ZW zu+zl59wn%EBsxtM1|%qa?lCkK1DHNNrk`;O97g6*gMxRFgBi|37G(rR`hvew@)=^q zMpX5}7JjFl7~}mF87ahj(K8p)pCbAfNl;@#HK!SxLI;;ciITb#CBh%i6|+w` zN_@m6kD!JR4%Y(e^JdnGv8Tg0*W6qYv`|O5)VqJ2vXWPhqL*M=b^S}552W*ym^2n! z<$*t5-f2!aH-nOppPp%a*SE^o^<^;qon4qPK|!N4juPjGAqU-NNS;{HjGP3>4_h(U z3uoi$&$Ohe!Yl`!{hETq&?g%(_ad99E9CV5Y{&-oOM0&gf2d61K+C)q@*8pA|M^1!g$)lDQg^3$h+n1*0xZ&ky zR2BicN1M-roYQL&1rDy7vnX_drk*vztI<(mnlL*1z~h+MTmi8V9NjjTYkZN!_i$E|;c^^z{d4Pv_XE)JOX5p1caYU6CewxxXa;(3( z5ZFiPI+maA}%i_(89;VT{94hJ#~A4sAj0G}Be^@NDv& z=(M@K2DkQ_JbYebM>5n>4HeBfRGZhI9fBi=#08G&$-!c z9?h$TCq5T}JWfP2OK{z-QIt7F6Tom4BwfS=Cq=;=!*1f2+fnM=?-4b+*C1y_5C)wl z#VgDYh8s6n6qw+$DZ~MNMrK4wJ@LnLJW#p-2EUJIC}wSrN&O&O|J@?ln5DK+R}Iy@ zD93=@DGJ!MqO{q_>}yYEw^;*F2`pY=i8h-U@gxYCF?G)6h3kH6?jY$?@RfC<#B zv5zR`FAB`mX7LK*!Kel8oN|h7sIhenIUZF}Hw|O!W|OSOV6zQs#d3c8z#-bH$-=`=ljz@!X5)#f79 z>(_lSg=SsjZjK9jn@l2EU1{A>TqDPPb1iW6)o^md@My0l;2grL;>%ACEUP+av1N88 z93oACVk}9ug^Zv~6@n4zI*{39c2c<@JJhbtz(rH~O1v2jKrXs8P{SmV6Vhc6yI^6J zmdX>d6QFx2Wh;KJ5}^rKk%@G{dBbea2Gi1&La~Dt|F2}hW0?ZR=5iNoQzGcBjxAlb zxxy3|_0=zY9C`t6Ng@lOiXEmokC-I$rzZP`9V8Q7Las!=bU|&(rbe1Al73P z=!aMhaL_3p9G2fLGRPam z={ZY<7l;ic0!pvk2DFzf^T{kRM^l0z`i2@HG;7fIra->HVPSLy2c0jAbu$qcFH>?T z1`=?}u41eX9ev?vHPYFQN^b{?6`6CnrNCiXGoCDK`Gd*REo{n_m=5N)#>qe%ik%P< zQT+5qeDwU@IOnS8oN_RT04D3>GtK$n@9_oYx%1^mL7q7Z$cloIJ)8lH)NW!Kc70WA ziP?cub$YQuB1%QV@4fg;&e~~ne}BTr=*b|n1qbDrKgw!+8rj+qZI#&3-EJ&43)E5j z+6(e*ox{pqBi{LXQfHmy$-$PS5cQq>5o+n9h!MWbJsa*U*_gp561HNFrKCyb(d|}L z#sA@(Z7vq9qEk?@c6MVBBzCeQ2X+6CR{m$+xvUt*ia>(1u#=Zgd&pxp<8%!D?(4Pp z7|ZGyb>WL1!4#ck)@jZ)bH&wl&KaY-#bDxFlhk5nK~n=sb9}}dN4-P_|NOO`ut`ZA z2m{h=7mCUuIG$zhPYCVN0ysELkxOFdurPTfs@7pJu$VD2SPzWM(5w$Fba$xO1eI}x z-*QK^^{|28O4W;>Plws#OqA4GeBc?ZAgiIDk6@=m{>WrN4plF!gs=%iA0F(a(@~qn z%95~YHp7hPf)W?x3+r7oX{=V{V7B6Tkq@)g3~4B~CIcucnP4KGW@73jMiRQz1jb>Y zHYHpbSN1sE~&14!XT>8YI;>@Na4pu6TxuY29mk1!V zIk9S@s?0+^Ef8av-ZsL_#$=W#I;&MScZk6cG+CL+>8fRzg;WD%sW_CpSpZWEekq>V zoirg<_rWv)YY_=w5+#>U1pMM!cXJgEa;h1bjz*IExcVKeg|bPqqfMa80P&pF*SOn- zqa#felrX3_&|9tfQqYSYXzf)X6R{#yMv%QL_uMeYIaV_%GYIw%0gemZcAljbH5|FX3a~iGPd67U z7CiVoAMMt_Azo-smv%>FmwD3yq0~S#^62|uovTX?t3=bBNn&YT+q1vw>ISj5vT4kitX^c-L)x}&OZ)t-cel@c?pAFy#)U6> z*<6W@V=8Ndlt9*Af!t_;@m|Bhp==)V%dGjec)81bX=vaUP6dGiO4t1wkKw{Whivuo zsb$DGI?M@@h0NYOcyJAhj~lpg!4NNY_d`_}ZQ5YeOp!$g*k)!$b#qKc4;rQLTbTPM z9AF#V0|O>WWo>Ckj~;KYcV}jgkRXx_o(XfRCM@2`*C0yq996`ra1=8eY$A}I;31wB8G~FBJ14#2H<`~sHak+{ zS?n-g2@W5j_QV@g-*(5B+t#h%wjI03_JfAGiD4#p>>96Q?Dm+yP9 zZN+t%wcutyd2mv-3C$kcUO4&a_84`j{KT=g@6uW+g|kapIAjwHGRjD>a*Fzk-{*wgW`U-r7MN*XS&!IS;sVv4%$jQw0;d1yEt&{0j}`8 zs83@GLaPWBV`@z%Bo6s34akszMoub^Bw~|d;u#*fR*xS#+U`H_NZYn`t8%C=Uub5u zw=v3^*>twfxd3W1Y`u&E#3u%CMeM%l`gY;dzrLM&_1CvU4}88I_{-mDkACTs?ZolJ zZ41t58k%$D+0Bw`uh{Jj6|<1b?NJ@$;%I@@e>xGnuc(HMgD^5ZazcN{xn zq)uYpXWs|o1SgQ(26jvmj4zAJguTY@7mpvtT02H@tO3nCQ}VcMP4@-_?5Xz1R~~B* zJ^DBn8h;WhO5?5URVFQUe<4&B#@S{nNCV-+w{30bxmPxv$TV+zF226;ap?YUZTJ1x z_qRvy_>?%d0B3V$Te{4I{Bf9Wz?@&tH*7`($*j4CvPcT!qJIJ&7s|^inB*w7D4M;$ zit%ZTgaA3N!s%kuYrX`jw1m+6^0GMfiiark zR)6Usy`?ZoFL`>xK`*_XQMs+GX~V@6Q(R`>wtaWob?y~8){}VG%g65hPis$k**|Pg z{`wzoJI}ccXS4pYnJ5OWu8_htCtp30jz5C8dM(v5_pJ;4bP*kxgMxQI~?{LDNtP}Nw5 zKpM@!jt_;o%{+cAHee<{9neqLf??s~WpPr5k*SzS7Fi4_7Y=$UDQ7pU%rJ@&Fk)?b z`Xs?#>J^Im6MXQx{;qo-z`Znk<|j`VdP3!mC3*X)6;Y{`q+T}0!d%7k&d14i7ssxA&HsU>3^n&0ZjJu=raI2HCwfTJWiA-Eh ze+mXp|HQ5Ux3Noi3O%0AV$Kh{X{DX{RcqN?9&KG51s=(QIb3?TNG02#7@V6gX9e;W zJEfpxx;rksiJ3I)L$!-;cqKOECGE~zey$xmc);EO zSY|8D>!C^I>Di88mLxfdRa7W&PhLahCJEyLmV(>DU+jXqJ~ekDCye;YzlHB2Ei&TS zpZ>c=k`^8#@x`bKT^7{vS*JgPxy|hi#@S%oqIZ0EUVbWA_Y$*D)+aeEiJUMn^gXNee@l%y&vnO5k+;;Wu zpJ-qFFaM++eGKE{yUgVEIbvXn%x5QqG|FUl;;c@O;YN&CkmN{#%sxfHDX*FA=(qts zC=Oe&X&v}8=4j#8+_8ACbx2~06*2KMK21EVN6(K(6PgLVs->b4DgHnPha&yc!h#baGk@3P%sqGZ8 zEY9IuBP`EaVF*NUGD&}0$Q!TpglHV_kM$;*v8dP}oc35o!1I|pxXUaJo6YiCZU#6` zd1_4YNh}*DT)yF`c2;uOBO>G$1a@sedU%0<5}WJdwr$7WoZQ52K;W6|oXeltu6W@O zYBOmbGz1)C8l}4;8N}?PcG+YYPPCRjNW7RD=O*h!62tb~Zd<~wW%Ce!7dc5j1VPc} zV&5IHxw>h2Yh;9WUPl{Q)qzA&wvds_{8noWGJ4{p3fKyj5I7jpj#-CqityUv1ctpw zq0@C87ms<^t3cBOr+B(>JDo3&Tk&m;C)&8l&VSlV+J!f~ww?6*WMUgAsl=ma;_z)Y zDDjMz6-vjUx0tK(YyiK-CNOYya_N*koe9rHfGfPX(Ta`1YQiFTQ7EqA7m5cII_@7C z#gue24tiiza+@6SDFAlj?I7;lz5>Z9uStZ4glSG9*kpEJsLCwH|`Q#^ylcb}I&_dDCZ%btzTFztR_(B-(81B#xEUZk0<4x0I0R4rI(|ejRbpH5bj_z}LwL z8xgFQEqcoES5>mdP>#(uV6Yt6%=X-_bPht7XHU7Q(MW&q&1!mo=L*C&Uf|;nzF%u2 z=!rE9W9#-E?Xs`^zQ#`lcyCSlD;swjO2{W&^@W_f(G8p)k1Nl>;-ueIbqc5k0}SQ} z@SYu~tK`;ACvykbIaLg7X{KO`jySA)K~MZzn=43EQ82S-Os0~olZuz+@C+~-2JnIA zywW6_nRcEm9R*{TD01W2IRR26M9=?*P3At^T#f}Buf4YK-Jf-N)+f~QuK(Uku5A}S z<2C-ZAERMvm(ZnRGSx6~+>(6)LMMTnfbcfK$T|Zd4z`&&5;~REdIb4h&Cw_##-=$1 zb3t8qb47fHQZPlesx};0lp2SIRKV z$tvW{gJWf-91jtg9$4PN$GgXEyPi~^yaYbs#y67tpZWT>1D{*swbE;jnvAw@epDaR zC|8aqpBuJ8Du}Y{0oR$QV!V9WUCwS2KiPm$DK^*wVL9t8crjSN<{FZvBL8%z2Oea% z0$@!C7CB{b31ADKnA}M4V-pf$8!~bmL2^4HHmun4Sqzl^kIiLzRA!7}QzCQeSpd75 z`S}iV$CEC@eK3E%y7!Da3}yS?bK3rAe>>&{SO3V7FNvO>I-h{iI6ZRt6G%^-e6j|L zy~nWQgF%G{nzsOi&VFK}8hjMJS*^SVt4&D|p&)bk5+`lhdo{AlCAJ!UPBe}_DX_}H zAUp!p10i9W5)%$P+hr=BP!WW&a!KaFjYTv@7~~2E^={+Kp*FHW0-9gJ)KB92>&jp^ z%1t=(#KjNA`RTw(ylyg+XBWHVI`+t^>GX-H0pSmpAQW^7xQ>l+fM7L}IfR(6zQG)< zofIfnlplw<8QU@R$ZHW4haEWjwSVI*6k+PEKnwMl@Mi{&qzq*78OQu_)+5$Q)K!^W zEYge$vtw+pWQW_|O5%*v68FjmQ| z0|L6@@hc+6} zhbRvfH1AAVG63M=hKT_56#0-p?1svt=G-v&iv$M^SW|SwVciS*sCa>cNtrJ=I)oCc zltBPssIu~C=I3VGirWBN@L3<57S_)m;)pYe`iMvGIy-*+!uv`FwXLDl+VMD%Gfbg6 zcn-_Pqc!tMh8WM%?fCi)KPHNK4fJO8iW+wDZI;!6hVX;X2< zNzt8&DYlAS90bShfiVRI7bal{3pix^>(fl2^FsQy_i!j&JrQF>=83&CDpPdCAvRa! zWne!uAi`GNHX;cKjExWFB>rgPyz5`lE`HAI@O>)Vg5-|P!jMz7E%=eD2mbsw+Jk@j zVcf6UDSo>%&oq5{f`K@)A=sqQPvESwdy6b9~uHlG$)iMkAlpdKO@RmHM*A=bgvF~If^ zY%~up4<0(JhkU2|;JdM-_!>+WRg3o=8i1EEn56jTia`+^GQM57gJ01Jg0sC_HF9Dgj1vyzFq#FOWK+z<=BfGiMR=B!0&i1LF+(@oP7RV- zuR(NlPvw$a-Ov18>x#~B7LsF(`RVvB1@yFfBtN-&yd6LEh@SZt3r?q17fFMdr|%9K zr(YY(M#QkKD?9N=9G50vP;7dSl;>P=6KH)lRd{5f;&yh?gc*SFO!P$z2^_}`oYu|v zMc#69I3sK8U)Q0PAk3QPI|F3wF;smlqtP_QP8P_hoG?4j6C?@@jsTTNHwFB3`qiV4 zx7DLxK}ab)7J_+07OB@2wlW#KsL!|Ms^^3*?pJot|H$KX>e~pG*LS-wy0&fGxzB4r z6ly?47Vh)sovkI-!M$2nGuCYI`dT@OJA)G{<{`#RYfOuPoDcauOxY~f8SF-@6ddwa zMBsaQW+8AWh~_>B4Q{fzY*3yq;(-|oWgZ#?Gda(0QhN?&Je|f9&gzjz@pp;`IY7_h z3@BK2C@*XrfTa(BdNUJCATjLG@Y>5S7;fE;Hx6zx$L1fo!M5+)Zy%`h-US=ynyu#6 zJko#%{@3^fnjXyGV;RHdJ-g(RW8~r-$Zx)kt12K{qsDlr7ycnYIZ23z_h`r~PD9UgW=5-0<2*|3{ zZIpR;UEcxgx2sRHxYL7g+rF*szTm0$*(3+ki?_v=4Mr}Aw>bNRuAXCH?9fUO?OLl2 z3NPnIb4NpW4@|N%9*>p$HRu6SA}P+ux?l562*@aRXvbJWfQpIWxK+>#vSH}Lkyz)1 zWW*9q@4%DRaa`c*qn0haD`Q2J_k^|{ddC5u27m){6T<~kRXSL1TQrmT4zdpG^r}03 z^sWo8?lmD?CuJ7k50!taf?~mj)FnV-(V4@s!(2EdUulAmcFvvqC-=dK8p(y6n8e|P z93W$&Zi7w&W}}AR0*yu00HiSbAi~cu3xzEbSj1@^kK#|l6wl3)d6i5#xwn|d5?g-O zqCE$zkPa72PH=7Au6tkxFwfaMatd~ydzJlBh$phLc*FyPuxWxU!MuV}j8*qoA6aTK zP(iyDlAkq#M6LBAx}uyBK9T5bE~zxQ&zw-{Fnh{wB4|`b` zn(8qz%I=dmwY#2Onb@Gi0u-x|T=BFyZaGJyGK2nX&9sc{DtCOEQ?R5|2Y-PQA;0(3 zvlSjrj?Pp821sJpDfJqXWWxe4j*lOF(9c|*SEO-@(l~TQC|tf2Fbn5Qiy4!rij<#k z9PYg3-I9j|N5R7;Ry-`)46E9hSG?%&<4cNrPHSuo=XcKd<;G+9eT{xLwi0wyj$We| zH(RT;Q}Ag~eO)z({HR^?U?!Uh%b_C zkH8>|cvb~6y&S@(>p^1UHH(Qfn!=r28xRnC;@FXP{P4p*10vVB>?PQF*(r}-bFnO^ zkLOUm)(H5C<45rGOkV)fHxHvUIo88E>hSR=oG$t5H{$jN{yfd!40@^!b=+Jl*ks2Z zzaQ-71&Dc-8#Ek?)MA5ZjY0t2BsBpx748zJ!+U%<(Tfg;9_~&vAj!zbHk%|fuXp5P9K-b& ze=l_lzUIO_8kOomwDadYLyuudhy=vZ;mt5MKdjAMI7+5wme84%n`_U7*R}Jmd5OMa zA6%!~^Q6VQ`8liZITy${~;gsJ*%61LrKEkXql}k<-`T}%F=wayA zDdrx!;YgCk2qD%{`4Auu_iV^j-DGN284WeEePJULH3vHc{UYeX0I!^n>HGZ zS+8v_exGgMWjD4bJ^7|H-ds$~>#!_9i|sXe#{&9>b0|CdF-ChnSk-mNbi}Z$z0fK? z_Fym@Espkom^GcJywR#cz@{;Hm?g7g6s$gJDRjT28AoBENWa2-SdmaF4>lQuoKE9) zaNYy6S+#JZOj#vRv$EWtR?~Hatzx3Cfde+~<#=!Tu&hYHTGRS9V zdMHe%lp#pbe41oOVKi>n$%98W)>`MqNYiccep2XGNU?U1B3>yhPdpVor0;6YlP`2H zsY{V?T8EEToh2MMX!@CvbjpFs*k|*TclZUY{sf*SpCCtw^VO(>ao;B5(f8~2)Tz!~fro3go>#v1swfh|v1H9Rez`{^Kr z!;qbZJ}N1+%P$QF29&1w4Q{SUZ23m3kwzVx`EIe7>rxnebJ^#ZeEsL3;FKQ<{M-~& zY)^S6V*Hf`*7@(zLA&1i>5$h%_59BbziPalqy$n_ zLB&=m86XZ21k~J)Pa_03$ODF&E8C71=rR?Frt`0uw&RP47v1nW-4l)Y&FJ%A4#|8J?4jpKCb3#l zmB3Bu(@kBF1)M$a9)6Ch~{h|HvE9(OQgX(&|(2A!4z$)La41{Od9nlsz<=z zA#M&stUmQv-hc3pe-dg*PrdGqY)ZN?NlpKaKR-1qQX4*_c;_;b3+fuxv)GNOHL9yAgAE_~@JDz(qEzQ$#Uiol@pMFwKg`&P->SIa>95+9+Y(VTd+r_E zV6k~vgFUpb1cu%fS@J;pY%Lk@jiUVI2&46J=Hknur*vV&Wgu`Xy554Hi`x0RBx58T zcpQ^)_FCT~yVN-cC(8 zW_$deKgFx6|J1q0&KRqgM>F|&Wj3EM5V^tl(s(8x36&}b@g)A$xwx*>^%v{nrolt6 z7LtdMuFN)9)a?+eG4DMJl8sfVCi5}E=6ox&oIa5X^n}%9gieIcF7ixws|w1*G>*GB zT@su_6BK7GIsC6)O?`^_L8Gcs(ivi=OfEZ!GKiDNkD1`TO8sEDI^vf>s#W@(Q{yfb;YBG zgkj@WVx8Gge2w%Mv~-KN0*XhX7d1jUr`&4}Y)W?KIv3(7-W06jt3CXIk?CSt2Gmyy z9>%Q2+}bX_@o(cJp>3Od*WR+T#={TZs&}aTF&NIV%@~V{2eFV#ovc|elXRh_OEq_c z*^NlcMs~>vw8RGsW4kdw~r&~L4;MStI zI2+`!nvOeb9SS)7(CxZF=Y+2HK;bCC9;%WPf(O6ddhXRP#u@CHXJvE6xDR22*}Sku zw|WhM$ywDrhc#!|426(ZHC385m#}WOC;5 ztKkS6&<_NG|DU(>$B4p1o+XR|lLVrg0$Bh)Ego!c2fm zwrLS00?vMbF0)REA_!(Bq;CH+0e}eEG!j zRopkb3r}jl>#v35y97KmP8R47`KX${itqiOe;qy&+JCjdH@`f67;)^e`*D{2B4pln zL2lI%b$L?Sd~wY}e`yTkE6~JDK8A@_>*R{Y9PtdsV;1aWmDA_OzHlhkAPHjE$*F`E z-8oze1CxfFR2?(r&|m^bSd1=g>YWqCPM?JX>#4lI`9R3{MG+OHr5dp`KDo^W~$*P(~hEJe@KsIrQu?Z_z%nLn-o!>dX}@+<|?yB zv8lKC`gGo zL|@`38>|OWip@p5bR0WEfT)&`S>rQ;PYb@hMO>8?aEgs%&nBjb=vj(QGaSLSjb0j0 zQO|U+{77j3Gyj%;&mQ7gYy5@A$M5+|z02LApKIiN@L{_q=E(}^JBboudS6(^pY^jBufHDp{BP<8>sI`1fK3e+lyl=9 zYvvO7LftJt&S3J{!QyR9woVqd{6scf4`=jJTe9mnT1#^0(u9JehjhtDSDgcreiprS zD?(+FilY@};Z3Le%EZ*k5o|LLAYVOt81EqOMqNtU3-B2js-&V#f3jV2;~US)M?%B! zP|~r-zS17P^<(;D4{id@hi@*HDBWw#Sk~z$0rQ6^;$xj?A4X`v#V7Vgaip}u@Qqe) z(CfzNR9#XXvolu^kkmO!!4~Zt>}+;Q5JmSFQ5UX`8aUjxS)JZN;(KGq4m}7;7RTEX zY{**5GMgRwktc#^)eJNNZRjd=2YHV&m zXKPLG3d`AG}WEh4v-S{ce1BjQ69?VnaczM~}AqKl2~${#?u* z3tekUXy4E}vF<4ebj43y6Wl~4lQnbb=otI}9b8am7vGWGfy+f(tRQ7j5t6UzG%QYv zBcl^0qGR~bX+KMiXRt#L-mY)Hp5z6zw_0vZe-gJP&cF8MID_#Y3=Q2>z{{Kwkk z_kPy?0R~Qu7iKltT*Zv(j5S$@SXbczjP=g7$CY0E9a%AXMLK(!Pu1;+TuF6bKUqP>Ab!;qV@Q?_T_i-eW4K= zG`3lxr6G9TK$l2)=Yq-I<2WR^v{tcM z2WZE2b0#yBAd|fEz^43A&=XPKHjaPvF`PC_kY(VpB!$R==kFGYq7!h-*27bB9>>%R zdP2;Lqx-{>;hQAr0{_rgbQgcPSERbFib%!ZcwO0ZVcUP>&2iEX*QWQpEphn3UG1Jf z{MXoA{?%=i!?I>`p*dQ*peG(q#>F}i>$6KqZOJyp5V(k=9jgs~JBJX&nY5k6wB;&Q z3^1V?PQhlF9N}NyTnwZWod)Il5KbFfbSRKeHZyq)J8{UB-q1Fs$LNoK<;!>n`4Dp1 zwBW-Z%$fai4W~&{g&O&Foc;Lo|6OPMBOwj!M7!hn-ig~2_u8F%pR1Um9J}UdX>;{C z)LBdMZmYpOThCry1Rhfn7YkP7IXk&V9%nO_D4d8jg=Pp0lZKp7H_!#rICCw+v}2~8 zqB{q7zo5urUay6U3NJBP$L0xqX4^+Z_{$^z0^bt*3EZaNg^z^xKMNmdpY02KoUrcs z)c@Tc{=)CzWs<+ex>ONtnj;+CFICWPuyvx*ZSwmeoP%pnJZxf9xY=|}w-&5tq8+CG zQIQ+Onn7eM3dFTH7oA4Rs2Y}vQ&o-*4JR!BKWr}MWjplXU-OR`@uOQ_znQ%TQ~0-) z7vrYt_I>B#IxGO2-}4Wd9=-klZFk-Bb2xMLrSU3yLd|opS8APnx-f_RWvhp3EyBsb zY=dIK#LXJXjo;RI5(m7_Pkv^!U)M<<3+|jA99=oHb=q)}84s!5>jqu7@Qh(EIc80` z1zFl|EM*|7Qg+W7N#s2I;BDfFHyKQC2J85d(B6x0z&9pdaaM1taz7os@3waPZ@yLk zG93SGj&qgupd3vBi-ytH&x#b1X7~v5IrP^9$FK{(_vvAfH;JJ~Z@%EyzJn{Swdf6G zZY~&Tv!@BAvUwOVZARKJ;OMUjY*3MA8f{~aDq_+MJ&9RsCq>Yl`iWVk6rRLZ^Ew%?mBB5jJMy8K6-zAjwTfL7{v;wT-6c$@FP-Oq?YM z=w-R0S_iB1z&4JOw8*5;0RalX2V z%{B6qJ#VyT4Yf4l5g8Zs#8^pol(J?~Bc|Sppl2v3IeHb5i8*4ztM^Q0UEuR0BK*#S zz9y|2O3g^hTLhQg^u4$q!Y68H;o_c~>+yU4s@?YCpTKwRKaV#W_K#}C!m%VZO_-e- z!qgp*I7a|$6Zi^MTzz8GZoD>DAF)q&+0Y|_Z*Cfi(PZ^ZA{k?8;yCOjvXX@igo^Go zE_q4Dpo9_9`+^~Yi{(!9_|-vha0e|l_s4`UL7uP;1@ZbzKaR4U@7Bf|_|r=lT>mZY zoU5L@`I`&5xw#(xtB<$af9of87S$IWRl-<@COuwrhQT@x-O}bVFP&KEaq@i~Y3%Fb zd&Yg1DCV8~-C>IHyWMtn!7!ePEp>xsh+@lL znTl1Q*hi-57?T}6jCopvTsK=G)>{YZy*AQOGZ-XyStpMn+=UahBN)l1NE5@uQ)S5V zl#OG^j^_}jXC{j+3^~qXD@66|N%JzQ1e~sj{Kt#BwyExC_#6i37d6t~TTw!stb^uW0WPr%YP2P7 z2TTSpg0^hkW)nNx)`>h*ffITRKW}~Cdj z&wilY_ox4<9s3GC`oUR?FNxe6K5H0GAG<^bPBsrGUo+y+x>lSIyYTjz;T)I7&2;=I z?hqfx9}cYGA2r>*tL@#hw{73Pf`1@lwH-Qiq&@cdLEW}t(Ob9gXxs3M*w(R(r*s7E8TI-w z`H?&PcPQ*P9+V!Fy%YbI(EjIq`{`fUbN>8g@Winb_#=(KXb1l6KjR~x-?b0Z@ln)P zzL`)Wo6a)ev~!+g9XRS?4q)Kk(>!TPVxAn;!QxxR9}}NAa-{7$_ndaq*WTD(`r@0~ z^S=6-?dq$pXy>2%q_%U%_O^QBM0@P9gYB++?rVScxxZ?^_XnSD|Ia5r-R`{e%SyI= zC+7zZ+*@o{>qNx;AElTZ2GwL(?E~n#4@P?oieSSzT22~WCm@?6(J2`)F-8mX7*m|s zZOH*4{1VOIi-*1tQo~PM2DvWqv7z)4krVJ8<)zR29=t^2BcW6Ml@Q`JPHrd({O%V1 zp$%_i1%5vr7m1&Bob| z{1(LsY&vY3P z*E5%Sy#Oj2cZqR&O;q|dHND2bC=64H*BrjJ_fds+>{aV%TGDg|lC6~5gfdz1+O;Pe8=(g==e);{M5jq1AndWY(0kWZSi~a{5K?7EB`ePp0P9w z)2DmzMz1*_xf!HN?1uT~^6~}N1Y_<_wxf6{+=+kN`-gt;yW2l}%lEb`FTXUhY`DMp zq6^yJedD)bW4@;S^7}s2e(GobkM`GJxE)_t+HLD&>A=_Pvo&Ul*m#ys*I4~pZ}+CZQt^; z7a7$V9C?lQJ%8tQ?QeYJ3)}zrkN&szEARcawz8A&e77n;#}osTtb%$%mACWySF!iz zqC7B3Ep8{!WNCcxx!dO;f`V{?gD#7+XJwzZfrGr=fN|jE45$7~NE$USAXN4?+G4SM z#ehljtMJ5gK=>Y*zc%v1*y?nC4H_n#{_M^_dKGA_Q3Xr3ICP|Br}X{u!4Yu60Zd#6 z)6NLRm}nd{$jY83%VHhnllbwxgY89M_uTeNzwp278cV=UJe*}rTn zcoVP%--Whm=HOIdX0wXSwr%CY>)uWSPp{d8D0(_fpgWqy#_%UGlf)L|7zEnH8XJ%1 z85bg~e8%dTqi2sTG8bAeN51H$FWK;tg$-5XwQ`x%1?2#ae8S@r6|a?g;982`aFCsT ztuEvEu%k(#nK3p`ZVI~5Xs4~mnBA<9eVX(ngwiuPLV-MBbK%VO!WTTZec<1}t6g#V zB|)^Q0TC7M>OJTGo4(14h$x>_NX_tO%uxsB=n8s}^Z&3gM z6wpaTK~%$o)m*|tj1e1#&$CJ%C=rRn@#&yYY!b_}b-+PcBqzunYx7T}u7q)?)v;_w-HV!>wqtpDfXBx<4(2^G8aeO1>X;)v_KKLJgu3d52 znQbmzN1tlmkpHDGd49Y1{sZk(pZqj_6V1QQ?Nvrutdq|mK8bX*L(6Q{+bHT}5FEN= zrWf=g)U1%W!x?Ff2s{kv;<&j?bBx1#09ibEws=A6kn|Tj!!tf`GIo2Y#BpXaJOuCA zVT_!E0?O$5=9=IX&&j7yo8!>gr32Hrt-^}TcZ)l5U+Wj%`S$jdCtqGXrzd{;)1Pi{ zdefWQ2S5114F&$wcl=m;KF*lO4*T_|@2uQM92-lAJ^%1l8)I=mM50B9VCQoa9eA*# zW6g;VKcU7UxS~Ct9BLF&aTCz7DCtVUFeKzNFmPtY(QyNu%3v^kW{xV|E&4tOuzEuv z^A`AwpWMUdEwL0yfp|h@v2YG&FJO)zJkIQ)BSyO zF*cfWu=6}~4*0@POvyn_O$!H*{AmoK_e#e@ZLYJ+_$dZH=2$QfMr{rQjZln=;XcNN z?6&92=3+eOBIl#Tht)8Fb8LCaj^O&N_q2?*ww8Ya)aue!?M0{PHH?@@Q{&tggQqGg9PoeCAE?-vJaO8YCj$f_ zUh$L3=gVJmk=o;{-Tc78DIRi3z+X8XKHR?djjwN)U9z9nC)7Uq$xpUF|MNd@&wJkU z+I!yf9(;s^8^Wj2e)tFeZrgLtUY*6ftP;)f;j#0&S8)0!&7N19Fhtt*Mukj5q)u#_ z)tFoJjRf_(Z$$#v9vx_uYq&j2>&(U3Xo(_S$Pt$y1%*`i3{R5C6tT+xA_!sT`9N zbpyzI=Pi>#cM7P8u$ky zCtSxSen87>Ur=UYPGR;5-zn;=8`RETlUP+akh2h3`OfjC7u?vs>bj>&U+?h9BagJV zz3px7{qKK&d-&mp+YbCIB-~WI_TtOr+u#27#?8m;sdLUbr@iiVuaoVv%Pw1wx_#Sg zzNLNm*MG-PLgN^yO*WVfK;wY7zFTA_^WsQhjL9wddUlKYI~lvuN^sh9QO!yQ^Ei&9d%DEDBs6aH)Tu2@|G~2vcLMOE8CN=xDdaN*Bsz|r_-UjviRa?Y%)LrR+2*mhF&gvW zo2&1gj+4ZLPcEq~Q5GicCiEk5S#+35j>ayNx=jv0%;IP#u3#tpq_YMLVaXr% z(#!9-G}Fk3b+Nh9W*&E<>j~ZC@uI-Y;xp2{_*TRD=boF9YY7MO`Q&Z4-PTrCCRajh z1RTdp@AcPTuQvc|Ko-sW@$HNJu{74HG2ogTvc3<-@z*c!_c_$4jIGC`#aSyhiV7>X#IIw^bR9>Dk1_)B zo4wqZVh+U9Vsk)4G{-qVJHC4i?%o3jh4I~1akN^a#EW#hgC5r9p7*tQcU~{+%aFm! zGab)(yk&7Z?Ku7wUTYYDk2T`$vq=19-9H)1I13!Zc&f^E0_#Fp7Uls)`VF{5yP_+yS99`$x z=pa5K;&SCzx&;5AePOKJn|?`RptF+fx+50 z1&3in!I8pjVj1Zu14^~KTz#L|3#D^7JebLla%`^P^6Z8o3=Y+h0C&00E*|nM;CNa{ za|qtE$ESya{4nJTpK+H1CSw@o;1f2DRffE=ZEdVbEzxa|qtE1An}Hgx7=3F27lV zh&VkIj|2O#rDTSJ^FUv{SUM+-fsKcSh=Ap~nrM|WN6CgR_ zk%nxj%a=3dFTH7o8R#!!eFAzK@~W zJr)65@lNme|KJbXgAYC2OE`t}V?Xv|?efbn-_W%fuh;hP-`{@ZM}FiKjNSEXAI8T- zx(CKdLu1MDfJxV2IgFgxv?wMHHgV=7G~r~VISo_{XR$7)->f5sAvI=#2}*ISg`3(V z$hqX6Vpz7n43XPwq|F{t2YS@UKhRj(TnZ&M1imqd*q}_^<7ak;B0h1-FFM(*YCH1A z>78G?yM5?4KZ>aJ+cno*(|+b>en!_~NAWo(HxbWhylc-#m8t*aPyS?k`qQ7jF7bf_ z54HdN;orhHCh)6395|bIT3gJ+_zQ=pT42U%e4GMKU~iPQ`DC(5=w3=dkh=zfV`x-) z1v{%j>^)XtZW{>Jv5BAbymioXGm7MCOV@-?@vwP)PN!HH^*@=+K8dA6gYP(*N*x`t zMy%$KJ~Yk~Hradr^?zu8=i6W1wr}7@>diObj5h}d+t2>&&+6sum9Kndd-=;>uIsIj ze)Oa5BOm#QHro&Uzz?)HzxmCUXPx8!^(*ghciw(STiLrWho@mG&T8GVv+le#`m1aW6 z%M&V`^5YOea?$8*@E5z>u20QF4gvvKk|%ipLP>px5irM#EqByzL+V^LFoj574=x#*H=I zTnyyxiH&Y9;(zL&ytCc@h1={8KREwvs&NqP8mxGPvw=WlAjjm9uEH#%`9)6VWH%1Z zx_s3&!O*XlMGNUi#|>~Qg8?e^nVF=H6F=1+7bOW3_H?IUrBK!8GPNHahc3=6nX`j> z-hp;dEG+7%u^59!;={2hyF7{Et>9w+R{X{F5C8a2ZTL3Ckm3m{@B6@q+IxQC-?eS{ z0hQbYDv*b9eA~8NaLwC$9(S_Kftk%!gBJgkPykNY5J0Q(7=a(xm{@ruM=C=k=oa{< zIVKpEWDT(czgfE z;-8N=fxlZk^S|b{`qw^w>eGMH-uOK~)DGfa9CPOen~sg;Vi1!J1|u9g`CxHkNF0pG zbULRDW`)Ju)L-m_IE|yzZQ)YVP$JlIGxNkCbz(!Pp8qiGav=xRakgk)3MNPEpQ#Iu z;zGPZ;T-%y(Bo~WMGuH*EpMC|{hT%KRp)03e0#D5H#tA{v0Jd1Tk&^`FDPuAD}M5i z{LM}Irk@4LVKgCF^y@v``X?SY3MZ7Z|QHCCtE zxVhZCW&1VXbaH%F+kj$U=I{ods!-;tqA$dmAx0^`cZ;-6 zo9qQXuMZJ^W*B38Ub}P%uiI0d=&~=^WLmOgrcs}jpmQzOsN=#O>0*qA@G)cT{KveG z<0dNqDE2#VeqDPD{jcb;%sy=AhNjhuACJ~1q9k7lo@Y%u>Kg%%$SP1yzRs=(sE*mGl zE)acFi#un5S`~xV0%{jP=B9Vuo2u}sO{V#pk z^p2pv{x}_(VuZre0BRemc?IzU&t{q(0dQ8sX5+6j;)nY2D8IGFO@xo0_^XWi1ChLD zV%>a1o99?>jrGOupvVDu;T)h1C=wK%K|{VliBZ?U9uQD*gi@g!unA(gTE9JWxiHRG za5aM_2AJ4fg!M&+W(N30Fofp789ca)A~E#ng9gh^lg3~3b~?G%lK3DK z<9g6h4Y>=3rhRsHrON}@38SA5@DkleSOQHkU4928HU$rv`h#FcVduhX!l8NQe`YdPxCspxXvlvE`x+fXou}pGoA&>`ES5Fj!x5 z1X~W)4I~|d0vQ17XK~@4#s^vW(aYrabf@6_frlOcufz+AE_Rb6XUfsg>#8JY!BO;O z&5h#GW=D`PFvck&XT*VeS+&B~3dD1q<`7_#*i z_0clT5rOJ)80upHY{MK9m?Q*v@-rSfpeEnxrv002ovPDHLkV1g%BPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91r=SA>1ONa40RR91rvLx|05x8@(f|NJ07*naRCocsy$Q5tSyd)@U&MOQ;fxD!bY$yDV2z ztqj64u_>ScK@gKEAsLg*B*(~%IpRfs-?xXe&$;)1@gg!JPsD%E9=`qUea=1i-v7V< z@Yc?I>VI=$ZEc!PoS4)gPA0m+%w`=;j!cLIfb9QdT(h99b9qr@SjiQIcSQ_23uYyk zLWa0;d;=!9IN*#NFs-aa#01+sIKaFoe4N!);)E@FiYYjoRiruVT%A&rEY=ic99_>f z@(}5^&ebV4OEB5KZ0sRr&;13^`Wjaz+S*zpGI6AUUNBZmk1=w?(L>DIP)cA<1XreA z;1WqoyU2z5wKS5)GIU#w5dhT_6%6@27rkvQFJatPxNMYOfOrh!b8J&p=Rp`|g5b%_ zWO0(skQlNzZ_VXA%;ILVI68S~MRSaGhLJsS5ZVNEE?+9J^_Y$;cx0sF2^9t1_q$*V z7&CECpP1HFNY5d{MhR67md@BI4jFCbjN&Xg@Gj>N7n8Gq>5%>2_Y56kHqiv-nILO2 zYpB+bJWH6yC9gvIIMa$P#S}bkLvsH$?E%ESp{(Tg0B zldG?Unb{&}mPDaof-ic-3>f1nTY$Ci2cFAjrFXs7cL^KY>N$s zULyz(CJg`sd&S(GBcGsvc2zF&h^%dxrtq{(!RVz;OGNXH_=K;OoSTVw$7NCw01|k=GrmFvcMIiA6%hYJ*X0b z$x%ljT&F4k`gGYO(kypwDh6_G$peA%Li06b&)GXnQ9_L53q0f}jL-eKPb9Cv<=8qu zBfK#lxnc@vEnWj<0)jm*J2!+KM6qiKp_$JKvlTIIqhLWI3Xza5Gzz8>3D?6t3&>dy zhK`23B2Z6KxQ(MN0)u#*V}$QZauaX`694Oi>wFPPwn zUO>nAK5Vh0RCt&&IHFIk^sOkY3n&xg`Q$E`B08c1dsD58o|8UL6{zQEnq`i9#yUn_ z6GG!`*u_9UCR%e{%q=JV{^08CFioMPu|ZhcZ&`-t>-Yyn2OV+ViYSZt#WP3X%-Qci zt!)&gGgRRFQJ7VSRsx)*a)C*sba+B(EKQ)IBUcO{!xdsj9g)UBRNb#X9ju^*jq`vB|Ez|(RRj$&xig9~ zpThNLIl_Zay(vzZinF?oF4D!`8+9QwJO%M+ah9^If|F(I((5#xW`Yq{*Qa(9E%v&(jhJQ0Ai9SZwPsC_00)cT<&Qn(-vi+}tvFwgMVs z0$C5iovSIDBJikem<7*Z2_?40nWyLwrFl)oWBC~nMq;XNnwj8IEv4=VOM);&v7slA z8=@0o19ehUGP(&t&@8N>hNK*8P0+NKK(n=*@Nl)d76K}v+=i*h6SnujRL=$#L6_@F z7WE8VQZX>cSU2!6lw2K;O-E-6E)QSia!faqq<4d23dX728=3-QgTA&NBh8C!9$)kf zOCyAsgrsw4cEp&|I}zyO9&=51l?88T#iJgLcQAM4teN0~5mgxI0>)r5dllj9LI6^c zh)N}FBzi%lgA*9dgK;fy$rHpytY$smA=ffPv#tOHm(n=KI$2tLNCVG^;-y8G7sn59 zvodH5^bu5Zyww}2`(P#_4|{(kkdD^uc9AW{W*z2CT=dq8t88hQE1^I~rd%4;S(7Ew zjikmS;K9>{2(#!(nAVc>&=`CH$YYIMYAHaYj0jy(cq<9A+-+kqbvrvl<*dd~y!BVA&BZk<87Vek_K#ZZVngNawDo?Rd#9|m>hA23dUv$wmos#AV zLR1m6p%YevdLc7|55nyT#%0~HO$Y;eIO+E+CPwNo`@jmuvlJduAv&rp9&$$00W-r? z1dvvQg$ynlWx^&t$kI=G2}m&oUxthDwV(@E2jf>F+RL@r;4hUF(acnBJ9Ko4VUIJWL9K7WeyNL;paL;Vn923699vH$HpuT{TD;zWkCBc!7in&ae z3A)c&I8D@qRjVBpk%!g991@kBMN;$vPq2Df9^8&P<7$k_6M^O z(gxJAHYEV$pq!0w$GxuG? zX`Zkd;f6TL{MGR{N?7gsz?{KDp+TC|)g|)^AArN+1d!M^dU1s*h;v~&yp|CdJ0n12 zaA~31zQnK~m>i%$xK337^yx~$$`!^Zwz-0^^}&;b%|(fBg{NSCEigD@7c{peYdRz< zQD|9=T6XR`Av z*(FOHaLy7|>x%}FnsH$iI@&x)9X$3#u`$Jgi^x1fk|A)xp){~dX9hMVv;#;dibzh* zu2C0()#f;}bU>jLEhnVN-@~NQ6)+k`KCO!|CaDBxqfC-&qifI|X73QuAEcBW>=?7; zq=vWQ1d!@U3Rj$4l1mUs$rEINuPbqy+F~*)=#f}~qL^O*$C7zDCs~g)QLHx=7Hr`oRF&kRUGa;;uuAoLH1L zZsSmPjKTIzt;l3%RXQ)zC~fOyz|&(4+Ath9*_ha^f|%^NGj&B6Q^()AJH_i9Y@oFt^b6A+=&XfMQGwwi zp`SYWupmrSsJY~DjLF17Dy?Ypg>HC)ZDG<*8$*MGHJHw=DKhkSbIR{t$1+CFKvcCk zIM;d9HFK48{FZ%EXa(CmoPmg7P#0JTBN-Ffpu?gbXU_hp;Bl=Z)Oqb_C3YaCBa+J1 z{2}RWxq>l!c)gC6zztSW3G>u_ovj{2>L7v`aaHQ&OoI_QdWdTrEi!D`ODH3%lN%GL zRKN&}jo@(}EwKb>B@jcq>jtrSUkQ3j1KCsngyF)j^J5E~SHGZW^JVmY8g7$OkTRkK znu5Vq%hN~=R9I3JrURxcg$^^v=B*?qS1H6~VP@mDYn;HSwm2$%ES7%E6@kFWMUKIh zCfMiCG3jMP5mvb56vHS(vnm3MsHQTnZEHEi_KlbtNpFn~GsO5|W6Zvgn!^ahi|FQ5SM$NSj(yVI0S;js~gsUepTNq9AEsV6!FbiPK z#}bcW*ONm>tdk~B3YK^i43WXb$N-6Y4tw6QF0E3pn0@EDF|cyStZI|H^DAX#2F!BJ=y zL?VT-w7e%uTR)jJ(5j9Sx$T1}HDdu#REu1pvu84NEN9702%CJH0Su^kdEPdEX8nfcHpo_B}(UhUbdy9A8<|)50>fV8qOb|pYhJtw&(N-s#{)V$lyGtMHpfvc6jZZ`9~#Gsu8(xoqA?j1I}fzn ziAr^;5O*fV3ehLwo2^NW6t=?0A%x1Fk64&K7alrramFJs5six`?h9^g=QyY%RW@MO zrj3n_>By0z#%Wd9HWq~2#F92@Wuc1BIpNv9efzX?M>}5i1WXZ(vt8ZLt~<9zOQ(t- zP*SmhkJ&Ych_idij%DYuq)cD2vj%uHes$86+2+B|4te$zo^a-Zl3Y;izf5$7n<11F zAldblLntH`6pneXoeT3S9PO-+jm6@BzFIfy!d3$^dyNksdg5RPsbQ)`CejyryQW4iy9mrdXOw8vwS4*3X}HMg-7DFizbgrs@<_OH)Grbag9jB3WwQ+iqLbRSRK{Uc9U>YHK4Plasjpn8LicB%-L($?4rGQBs6B9{F z(m+~Wp+#Al#Uf`sX6E^WEu(z`%^UXg%53|6Z901F=ydgCA2z-1AH88Zax5b5UB3s1 z>093U-swO7^>wy5kxc8Cv>cLcC|Hw?qSvSn#vDEkt^=bpCg;KiAr9lmQd3L>T5l$7 z#p`j3XG(gb(Fa*L+QL`tg~n<^J&xBx_b8ey+O5f%0u!J)GU_p-+fy+?iCDnM!A!*_ z(RtnOXU+m5WlfqvmMf6nEl|N2ZBa z_A}AAX1? z8qfUg%UGDiG+Y(y_{srMz)T|^*ajZ2!1&^@bDFU*wO2<>kJww;A?B!rb{04gVWy2A1mgK<2cGV7os450ym78 z(Knrvm>w5#Txup;@EF^yG2807(IW)I*%r3guN@t+L*qdp%;#MS4VOv=W9 z#F@~mIJy=vij7TO;BMnFIS+$1$qDR~U{g(NwmM-03yIEP;{rHzXk)th);s5mv*e=4 zQE<1jX$xbs!xlr}&KU~TnF)YxyUv|1d*Y8y+js7s4&3~?>5ea7JMH`Wf0~XT**~pq z-(hh&!!b)HfC$bmX(S`=B#kr?PN)@~Bax3b*_U`r@RB>y%eNT-K)OA@4=AFocmMna z(I&j)W9!#mW-(`M2cC!xcbpM&XNF_wwG?77^4anjVE0O8EqCufFx`5`zG*wooElLU zY(l8=0m0tnI=v{=fmXLqf(8qj2N(vtWACNY_VwM6w@rJme7qh9Z~MXNw$K0hbk|ou zJZ&61G_7sJu3;STPN|G`Vkif?oWw=yc4@9@{n8`8KpOpq=1#nnykr@3LnCr<1+yh4 z1+#N24C@(vC6+ZyN&p};s;}b(%V0Bt7FKpWD<`D*ZAWdS8 zDjby&$7cG86C2a6^Y1^ct=luI6L>no$DWHHGClBFKQle#x&PC&_lhUjb5dX}p7T)0 z?YX0ln2=0meomh1&`z`YR-M8j2s=PJcFr43$k<=k62>VtuI1P7_jS zXoM8`&@j1>W|#tISb|-q4UJ)Ja$_@pj%ohfidGw$EWYW9OXg-dU1>Yk$t}2~A2@Uv zXRNl&?EHiZxCpoa)q55e77v;v8!lBE!!CiIY1)0!LqutsZMhCNut@h_@tEnMSfE!u z#w_*P6q_8Bc%c!o*FkzS|A1Y+7R%(8d&*-r93N-oR*!pt4Qg|zSPgY#QS9Y+Lh){|?(4ft<+;e{X;*$~b%Xg9~c@Ol_#R4aq^ z+U%Z~Hm2=38}2;!3Y;c;bf*EnftvPQ^3ds_-~T^PH-79L)9qjS3q22Iby|QXKqfbu z>$7#jGT^o=A0#OrBZW>9ge_!Zt1ay8y@gxz6w2VFSvkYrDUE2sytemA{}t+P#K9E> zHxGGwt=~hDyy3*9keosX4LlhFdoBo04*#=iHq$9_VeHwxYr5p33ra)yt7|x`w8WLh78IIDTx}g|p^EzyBZF3m!*o)_+FU_seK^V0VeFDf5Y1Mn zy@%w$Rt{ez+XnA|fL2 zbUTJ*Y}^_6XS^~vH*wKgytu-QzQr*NJg8syV67@469XE`wiBqFn08%&SL$IGdJ7wn z@G^hNW1cI*Z~dpY8mGp_*^t@BstI>XI+&v=l6+CyOt4C?n)`#|W^LSOBi5;8?iWBq zF6QWsS_LdNS}aVn_29siamqBJ6pKyNRr!;H0v!wv0_p;X!PNqgCnm?h2#V&Jyo>1Y z+QLlD1Yt7(A&~Xo7O_Bd%MP3O6{j+aouV}t+^~kXDtBG@pq!ULZMD||ee83mE3SDJ zPM%n;;{?aFML!Z}U2qiHu2IF1aU?2aQn?wifkPi|nL$VTJb|g)X|sV_=9mQZrHuYk78nv(OQ>AUZ)@6gb8*}JT5zHm zZABM8;;gr`>wt*`3B397)M3XS+~d5mAB)$#)sAcO@+ZD*y5zAxgj-K`n<-eZI2Mxy;Wy5AUpTGrxp-kASP5I*a-UuKw4a#Hz4A#|p!NZhsNOhO2U?6j zdb4U6jtGl-*@PVesA@q1p#{^0(P_DatGH;%Y^<0d?e?#sb6!RSav9D6>7 zCKEP!gFP`6QZbRa$kjC(Yr|A`Cg7zvqdn6?Oj{W~jJlfw@A;B6?9p3pyS#ZFBbHD- zuz}BBWHFaJh>wRT+)kNxyoli~r0qL)byFhfsctZwZROgqlOV&~m^rsIaW zFz2dEHn+3$X1mgziP@yASR-{`ii`7#2RrhJ%Wd+PjTX0K(;Qg#Xu&}&a^mev7~N+= zD#F{50$VZT+?YW!`zG?+cuN480w|DCo0$$iEGj$}?Y7?KNJ9jkeOspy7Z}sImE`V> z)ebEcxLz!ZjAh^V)RNgK8LtObOUBzhyDxkoZo(Vn-fsDVefLFIP4|21Phl5r_z4Z; z<@_S2jXdhgL)q)0J?6$Lu`1ndCWFNO>fwPfOwcKJbEUKxI~b`(E(Ss$UJzx8$ve(F z9V06CMFb6L&CH-NaM@&2TS?lgQv}smAdMVS#z0W6k`P6j8#W2-`jgZ4UFV}noKBvPqW7%qfmSL}siE&8mbdnzncp(!}${ z&;|OaoYg*NI(?n%anB_Wm@aC+X!k(F!`d+GbN*l!Na@0AB<4>oN&k9 z%W!tv>p94A<{IB^y6g!r#hLjEdvOG6R-q=r=Fvuy9tZebprhY4_bqe;kb)2Hz@>;q zlEAtXo!)juKUQR%d_gp}0ZFQAl3WZ$?3orEGcICi?3x?A6OAtvgJB9~1R!H!2wQMT zr;-B1kiAzIwgLr?R?_znYIvw4#`Ngjk$!*;kDa&+m-I972`c04w_GDT&$~!xPy23C zsa*?*B>}{8)pFvRDdr|Ifn`rT9_;9MwGhG>EuCTTz7RVP=dGN63ZB@tvN$;iJz!_B zw>Xw$;s%)d9Mi~40OK52d1wqSK>`za_Os>#5_ab74Jx5bK<~9ud`Fqfuvt@$mrN8e zf;lfc*Vz#k3p3t1GDrXg251fM3_TF&v)6cezv$u5!L6l>uzxnJ%uE;cgdysRfw~?$ zEX)Cqp0Li>DS;aLzlF)4gyOu51*7jjsE} zUPRA}{neJWaWc5It`wSOSmIVv1&Z4wYztqCAW1o%PQb>qM({J0!{THjN&*yX%Tbs6 zh*PZD8LSUeh=&fG0k-YXr{8Ud7~7fNa&hjy=zh}$5BYm|Ku&GZs>b7tl8}3&O?JVLHX~la#Hv zxCGM-I~S!O1!IM>YI@N30m9qHFq%&kb7I5a9TA=zJOnY>_RC<0kro1(j$bHS%bSnp zvC>Qyp}`dsv2C9REXEp9>%QJ=1Mpcn{LrD7s9Xdz(C& zITI)J2`1VLoDhunIyN!qVK-FSF4SF3ii1H1FT$$NPtBH9t5g?Fufa36)vH&e{08I2kK`q+)NqO- zneVv%FWcat^W$%vE33c>{fyJqoHNBiwej$|XUvuGxZd(Jocu!Dy{UDpL)(teik|K0rJJsHTW{73LPdKForz`9)>bcf;D?YTd!M5y;B-C z^Be5+6f8w1o~?SL=2l~bKVJOg&J$1JBDmu*r0#>!rv`iyq!7+i?#Xcc$UXWY13M~6 z0V~Uj(pIJkfW;_;3zcV0n#kj^{0!$#e89Ly2y&J-T#x+j5$_J1(5V`k%Q$jj&I*FT zj?7XSK{Fss#PU&~Qkp?j%&SGv>=xk%0sW;mBW&329U_^16ZwP8dfx_cD9{FOK^^IQ#m0(xMDr&k<^w!MJhU;0{VGD}loQ z82Gjw=it*wmv8=swo@*C^MLI;ci^XP9%mn)_i|QGnbm5HWe`Q|vMt&NBh_JTG!E=d z`HAsIb9Pc(&(i28fYcX-*@`z*x4;||w&**)GC zz;#!+0F_Y(oWKrxTxbd!sm0kb|d@KIEv zwnL>d6$Mvp91#aC1{FQ=r_p#29zAdy^6+^X_>+&hiy9*+^>AQu0cV}8u5B6b7JSZ< zXU%Qv`3>yTsPxoBIHYqfeWY$-#XNF+8e(3$StDEYrsXu4I^TBiP|#E40|Xp?&d!-shxy_WQ2NQG&vU9EMTC2y_rzjeaMQ%1RG8Q+$g>GVARbC;GF2Mm9;lq*hn<|( zQV>3@r`3b%=>A((idea+^vp{`I?XSuu-dqhxbk46bi7jcFSMOjji(vJ)H`rc@Q#K( z?_`-#Z^-QD3G8`(!4i^V8}ZypPC^k6#xE|+;K=<-t}&0BeD!X#--YC4S`7?Y3}S#l zhA>nkr^{YM8CS3vm&XvUK{%J2#S57n-0+{8AomMi!gi6>5Ow?r&w?>Wi|6MdD6BDQ-dMv$mVri$_^vU~f zPX&|LtiovSyZ8ug$FXq#!AjIMX>A zmL^rPlPd{_Ql?BR_QA+f*(a8U}6L8xX-YrYm)Vqbm7UscB6li>_^1KH=9Y2kT@42^=U${@+ zgNmOa<$YESKn1}VDSU`h!&a5qiG(R_4l=pa{zOHSS{X|Vi$sBOC~}qQcBlW4S4>e_ zYmsT>xLP5W+miJuiL0t|ZKjqvBG*ksX%@gAIoc5N_{ILaaRggm)@=>9UXzNqQqUKkK zFMRm-7@T3J*htTBW^UWQ6K|UyRaQ~3R`@iCsDbmEbr40JeY8#~KC@S^&6>sKv+Gd8yu_ZCOu20x`c=#2<1vRzE`Lc{yOqt}>!*n}^wWeEdu=pQ@e}BSuYLM=-<5 zAV}ji#-4Y6Stp)t;19E0uIPY+p{1bLTLcU|=50ofg^dFflXO4LOU6bn^V6hgZ5VkP z4J1dnII*MbC}j>1lH5llm1gK#JjJJso8}KEdeNF53)4p6OT!lneVhaSNWz|rAF8t^ zzm9&ojTyJ?*sT|3-2p~Im18ya{IGdFW+#RNcWkP~mI!x_r@@FdLfdL`jdqDiA#k+C z>G`veBuj@}R)S4zc&rc2l5WaFh!Oc&1BQBbLSZ`32qOsw7%_0O!!etLEcoOC!jB%f z)p0f!J@+h=#+{-CqgnuEO6#oDm07^&SO!5vr>#drhTiO^+gXS527Wm9C3t6P&*`5v zl@p5-A9CiIQ%_p?nN`+diMWD6bB^A)pfQ2%$^{l>&ph^O zok{s1-2K#Q)BIvVs6JrS3s3?=Y)+>L2ULjC$Q81qR03rJLLmlno>?86``h(X>G%SJ z?+)35v`F3WWl|6;wdc<~ICy+XX&<|LA+5*5V`oZ2G-7cFhe&8g0@*0ytjXVlzu-a7 zxOWTFtKtW#w_|aV-<~?a;gha$#o#)d2eUSBHvdopACB|jOFAh}_LH5)g!F$v8TkW=b;>9mi^ zEpRGX*r|B3nv?D^BMsdE2?!K={kPuil(j4!h9d^|n=XCAOZ0Z)N*%^f-%eKq1_GRJc4$bsqDp?zS3!U9wQ z1?0%54{%vwu)9xKhohS{7FwI@X5}{g=sAv}ZyY-^UGU)Vn$ElGYI{?s@|>ou{l-5T zqZavjX0N%6+r{h{f-&m@*ocYYr{CvAd17ceriPL!KpeW!`qmB9A_4aST6Ys(mVun} zd-^xnjZs_HpnXIHlGBUF^#G-g8_pUmk0+OA;T4=O`pdzkHbtdjyS9aMk|WOSeOk^3JTHoM1xcb7$x?zo#g5d zSq|(ptVZp;b{GNS3q`A&0Yot1G#YBOVrYJ@T#T<&Gh$RlQM&|<<&kp&woK1yYP z?H>kX=gJ`#g|&^v*`cT6~fM~Gn)6S;t)Nfg*fj=Ba4eV&sxf+J_1v<7ge2Dmd)F^9I;jIdG9 z#2Q2y2?tk;cKO~c%qaB;7N>5n_+)FxFtu_-4X{#An*apC#IvUB0oUJdX&CW)tnoWv z#u@em&zg^VzP@uV+9>i2^eUh44yndc8*A{|?7Zs3p&j$C=lQDBM#)m_1T))vUZoPa zj85u^4Ggc2fr<68gypv{y@+6D&2cGjbRjv4suoW~MPG0b?J8-u@MuR>xatZo94df4 zL2#ni3n0l*{0vI(=`_+Gy$6evJla8EDRU!}>uFXkH5)wozIP&^v(Sn$#Zttm1LHot zL$wn>!_7;&zV1`Q&ydXT_LnM$8aV|~lPBa(!$53Xr^YQ-dZ}(Okd6y{FdGw{2nCfo zVYDfHOb-D5x68U?bR>27qNE5R<=}0G*deq1Rf7cgm=dfivTVM(7^}q3GYexdvPu}l*7KIuC69R#K2~?Z8M&|7@|kqv z_;I`ydQdx>2cp%B+}c6VY)1jidcvN==WMG5PC7R#UmNpt8>%l%suACuW{k8}4})t% zBm%j1^lDuP3rT@tVCK(^bl{AKz-ut&HNxPzL;Ma~fc;;j^R)}&7u9CQsFk|41=*MMkKr{c$Q1+*#;x=ZXqQh<| z^Fa1Xxpa4}>!}xM=x2|I`-IEQN=HGf7VMaTs~}pv^(YxLGC(Ae)O!uU$UDv~a&v(x z`EAIDJ^$AMtPCoA(_k*lul?n3Oh@jy1y5IJUs_cxOODnKpkicB{s-5&c$@OVhkV!B zIcuT_?$_go_uFM%MX?TlXzq*N%>}{qfuIhE<{8dSzQcVl38{GENrk4hn}QqV;l^`S zGvxJHBVo5bG{jN#tLCmtFm`Gxs*771eK1+%bH9z|Nd~ z9bGxG0BW>KPE_^uG9g$Su{`<+*K)rxv_~Y_LJdUfCcGwD$Pyf4b2?WzphA>Z3UrV; zsRW!nY@v?|xrDL7CXOR#i$hO(x9rV-3fqObIBE3Zeczroj_l_LG_fG9rW{HNq$x^@ zA=nM~3m*Ke>AVMAbJot9tb%7w-ZJA^dJP{qwz4p9svY%2PjJ`Zo9(Np-+`gVsvP5~ zJ0_rMsMy#M%-4XaXmOgocvFOsGFeUGwySG|MNr1h03@>(u0oh$;L%#t3lX;xFR`J5 z>TLB)fB3F%OdGf@vyG?G*<{wtr7o|NokDP{fWKjM*%Mv{11)EQPJWYLo-;8BZY%9=}}oP@W1$>agRK!XH6x?Ewe+neL0Q_n1-uOsZ)6EbkxfIktL^K5N>ITec^7~4SETcv3cy3 z{n|)8$&9`?U~%>aOAgy$?hJH`-#`KFhEHQT8@9rV6g)Cju3&@%lW4iD0vj{~3(r{= zH;$c{4&V6=j0e9#5j&N8WLCpyXm#>krS&}*OqbymdQhCrvNw)x*zb<=OrK@39xAq{ zY*Bd?TPcd6EB7f+BlKH3Ti}`4lX$n7t6-G}&!94j1~<0Bgx3Sni5Hpe{n+pieeeus zOHjBl5DmzSbx(^b22LljS{%X`XNx%V5|SRrb4`1dPI~6WBWrNI+Ue87@sKx;9hxqA z)C;EF7hi=-E$wHoaXlVAaL06H-%UE8Sg)32)Qn#9&Jt87>ZPF>>7dtI3~_N`1~;HS z?9~f106`pm$wd?EfaxTkgfBtlMUd_YQVw4Au7z>MAUbH_qTNDA9`}SfC$B|NI-8AW z>ZAK_!*|^8LK-OA!K*UH1i0U^yr;=u-?-#)FFI>)Q`U;OI1l2Ie(d1wxB~MBWKmbt z;w9RhT^o{OhtexwUaMDNv=})xq+2yV5zBoT@|d{Vfx{nW9l?t54V_I4t#VXZTml6$ zf(wc+j79^3xp)+=2w@=6SphL{_SLSSv$NsiJbc$T@k*UHv)Q7kghw(Ng|I&rAoYgIA-hb2IBCmfXSV^s3E=oN+)N{e5Dux23=2G^6zA zX2O;jJh;Q@@(^*~+?;K0vAqksR(E4O zYZ6N3Z^rYTp|;>GTa1D|$K6#6g*rcYu?N4=e(|H9clKWdsSf1CbL9Qs{xr^-eAZT~ z%0-G7nK6IG-C=_ZI6`fVZj4nHu`v-fS3pN>+9TKv;z%MHaakWgGB=yth?zgfY#6Hv zde04}9wUt-?Vx3+2HY`Tws+xl)~5EbGpzCX;h{Ue3RVm*=8EG)Qwi8uDN6;xhD-Wo zSHJwMzD;S>*p}<@@Le}g2X6TsUcbdRE?Jvbsm|nlMXgY?QH)`7RmQIHAqyE?ni2)% z#{H#BvSRaE)CF;=E0Dvjq*fpUrIi9BD2od?N5B@kX=Z|r`Ryvw25Zm~K(Q;dkOXnS zG2pVKEAWiV{J}5YfNwvKgA`GRvK6I>+^ZYMj!x%Z`9%Ejs%M{-PaQ1{mW%VAZ+#LU zZn+)r7vOKZYo`2C&VV|{s<#&HjJ`i(x6(>fUfiMdQN1RXSd`lNviPQ8(^qT-S{7#k zKuoR5u+I59K%s7SEhH!O4!FS};^sA?qEiIM7A2J8DoM|%s24+r?$9Uau{w2GXPJHT z!p4F&FjrV9mp}0pSS0KB-6b96-1(Ki^7-LB`NCXLWhjV^PPAmsyR6aznXq0{;m?gz{lSPRlTSw%G#8HpjcEES>V1# zFdyP-n}TsMc2egVD$xEWV6ZC&xnSl2&@SsV&PF2$+;-=&?j)H>d0bRJS0A+rAKQA!a8fxJcCr@fKC&e<#Ek% z@&>?QZ5vQ>`HpMQa5{WUCUZeUAiG) zn{v-ZIBUN0tiKaf2hJDfw|()0__Kna$8%g<(pjzcLq#pfF}Yqp5%$6-wldh*>%my5 zY+}q(c)B_2>@}FOIZ4lDL5+Rhgr^c9N~TltHZz2SR7S2K;8sEzLMI=r#KUN|W|1`O zsSkvhyFlD$JxV!#_#hVNw@^zS)2P{>U#fmS)!;bVLm%#V^b7G7jI;kXWu1%TM~_Xn z{LLS^$>y>8ZL&GDrAb}F+IThh9%85^EC2)&=UB^76p9R0c(EJM9393SxU6G>G5K*e zicmYjdb9$u31^ZPfo`w8=PE%Im&PZWhSQ{AGr|qga3%X07kO~-i*Wo~MJk#L5N#(by~v2uAHDYy!3d zxWYV;l1!$-uF_!Re_*uVOSyV)J*f}YXBQ4E# zk+C>~1$g8-GddUN;e9valjQhmZv2#BjB6D;tKqN2UG{{R<88_d@6+d+#||BsZuha!_Gw%G`ffOFl+=vM?cLyE3qa@Y6vK=)B#&X^q}H;UlwS=_d=N#BSk9pf z=%naayjDHq9OGW2beoN`VHWd&jORmA=#Cq(;PC6m`D0kClW}3{ z&ul;bMfcgQBUZ!GZvOcHt#^d@W3g(RO^@%-*sT^YY_%V-4_2LlgP%JoDgLknXN8V%ue5vF3v!h5b65y{Rz6U_IURbc*}@`DCfR+w%;; zgxh||nRm4FnR9h6!JMcs$O}Xb-JCja)?`9ioc0_~=HQ(XmuO(@bZi5NdJW-R$wTW{ zKpD7PE&oa`k@sH9cjmYHuS{Z4hCiN+gx<2{4ze?*JvSuGpe2A}SExvQ z{zEUb~NpLoAQ27`>)%}qD*DwkAW+hIcoD0@B zZ*UZ!O&PaKX!G_Qu<=Y3@D5TGiQELRvKX%4UnRCc9jTgWw)eS$cg9UeA)?=(a0N7a zl4Xm%mj((0a)Ek=8Zb$xI!ayXICH|m+pfn>$GbwDRXo&lE{e{#DKCEHbMXPJAyeKq z<)iPD`S190aWA3ap&da*;P-&(OfcY*gvCrHCF%t zAz?{GK~yx+7N@h0z9`D$*s%uZ&~orRmSrgy(}AqG>^I>x;bL0eAV%d7hsJo57M^1^ zr?9p$v}B4X!l{yL#wVTh$IR@C*9d$hLL-WwugUH(J_bQS~E`ru~nN!rP{!kg}LyNSgb5up2>^5#<R1W44!LV{^VETZOZ$f^;hV8j=BHapP#<+XTPL-ulf)%CXVygwNPUv zz}e=>P9$`(u`^!;$!wb#GXNBWqnwI_Gp>brdChLGPhb#_+boL}LD`EMYqJ+bOZ;xD z3$ww(=~+}gYz+WMQ#3#h6#t?CMjFD0OeJTb#S#}t28k+(ddHnD_cIKRs;9$byw`{T!=gBJ`wdut__=Cc)`!NoGxuEbNc^_ui_gxjBMj1B_n#B>DOJa z_2c)5fCPa++A-Lv=zW2*Uf$h^y%b@D>losOt>Y<*i}^K;SU|Qg;dOv@owBus$pZ0@ zbwqK&rQRu9kuyWqU>F-Jxq?sjGrZY2egbFCuVSv}XHC6LdF7dZo05x?dGEabL%6a2 zFYz6qPvE`sbz7L6mO3?cyuOoTUsso8#%VvG;|}&_^T(|NdPm6zKmX(Q#Rl$9Xu(0} zI^4#~KmHa=_Y>v5KuIS%=|R9QYos7MeM1Yo6;tysT8ZnmMBtM2@dO&HeA*KguO#VC^)zbH91h}G+N4zrh$#lt_2cC4~+FY zhA1@SOI*iiJY(!8=rQ`VbndGoxRf3{cqhir#o03Q_th_a*nfeyDW87Y&o%iXhY!xt zk-Kl3?!4iH(`|qEu4(_xe`g=f!;ieOhJKE6vf7w9xn5dS$Uco8qSpW^TZX7;5op-_c)6<^$5_{soObU*eOR2t-E-jJbn`8@ zPS<_m%hQKG`q$I7ANrW&4SXVheK!xT#;@n1N)=0#wX&7`EQ2bW*Q}fHCc}&W4PJ<{ ze#00;Y}0Au#Gw)M(YTZ`0z65HOOM&O)z~0J6~SfCSLMj4GbM209LC$0$MJ_-^~#tN z!eX%D+mt+OE}m_c3P8aegBBzD6L?jB+__^q z=Nx>y^wNu`s~`8M>A!sG3#S7I4{4FU{SW`$^dH{ym(#)h2d5po@%d6uqfSSj*C7;{x{SA@|(Xqz2`6f3J3MhY5R6wE^>Mx zd6iMD#@+U}z}V;o5wU?wDGVA*2WaGEAr2T(M@%Bz;26U5v?@gglYptuF$+`Ow!X5xajs{A!*fHB9x0CecgRN{siC)aR2i=xTNES0Y83(8=UNq zT+e)>MQTYb(WS&2>a9O)@~R{~bf_g9s9ZHp(opeB6-07UnBn z{=(_^f9sd0i!ZvM@SR!l!yo(9^y5GM-%U4s^_zB?_W|U%na+<;uPzHHi_-=pPl!T? z5;09DCx1%Mxix>q8v)h_D6I{t$#;7c9ffL97N{mSGI23<&4C@BfZkxGG+X2%F8^>= zx=r92G#c@JYYehSEX9s?wt0d0I{Njz1qJ_mZ|aMo*0_O@{=*R&(_+yemQJbK{3 z^qQai5iQJ}JNO;U}HtDtgOXo-_pbOE5#Gz%PY1iNkK8tkg4;3-Dq%&u&` zug*;u5*(R_-aa5o|#mE1k;WlIy5~Q&oSTjzyHb^S(w*ffBkgh zjkqVgh4zHUK5}~d@BYTL3->}d^p%0Ob|O5do#kR|_A-iIj+T#D5VQ?VF~R_9)}&CE<%5{IfYNYcCDPIlx8?5rBX(@CYYQh@W=^GqsT zCD001-ar_(Gc97thn-qVF~&J>T3p~?5I*;u-MW-tbm94#>U4zLZ@+!|xu5&F>FG~@ z`t<(yzkkaV&wI|_n||Tve|kE85ISZ zUpxKY@BN+_p7f+Aof6akfW`TQCp`}DKpjzC3g#GMPS~@dx8F+AAP5ML`CEj6WAby% zf-%P9*lE&69s&mpbpESc8AW3_B90W%xMx^vV(4IWGBh=?5v$&@5t3nHC}2$-?1>2< zlNX~(;&_@Z%L@*MHe(;pFg)r#XTq(ylZx`7QyOg?;~jEY3Qq(G-_g1M1FxLk`1+sd zv8SQ^$)Ehm^k;weXLxsa+w{_xzI3|!>Z?zQ<-BwEPQUcVzpuL;IuS8?@v6qf$%$i| zjkDMx#?c&e8*ug9bOtf{#+@C;%IdiQ&`xwN)fJ?{=a@VjhJB$IrY0RQbg=*xu>wc) ztOa&(LXGh-#JqL@wmj*Wv1+xUW?OV~w-zo)IW2YoScVQsQ!PSH{QURfL(@;a>Lt?^ zmtWe!Pel>B7hZVb zN%;b>jt|bJ@WZYi|7EjC#Ky79pUNBsPHty98rO$a{?qg|24!%Nv&a-4s_y>0r&H@=}7 zAM~IHO)q-Ui>7Bh;~CS3Km6h8UGI9A7A>*opMU=Jf)~7C`sH8#<>|o>e(+}0>HFLl zub-a&JujIK9pSrY9Bm!F!G_N`l|fU)H753PA6js76kWVc7mWvx3)9XnR!G~n*tE&C zU{3&q4zmKgXkIkNzOET8Nx*YL!Vn8EV9h>|G?ftW@KQcUy9ItpZPVgIik%cXYg0oI z{-VeCJ^Md9rG@#XH@#{4?ce_GX(!HVJj=1&aKjC~ z?svZ%9}2;{X(wrqdiX=9$36NH)5kygnQ48e|3rAiaI6?ZyOk8vLkAx9bp*#svo$&) z)knB$U;P-&xG)JNLz4V4RykUCfD_?m^FOc-Hyt?mWs2UqSrWggpST*P} z*eEf2;e#ZC7kZr$2A<$x-xe=}!xKba4b7cvA+gSw9mq)>>r}Q_LWw-l!(LBeVXnzD zl)0#k4R*S^QivO{;&E)}WuTu)g$b^X5Jon}14JAj+1w@_uhQ{+@IrioeXAerxZ{pH zrq6ulGrD9a6WiNIKQ_zz1A8;iL5kD}#uI1JgPeE)Npfu#sM}SXf+?;m{lw zGGU8OQ5dGgWII>zu#SdqlEbW%d4;b6^QhYd>$SA771+*9B?n=lP;G8HV4-beZN@B}Ioh|Ge{X?Z)Da0dpbx+;Cp_JtcRdgM%uYVYqd4h^`7WZs-#qmu1^oT?qY= zWQ=F7D5ArVp|FJ7VS>z^feCYs4;ypo5r*hVOae5Dc<@Dl-QJP4ZGxk#Wk?<>SDe!p z0+`&+4v*CfGXO2xB-m?2lS09gKx$J5!Es;6KjHk~J)BY44a4DYLN zrSV?nc{rQ#Y`E3N7dAKFeDn0Nk9};bA&KM7{I+n?oPwTn+L4+z37jwulR_#zCNxbd zG2V(Oi*#<%kwS!+b7p1*ZL-^yef#d2_T%%LTWJ?uaKZGDhdg9DzQx5{Ip6%| zH&3_TdTTYERKD%@JMrG?>I26w_>ITLXlK9N!7`4ccO6|!Frz9;8qcIO#-j1 z)e*F^Ov)XE7!MmEo9@6FI1E7+wZNVW!JeMb(=D4?Z-fV3^svWOXLi~)q|z8v<-M$4AE5ECb{;;V3X6Lv~>&@B1JyBh%lBoiLv3H(M|~i`;MWh zn_(kFMJ;fM-a(0x5u2#mb*VvUHk#D5D4n1g;VPsa%7v)|*F&A4VSyu^VM=`B9gunm z3s_&+bt?6IaQ}gc@5XGkz4*m1)}>wVTx~T7INtxf_S$Qw_rCYNTaNnlXFrF*>*8Hv zIA&AjG1)Eb>Z63Eqxvx$9w}tXoTbEtP|4`WBhH5DB6euPtl%J&E-n-;mL(i9u+Lm! zU{6duOi$IF9I4K7u_y&IY!{At>%#02mP6%uz2c43(E|{eT1SV4Ll|N`&ISQR4GHjt zy#Mbbp9sTAdwvA&`Okm;DZjwsQvp6Dc=fAaebO8R?8ia#*MIX_yh*@M<8va~2txJC zIvwsOPKR;k2QS9`~!dW z(diI=EMcqd7k}{=^+AqPdG5(q>#uv=>!$nP|NdJ_^NCOW?etY#*0=NRQLQ%&ww0~1 z>&)3rj{u!zmMqt z>uVf{&rgVC!Em>4zvyAVDjy9R@GuFQB|2@;;*xAQr$s3A2o+C6urDnz#WWLz*#dA2 z5OJ@*rkHYg#imd=;yCCrwpcm8Z9Og!lTT;8N-X1O@VQ>%V6K*((lIQu z!+4SNBQJj8oM(mQX-|8aZpeT1qaW2G<#WnsKJ%HnZJzBQp8#}}bcu5c4!liIlgwCj z;i1zM^Oo)uoRyv1X0E}m0%joN*}_g{q{>;uq6*p<>J5_;Mfy0~wd$MXGy%==iNH5e zgT~Z3s^X!IsXBAt(2X4)Ck+0<*qyjWe(>FYgx@|owXbP>-~%6+zWn7cPfva7Q>Ujq zx{^s<*zWFWF`nhUdJkfIb(F_B-rJ39>b8Ee3;8q~<|s=wfQ&&Drt{6Y7L zqK@W1P(JsC>!$AcF`T3C^|AAp{7F0QA*bKY#8bB$BwgH3%kq{sX= zkpOfU`dCOQh9Y;6lF?tAV}*g;RnK05=8PTPc~q%coTuJk@1Q;gmJ((2EM$*@6pw>o zj`GMWtk)?X!Dz3Xl<^PsYUsc>za0e9X=gkis-xm491Ud>u(0RJw}fh+xz2Zsw&6p)zw|5rc>3taKQ)rvC;G4d=0BO<^XKoM z*7adz3@XO8BDi;a~jWzny;lH~x=l`|dqh556GUk=s|GVU^Ew+Tda3 ze>s7NKrz;qnH@kyj}R(9F&?<&uF$xiDWE!B4j!$s6=XEeT43FYPS2Uq$9NcGUT)o? zJn0~$Z&9xWc0QWKjg8J^VqXCaaOW-x#iDkJf*1Z+w=8RHvJsPxHT_o64L5vaddVw) zdiw0=zL=h~DZJxf{hR6aKl=|bC;WjkUd}m7G0|gYRLjEge|F~7q-usOsE9IXz`<>n zft^zUz!(@48fd~avm;OrI&D_z-U>E&)ia>*O6A#-=SwO^$zEsB{?tRWH^YWzp@mnD zz<{5ktA<*_0ze>Ljy3+GPz+2DGAOGCMrA7n1L9$l%-oPiVDxU>vFDuW^Y}&LA9(3c zPVfD|2c7fGcYKcdt8f0T>A(G%Uzm>Iby>auT9ryeP?4&2`}T_;`m2eJ`eBHj=+M*? zD}ijaQAdOpU9~UBn*1efWHhR_Z)hL$6>O&P8UmZD#Rp4^gv46dI{HqLuf8Q|0o*#H z=h4Bf&>>y{o^|FL45D=2mdGVw3GduI?3$TC>Q=Ob+!zu!xbfYhJMO$|`geb7-$Q@u zlb?vM{*GVM&9GAz{_eUjOs{#}8>c_`gFl?scJ9U<0=_bjb753F(8dAj)3LVWVb9^; zMbdiGQvocjn5v*?=Nl&zAW$Vi*dtJ`0T-B@&JrJ)hY*|gilYqB3>TQe;Rj1tSsq*5 z8k3$i2g>O~#l&&$s7Cx)KszQQNNIfI!PO*rz)Br#8N;)Gt!o))buRg6GY0$X8Yl2h z4}J&!-~s%|!Q-cY@W$6qFa6;cOndlq*{9jQ@y#2jxBl~gHU0iS|CiGpcvZd~XKDQ< zym+43M$l(ylb80j9S_IiM9o(Ad|?{W0aAz@TN0QfAt{sqx6NF|9(#YGU=c0aXM|o$ zvxhVuY#hIXLr||Y?hFi}R-Ol;%kU!2i9E1@Vd#{)>bh_$UCmusQ(`}EdLeBbowM?HK?_eAfxXaDqxPkws(W4tB#@Bg27Pd9(- zrfE&z(B%8(OcpzoeXAEruMe(r<{Ug8r~wDJ?X8}W$@JuBj30EV*x2cLUZZ$Go%J&y z6;-26@H7jg0h^dU-cUFI6I0m>d*kao*qGk;Hyk2-BS0kW=W>HO~-q$N% z;0nBpHIPLL(*fZfcssY9iFw)7X$jvsI(7t$6u*JL7k^RXvG}6}Prc^q>2Z&FO>@#l)%QlV2 zFt#`~1UL9_glUXUREU$LOlZ1OFq(>uJ)R!NvP-H?No0WiWnUM#+n zNU7qIl4UtSc&FBJNxSqupTS|9nP-Mg;xR2;JS>7OLsKw&byx#P#<3Bi0z&D4D|Rw5 z1@EGN{uOu>?48Oqz*QB=>)-u92Xq}Hq^yA zc4uN39tyeIbdZ-W<%)#y$~xx)^IGRGWTWc0nI?tazgfLRG7S9qQ!iGe(O_!=A!waq zCfaCbaZ7GTnQt?I$HyRti3^(L90M;@o)LM;4!VpF0$}F8hLSW)n&Fwt&M4Bck!7)7 z76O0;4)en(Z$%7K>&;1e(ohRJV!BW{U~w${U85_4yTFF(hS6b4_TXR`F;!242Pa1g zEg7*(<}ilOQ^$=b5hy1&nLGtgz-ZV;v&e(lq1@4VsJTrYad@yJkE;u$=8Odct+i5s z^K{Q88xWFXOGruDkmLz$v&yE0pLGVRBlHN^SZ~3aL*z|lsKSfg8RVeZF@ntr9laD! zo7*jTC00*yw4WT3UExR@$d=Nv&~Ak@U;!vfV7rAU^6HT-tdp+~NaU>?R_3h+i-`bOwao zZQ(+1Vi-!og&Jnq3`?O9Fx?7!)DdXGHo=A~`Y}Fu!k#!fI;E(v<3FBr`mXddloqZ% z`AAw5;HhV^U#z>~OX^%))IFI*(%q4x1at z0wUDCsh8PA!VP%4GUVvznE0iA5m%(4-cy-hzVqTQf0(7z63=$cTs; qULTS97uST(gQv1wtcASO^#215NFFZ4A)zGz0000Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91w4eh31ONa40RR91v;Y7A09MtOc>n-F07*naRCodGy$RHASy?7_?pX6o z6~#Ohh0KG1B1jrRMGcLZAkm;mT9Y=~O0?-Fx_Y@B8eOh-wb5?pBz8_%@ZNtQQ0-P(TQa5roZvn7EkA*Q+5@qnHx0*mW zt*GSdUTHQVB1B~kA60W=Uj;UP2UkQja?S`-kBs01gqEc35nXEZ8><67#x*nqt`1GF za)O)HP1K0Xao}Vdk+W7McyJoM1xKZCB*_Xl!&i(7!>$E})_l@R>=uuq_3%OKfRJoy z3p6!W#yZ0~6KqQW8~!KO&v!GQyJj5u_Hu&S2u;|YE<{R9--bb+zUxPB8UUAIm?(C@ zb)u4zlWHTe&{ViInX40_Hp7S_2lS~AruC{;DHMW(3fzggm|>HTHd0hM=0Jf;JHeHR zB;FK+-O4-};s#mH$qw(wt#Py>l4R8md@OWFc#@R)x=3M{0Fg4 zKFR|y$4w?WRKN<ZuCg06cEEA9;?_Ns zOKV05>6D4)eS>3#Q*OI$=Dv&(lYC++lGubrB{(1hWhw)z@M>1E;Yd5V+f0<#F6{l^ z5iOy;d)t7(ZBqnj1kXm3WFKGQs7_CR39kc@upQgrw&YDJ#4#sAWkd}ml zOp)W(#(11f1GaGUe4;;_IXPZB$J)4-E2AQX zh}oUT6d$1?C1NbIawHIHSz1QBg7aiqvotUT1r*WbAcr?WOuU+W^mm-l;oIVpzjhuw z=OqKfR!k?TjaZIj$OttTE#X-&8ZDsDtRhInijM&`5r|L@?F*m2uEJe`d!#st{kT__ z>VrsJbK$DvfuVJF8k$t|!_k4(yo66(loJtBf^oZ-4awS;pk|;jA?#t|IV(^dr#@uh zps3Eq*>N&Soo%Kb8IcZ<(b6Nj)c6SA*lcSa2V!-FHW?;PQN!wU8P zzcuG^oaRCXcKaaWwq1=c2Ue4A8tfKLx3|p92{$GV%qz{tq7k07QvsuK#R(j_ly)j> zQrwBHwHe2~=QVZu74j7(*Wh#xOvcjCxHi0V1l)WkQokLoy`w628^wTaB5^}~gW76rRKzu<38S&z zSSetN9HLrY31bhy$HST&Ra3#>EJHtjV*y1QzH+%)amt8HNz^J@@kL$XQX|6%(Ilyv za#E8ofo!#HPG&KKJS7BI0fS=$1jrB-H|p!-W|rwPgCQE<1hh<>e86qHY+>FuR42)& z!-b&Sno|iaBS~rt-#oyB)1ut04?;pVI0xE_DxR@nQ2?UxTi+G5HUAiQ0(r_iR5jVx z@x%>)gatOZ8g8-$*jjj3fK`gNTFtOo6J3g#Tz%kUCXAnliQY=lbdgsBZ529K4Vv3F zC=_clH#bdqO#DO0h})10$KyK17f?3tl3*KXC{}dD;8D$xawsZ%L+k)-Vjl{}uG7oP zo!u>NL#WBjqV^Kph?+2ll#vaI2TauD^9j)bmb%_pWm?;xz~*d15n4}QlO=K`4wNgpFHK zF_M!eo6X#pF`^FK08~JcjKMhB{!_R$my%p2>daW6#b-H2_oUbnQw33-p8lW<;@Lcs zZI^>f5kfghQqk1Lcr?z%&U0YG_0%$Fhnz{@5rfn?nlLz7aNlMv_Wm^PiPZ1Q`e}cR zVh-prRZ8JxrUOQt(RLLeV-QuT2L+*uj5Vh?S-ox8)V7m$OI2o-L|v7C76jBG;Kbwx*0=NxT>?zD?X{S%^dwam0q|Y z(~bk91axehd^Mtp69l{Hy(=rrSbUpY9WAMMx;vU}#kVnV@z-=`VKgxpT28p>n-(pe zPGST`Kw6eSxwaC!*M{uVjv)!%Y>m$FQe%DDB5fPhsip)}Z1}3TV-HI%#w3unDa8hT zZIZ{vVM4d;2&f1itRZ+1O|b)RV6w=-9Qa0Jp{YbdIi+jnA(&zYUFPgE7s#(|2%_#l z1gAiwcHXZBr2#8`q5*kJ7e@@WS~H#}+}QCpf#t-`E3OWAp8HkCzzIL@%;Rg7K*^q-fL5+dTbGTVsW|cT}d!1`@LUWQ10USj2ACWPWB&)J) z2yyDMfJzmYIfl~#gU4sy;3SXElCJ-N1Svm=^ow8njP zYsC;N5D63lb`rF}j??*sV%uo96Rcw7F`1*V7msbMM0Z=nk#ZVa4Git%i$85Q=x~8D zx8`O<$B9Gv2V1~H0*ya#x-|!AswLEss1d@1UTDWNpxTBlx)HOG}jYR9(XX=_`YWe@~$sE171I;tc!-5T7~PVQEv zAa-Hz{|;*jr$GC1>^EG4fg(8k6)cZ~3`wHFHJ$bf)u0T*yaQwVo;zMqVKio|a65Tw8Yg4VGv%9<9su)h4JQ4qNMCmmMUx+8gQBMp8e5M>@{$t>b@Vc71pqpqrU)wK==`K#wL6rylLuEVsRmjN@E9WI2s!HVYsrtU)1FaXk~3i^dyB z@ebUotMpc*bjO&lvsPhM!^k@X$;?5rO~WP8CmF>&c=WoQ5JYT@aW_yhoo$JCTeeJI z8G9^3R~rB!Sb1g@96XtU^(6;`rp@P7H{$^4v_oH}{F720oo(jm=c#l-x~)faN##&w zp{vbLxqVy(!EQ#5nyVQ5LrTr5#@)Rd83D>Ux@3aENeh5nYmCyDk&Sfj+SJ6PhOT9i zH1??#K0&}s(t{+^!BatPc%9ugvPD{tDt+B+&HI^;{bVdl zm6%Pg@i*OwkGfK=QV{Eeb*cX-lFKMi)&yhT?3v zDToR{aISKi$3c=MVh7xGtaP2Q?Z zCkC@2V1Tz1MmFp`t6}y;nZ^b_f56Ap_^FC%8C?CRoCEKQ;%-Adnp-i-AI}Ne;8cPq zt%d+0akc0w)B5Nwnaz&DjRlwiPczi^6|B-5kMv9`C~YCwEDuCr8j5rpp9qvyn~dn_ zfMbr0?mBqlGipBD)t5|$iZS&_P&9D(uqt8gR8;#8G~jTi^rB39^W8p!GsvIkh|dSj7kZMUAf)G-ihWoF<6pOoIA3D+@=Q>I?G z>j@4h{^!BMfmeP3N@|8CIJ_`n5l8c63bTC2C3@YagR#5c*7`en&09wvdi9Bht*doS z>hP-!kt2|FCHu5;FMK`CPO$2#fr$n@y;3P?b8N3C_APBe6GzoqQY9?@Z%CXbp9y!I z%tMkS2+!aOnO5j1@_RPNv~wHWG#bt@<_T=>!-znNs1w(mT9E93YrKNdQN0WY+8o5m z7u-Ovci2Wu zKL=8AIyEJ?0x($yti9Z?aWut_mhy=nW4x#wtEtXVW$?b0GRBlq>ndP*R&XSpjPo-XFs?G|p5O2>gx{ z2BGd~$Z5!c^z&3H1?jdP(Io{_&FUe8cU(8P1uY16(T$3RjQmd(M^gC(D9K0HA#HD5 zXE1g%wgo81pzSP*q%(D(3REBH<;mVAs|Fp`AxvYy6`HuLxap{Lj1PS5iH{wE)gk9$ zywvm`IZO`^h2&Hf#nFmYWYa9zrg4_R8B(&d(ouOEg_4<~?cr?xW>oB`HH`YOEugsR zf~XJp`+lemCMfU33}rNnTRWk;WL%B+s^|#?AM{mUiQq7C(>^=kH2(55F9bOFp9%55 zZ>3B&dO1OQS)SGvl|kF!a$KQKs$tsJi&ldL^-s=ZhoYitBB&#@qiyNi}Y)PO&0( zoN&mZW7V>`&W0W1y6lO@lAJ^2Dv|ub4dqP}UgQjRe-vUlY>W&_l|^ZkYXc(L9}-Ni zNf~?_z+x^un?TU|({^Q8QMQsK5HoBmb!%-WEjFl<^#>G=U#unNk)?^jLxNSMZ zl)S1#wZYR!n^3l@w*$uPtprDT--fA>w8}P6Z;;Tibuw>75?qfR{B*a(#`uz>;n!ut zA=BD!JzVMo3e5y`Oh{L;=@8w`)r3}`R%ZaZX9|E)2fYsdv17y%ovJ8y+32vr?gWKL z!&r3$JHd?QgxIrt{*h+PsN0vAJ_g}kw z;paVdIdsVGJ|dgZC$_LaZ+rJF%SUg%b@?a%?B|!GM~`7nbsr~~G}b$qIlv94zJ!e} zE9RvGLohkyXK;X#g@TzBd(QaO0l{|C>rW>_7SI;xf+2m*4x|S{&V~8WIr!vWc zw!E?5deB5*XmR(r4FeKvv9*AKi?wO%_+dhKqf6$Xbv(UMX|-Hd4mxevvE8~UU zTc~~2uj(=z=u)w8qUB^3i`1IrG|5QTjsq(jL;Q{_&aAlOCk(9u%U2__A=K)aSBM~^HAk1WeUuFz*` zp1ErwAj(D7r-G4y8_3fQ&FpYWYV zOYs~Nk3}1?@L~-8wl*QaaiVd&pfal2V32#uh!d90by{;)%9T}w)EhgM+Td*d*x0U& zQFTD0jQHZFYf3XI3K&-CB1jNbarXpWvag+xYe!M3;aRlGOZYUI6>r>p(#bKf)!KuO z*R(F583*855jnn}xaIbG24pA3Et6@ql?YtxYEL#|B2H zc|C=5~{&Mw=uUPK;)SoYRe&`)&|EyMRTn90b+~NZ_c{F%y zLOB|9OW!P@0mS1TY_$Pzs5l1kHJ-JhNJF_3u7zy?E202w2x+hu*qBumIy0}(3>dZ+ zU$*c{9dZpJD-obo?rN3Ma%xn9=;qy?p=E?Sgv^73zo|t^Md7GOzb<} z|7**ApM0NZ;BH(3)ofH&1h+RwSeXX4#-GI4d-RJ-{Lpjv!&;q?WNIuQe5t&zf-t1!imBqI11Hjz+6)ulL8-f^AEU=X`C{RL%Bih zcyW1^3oVg4pc2mhjtB9<2M;f|-T4_$=<3jve@eTaK^asnQ-}lz#z}+8PcJHaxx(-r67fu z@ixz0kL%EhKuim$DK0`zWcOvl5#QOR*+kB5u2zY|h~b0V;Id&bZg6b__nfstcY_HX zG={dPnbEkeB)*LzR%Hr@9dM1eL%I}P>pAfl?Dar2Lk~SuiHq`Q?!AAx>+bt%LTCId zdHR@IHWHSDeW?0;1tNowxeUN%5O9ri!DZJkd-h+{Orbqq6Z^_1zG%7R`e!b;{l%{= zcYNU2m*ZHPb#kaQk z<7kE*IN~3;ScbMO9JG&SVEq!hY9D>X(#+1O<={i0yyGSya08LWZZH>kAZ(6H$0>($ z&KdjMg&;DQY&Wa7ljk;a6+@-d6% z=ML2$!=0SH7hJYH^7FoadE6KM<7NM)*XxBO;r%%RbyVJ-KD9O1kbypqeT_fE2QQVb zuZ~f}6{rKtv&KhX18J`Z8@l<>BuNbPwhj2$VA4B<(Ve27i_*o_ZJoMHil^!&D0FJa z^?(L1N}aERxAAqaVqIW2DyP-``}Qsu@%bj06x5Es(>ctd*Hl4LTL zLSH3s;)t)JVe)WU=ZNgW`f|Y)kKRT)*?5ePV`5+a=;tmMUiJOUC;sqfmV0jg54Z%` zk9mv{Z!3lK@))S1)FTCy(z(N36#Vm5iJjU9m+Xm;t`?v*F7^org*csI+X9MQn8GT4 zYf=)8AR)P{kB{~QT{2#sBy#PbEgJ`L#ZUM&nH6tb8*jzS5vHDpN1HD4a)MUQyH5>)lHq3pk zR5kExN>OQGD2k)g&w^NbF`*xW%Lw8gdgJx=zKgG39{18WEuZ@1{~ebgzXr~F14wlt z2mf;tje`!g-KWN6W+6VIh=p3E`Peg7|3{QTED=8Uqnm7`bKF8Y+9H!=+qQ#!>`M!C zA^HkdY&Jm?54t#ZPM}qSsDnTEOg=V@ zOZ7%ur;TxF<*tAY_$s!k8^9tj02@LYtOXV>@NM=4^Jff-BT%T63{^<;RNB?)%=KUGuQkV>>sW-n$H2;`vXNqhj-ulX5N_}-qoZK9yT4% zR!8UWe3lfhE;evMhT6vog;C;U-n0LbjqzM_Z|I=pi^gl8@ps|ch1L4!`&cnO#!d|b zCEz6U@=GVJF#9Clg)>B!iu2P2ywG(iBPVuj8>uKxuv5^^{!`)FnzI}AmI3*~>G$Vr zb)HIC6~%+Wqf4%~5o26Z2!frCom~yH5k^oj;-x|X5B!g7&PjJx!D4JcKT~ioI_~>S zD{h6a_=$EzF*e=j75N%tL5rJ{UO7r9k~X!3@?UMi!NOa1`!9bau7jI5sFQAa33BZ- zUb$TVxv$3r$3?cr!Fuoz+Kvd0V?3;rHUZk;t7O_}ZlsX44TgxJ3uI~ww853& z5lkB%lPgME+~w#Zuu!CP*Bp~#J54E~;d*jKWS7a@-LurTRv9IxufgdZ zCyCU`QHNxND~>VPP#Yz#-ZabVBSx<`8fmk0%v5#(%AcULi6aMX)cwfBRyyqX@4_n| zw*yc39=g?}e&$y$4}03HmSe~I2V0b92=7D4!qR)zMi3XEn%vT1Dwh@}L%1I{4eX#p z)P#b4i%Uk@C*Ov_d@)a0x>#HptEo42>%7DPPT^+SvL^>|ML>kbZV-e6fJYmEM%8gL zg^%sHF~_j24~WR=XCC1~u)U47zz*!eHn$`VjSh6VNfa8E$z|Bm(lh#qhTIKE}oUfcIqyPN4rg%*SC(a#4~)oZCaF+ z=H_Zb1y3Vq+uDSX9@Qm*+lhf7#;qpkbUESx=inYkj|b4}XC>7UEjdSIbkU|bw_Ykj zX`3|0h|9h``!8MgU2-k&pq=@KA=rf%%8&YjzrS3_yC%H+P%lEwhK)e$Bh;?}7*EaPl1u$#Uo#P>k^$>HjV zF;2SFm8~3_0P1Wy1DxthJX(pRQx!CN;t&SWE2OJXoZPmmOXb>V6gyRI!Un87$$@08 zc3`R+)vlE=lUxqQCLS%WpZ8sS&9e8RE4-+*9H%ev?#KR1uEM1L7OegkfENaxKrEO= z@EBDM8M>q!%ws?3)-m=0fmXo8vDbR`Zc)wS5jh3BCzHb(3*+-BBTC@XnR&N6HME6n z9guj|KGZ{!tjshso*y{pn9UPq2x1KlJoC9M4iNyt5X{Y4`Uh)}fVFr>0n#*Wn~yYn zv`q)pn(UlpaZa36DsK=C$beF&n6VC5lox}V=q(08tYe7v3&KY&yY-pt6m;e-uct42 z^fQ)gpZ=9trE@)<5lIcJ?hI*JqRO0XHD(&i;$ou*(4ik&+o~Fx zfTdL)=oi1^gjXJNNI~OfyXY-51uUam;=1KUV z6Ti-bEH#*I5v#GLSv9nSP$zXOi~y~N;Ax;Ll=|9ME;e+L=OJK(ZXbvQ4;-q?H72tr zbd-&Pc&2FSRhruMijqPQcC@=H>ktW+e&@GYN`bE!}E`EgK z=y}4%)?4)_)xJY4xGwKkmGnAI4~%>`?#90 z|JZj>9}uBeKH8K|PV5p0BS#K9{$oA*M_bwH^+s$QTiP-)p7eY6UyM)LJ>u-VAWR8E z%T@aF$9yg>Kc0_O8kZi-kF5=Hb&>N|<1AeYpuV{5MpB;`5}FW994YB7j=eKy^MQrH_GpaC0Wh*^ho>;!#-KYCDfOrQ+?{i>|`s z%IP3AjSD*U)jg?cmr)g4kI2CUVoF4mw{CMI;O9+YWJCGV~Y^o%NZmlW*g# z1IIvy2{Oiyve}I@mse-T2FDf;odB^9CzFC#SkYos`3~Ww*DbrZer80Vv$Eq&j!Uk) zVY%Y*FZL>3tf|TaL2WoLx~woz$A9}!uIejBVokSYe8-Sp!Dw}GS;$pTu7*;*-{@dyrg6RZ5%IX);n76A=-NOYh2mMrAKgVgJoMA)6!nKX&tS}r8Ye5hNx+Yco{xUmnF zS%phWU##oOLIt_U?0CCvsxuEGqzOb&`cfR#$SgSq5%yh+?(sl9P8g-t^#? zVyAIHz6*|L#zV{;~% z!y#O1>a-5`o`*x@hgQEn+IU+LO=$J`^#HonT?m_$L0#Efh0a7SB2uPh*qlT;O^pg& zvj@H84uAo@;b8B%;8MIXaY2a1p2^c!;qaA5GmkYT3EN%x#`Oc3+x)H`ePgAZtkkRG z7S9#Lv7u_5q>wQ&h1Ec!ZhQuM-$hri##KS*WXE&%Qv6K91^8s&p?hyZf3T*p^mGdX zyVZ^}?F8tcL8*ghObc?Y;jxCjf}3WcY?F)15FC{ZD1;t9xTTd+MK&AarmtWLH0+c! zJ4Cfk4wxniN399vn)SwkfoXE00QH1vB^HNSyOo^QIGvB-i+0yP_v`VMe?FDAkkb;l zf_?n=e`0yy*7xK23m@)B8fNkWjl5Z%Wpo`}Z6&EB?bs3LZ>2(4hiT_2h!{K@=mjCZ z6f1($s`wOxP|v=LFTn?wUbx))=f8xXO4vUg2eOUF#q0=TKe$yJReF@_asxS{?}O`> zk~}7p8AW(1+se>RPv0=a#ml2m-})YddR7q>%hpah%zNP~wo^Fqfb($%!2dm2nU=@$^2dI`a@$}2Tftf5czjuH)1|!w9VkmkuXo?{iuPW!(MW_J+x zc{Gq+eNI)B*=i)UY66(x(``X|43qiD!FwUqQ!%6}!BVA!;#pbxXjZW@a5s7&YlfE% zGC$ORzBj&nxagW2aP5w7jPp$D9qgryWz!nW+MWpccXFPDo$-7CI^LQ~+Bml}1%-vJ zPgfhc*PPSY2Cocb)d{Ww0vOCp-g%2p)!N#jT}lSGoA!1K4zAJL zCiMfuJWN6-n9@kucwRwD4?FjUKmz$Xb{Bpq=7P%~vGc-qD#f1)7KQA+=py}a&2j!N z!dO{~)N!3%N|AX%C0IMw23cz|?SLH!FhrUinNP*$k*sj|;#TVnDkDt#fPb>l$kqN_ z-kPf#s@%ozY6M4F@*z{^6Xe2lV8KZaPz-Q`{X&T`k?2BlO4-zMD8_Ke= zVFY(2@PIVcMj{~LOR@NUjeVEYuO!KOes`BX;@L{5=TX%Q6=SK1rDu|{p7es_QYSGx z$3C_381Zz4bhOi^z-|R`Ja%x^OEIuy}7h#(_{BZS<(?)EQJHl(A{wI?;pzr2%Sm z@xZo&YaZSn+>4(eIIS#$RZmg4q^T9f+R<*M|N5R;!vk1$!)f{es zl0vxt43?}$nq<7HBz>R$orZR;(2W-YS7(iVSX-wE#}=>-l1U469Fkw2* zV+EZ7G|Oe7uK=*8rvPlNPjOSC(^ANN`2IVPj?;1^bxo|JB-gAgu=sx+mmsQD-w3D& zzk~l3(MtJWlPSuYtRGO0i%GyH^A*8*Cp2HcwQXZin7j&TzSwMUX5j{(>gB0|9`44MV)+^9qH6ihr+{u=c=Z!JamKvq z{*J|==wMph(9dS0u*I%EbLXXFf@^f(1HTSK!UdWXhsgvmTWr3|fr(VQt=ex|6eWTI zhRDsn0p$P1v=IdR02t|13Gvv}lx)RDC0yB~D)2OR;5>HZkX{sOBylj?sN}#-IiQSn z5FIR{fz#s;Z%waoReUOEOx39(WoO*?GH;Z>rR5c$cYKTQBzH&vE1z3;3qgah%L$t??$g6R0;F2MxUK_AnxL zNB4b4G#mQKlYBhZz_6CSq6(fUxi=@X-m(T}f{j`n z8kiwR@ij}`9%HW!#e_+Z(`pbgv5Dbugu9WPh5#Dgvg7ACk}$pG6}56GfAYZ#ktU_b zuGRTa_2A76e#`sVk^8w=&)bf%vxBwm##{5d_u*~x)7&^e`Au{Fgu>y&cllK=i&|7!WjZ+)*p<7|QK6RG$ny?AgI@bfE=e$hX` z*Q%ba4-h8XDYc;6jc>5^vv){2BF?*PWjmJjc1 zfv9}OjQc{t@6XQklcO?;OB31yC}!`1NKu1pI%`^T2PACP5KMzAhY(QX914R^t6WW( zc=R+SMwGI-d&huU}pOBb&!~3wg_OD#GFWZ&MzYs#|N* zN#qKY3-#&5j-LSK9h}~9_2?^b?pOkRn~SC%Ely8c}-{brG@V)-aMDTwzE{ z4$B@<&gXgS^$|B*aukf#q#lAP$`x2}aKtyj3&o(aZa7I$MuR5MA2Y`$+RkYff6 zyR$(J)TwS9OunhohaUN8WF1-+&@xk%q0>u#L#BK>Av2lD!G||Xh;AnPO=UR;+HtVK znO+_{dT_b&3I7@X&dO8Icy&%qd<(wUn8MPIg}c5QiG&ZaD^rbIPHB1>%UopQVU%8} z;&U6U;J^_KU||(cDtXEd$mWD*L3DZ!&%TS7YoGRN)1RgNp8c56Lq276am-p-(o&_2M>DB9<6`4b<(bT$ z8ZrXv8LsTTNpQC)N$BBrw8vv8AO<|Ag=6Ya2zg)wV1cBdo_)tfQmc?2*L}0ieDInw zO~GN5eTb21&;@Y(XzlqIt315!RmbR% zbJi7|STga!CJeDTmR6q9%*AWxt8RE1KKgm`f40KpC*JehKHRF33Cu329|agyN66A+ zIFZTZK-r1NCYgP$Ftz0j&KOfPIRt8%0iFsVM|k`dEIM))v_OT_S>=GUcWchI?8N7C zQV>T77BsZvno|s^yUK5+pQ1qCqxcN;(Svmly7G}ms|=P^Jx9T=8nhddunumpN3#SReO_Dr_J8treZvh*3Cl;BMT5e$ahv`ACij$UX4R?!rq}L~w@7&w|>6 z_QHtII#*qp8wc$1qivHJR{rAA)lc~fyj_luo38I&GwcjDelC03av-L{2gF>^3<&5B+O=r4qS@StR_^$U%k`?MTJC35hLmx6uGF$iiTT zK{j^>u);})JVJdA(?*9QvWlyM76d^9N`o0vpVFP;jx2}ozZ3U%5BoPOJj-Bp9<3F$ zK~25Wb#wBOXuUB&b_f;hrYq^U0Lat)RR=$W&o8xJedCv$ldo#=x1_!GnpgzKG}Tm5 zbpisNF=9yiUACxc!#$n@_SGtEKwGsXD8Gk{*x&^n%AD*da`mFHkd+`cGeMI_#=^O? zh@HdX9Sm{T88Ub_aH1s+)iQ6s@?Q#ANd~7zXd3oZbZRZA{IOB~yn*vFxlWRnhh=j3 z;Ln~awpdk;P1C-Qonz%}#*n#2TnJUPT`)b5hgn}11GY(9f#_^dhW$|l~~ zmSf!(p`N=-38_J{14hnh1nTW&B;*ija_bajP_6HY?~JD;9Y1;$mmL0Zjt;Eq;4Tvz zd0Gc-7i7$`VHlm1*`Lu?lUTMmg0arqbeBHzS@^uhng8C%n0YPp^DAvatAy0yvWage zI7=(c*kzidOGZF!V@odLjH$K^!4X3bb?(~QMSaK3a~6L|wr?ytFTzCDT!R*o2RQN$ zIJ$S@YoP*>075f{Fiy7_qV~>VdaJ;V;EV_@F-rT_;H9u16k#Eq&FwCgvK! z)d8f7p0Nk5gDQ2b7xG}sO31&Ab=@;xi?_J(cEK6G#jR4e?NH>gBL`fm`Y_hQqA=>5 z7%VU?6O--DKi;j$AE=Lk0OaWzcSmO#lIHvU)RzNzY4fb-)Uy=p;7%~@xCedce$T+xvE;6Hs6(BHP7@Dy z{^^<@I$NJ~Zi$hO*8M@tExJ_h{Lu3bR_Dtf^LcoS`zhycGOGsOvb<-?O|!Ntb3?|| ziz}@UqxZU0gd;xmzEL!rgw8`i^A%oE+~J|2s=UPY2S*>eQ!IPO#V7Qg7|52ULhfYP_G{34GW z>OmuGKluequMihPSV@UZ7t%IE;ajmA0FR1J2xh}Y{cilK|8>uN4YhN=@lB=Fs$(aG zMdAU2N51PUC?k{BMH0XE^?4yIX}HzI8{;h(U}z@0qx(K*k2rakLo>t|@a#-akjxcJ zb)5Z;a=<~92HYle#wk3Y!Bq@!o2-9`-=H?xs#sO-qtGfkRe^oJ^!jIEV(vr#`^4m6 zP~UOmNrsP`K6uC9U=>~6PfJ+!jg2RU*&=fY(r1f)i~E`zzZh?EKlYrx5OfvDjHH^- ztU}|+D)1=TH5pBL>{euA<)Z-)hEfcEY&kImqjB1b12)BS$E~=njC&AF#E65g7loTa zL$(BE@{OD$BXEwgVAlIx$j zJn<3FJn5JK`O(V*ci*yn_&45+TJU*dUFel}=n5@u49e~X)l<+g#KCW~T!oK^{ulNY z-MMOXhX*f++cO>$RVi+%)I-INmGns{YvMK)2gyGlbDDg3%N`CH9ibT;k0^}U%p=WV<*+in zu_C6#u_Y!IjP_L$n_gE-U-%o*c@U8P;AcLr z%Z}sx+SX8m#6fp8WoY&$sDHeC;omE~=Bckd=a(9+hog6xAIjpV45gu-nnNvNwBq*ZEO9F42&{n hg)QwAvX*?aXh@ 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 TqKA3r00000NkvXXu0mjf)~==* literal 0 HcmV?d00001 diff --git a/quickstarts/ios/Sources/Assets.xcassets/AppIcon.appiconset/icon-20.png b/quickstarts/ios/Sources/Assets.xcassets/AppIcon.appiconset/icon-20.png new file mode 100644 index 0000000000000000000000000000000000000000..9840a5a7b25ffee8f18ec4cec2f1e132f429a828 GIT binary patch literal 995 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 literal 0 HcmV?d00001 diff --git a/quickstarts/ios/Sources/Assets.xcassets/AppIcon.appiconset/icon-76.png b/quickstarts/ios/Sources/Assets.xcassets/AppIcon.appiconset/icon-76.png new file mode 100644 index 0000000000000000000000000000000000000000..5149500f86f665334b3acd24eaec5cd724d0e9aa GIT binary patch literal 7011 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 M07*qoM6N<$f_S`e`~Uy| literal 0 HcmV?d00001 diff --git a/quickstarts/ios/Sources/Assets.xcassets/AppIcon.appiconset/icon-87.png b/quickstarts/ios/Sources/Assets.xcassets/AppIcon.appiconset/icon-87.png new file mode 100644 index 0000000000000000000000000000000000000000..e20ad694cd9d41908cf8897ebc178a96177b7ac5 GIT binary patch literal 8528 zcmV-WA+O$vP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91SD*s`1ONa40RR91R{#J20Hadu6aWAqx=BPqRCoccU3;vhRdwI@IqwHB z!^|+e98gD4QBi0sR*(iOP+M)|i`G=Jk3jA{Q+V`D>8ZJR=>@Awmq?EIv;ZH8t$tgT7&cK)haD3Nk9He6O4#stA zj6e4s96Dw&4(%O@X4pm20Ov?GE>oB4NGNRPCFjI7wk$?h7kJZhANJnX_@zxQ(*;Mj zMK5vAWzGgeoZ!+ykk)aT1C@sBn?OBWP8zK86OH3WhtdR1#7Q9)Lg`2&`MQOSR{yL& zaQ4tCeH~|RPG`D`k%MeCN7o7JcxC2q-QL2=yNg@tj2-e^&AW1l(gtfHWo$Vyy~k#h zCM6&K4)$s}^e8j7w_x-bG{^>LF$EOAV!59y(9~IGx=c{Ej!vc+p5t5>xaclBV;$JR zg|m_6J|ecY%CP`7szJz^J|RRatFKMar8)#_Bgm37HXRL5Tz$(qR~Em?qobpKsVy>y zyod|gZRpl_z|t{^i7i-LF4+JHTjivs`cm#Yp$QPN0Z<|6lzw3hMYQCOkX@Y;0s*yg z079p>uZR|PsQ1zU1Y#BmJk?>2%@AD|{L!sNlSa83hI{0eT#aWqSD<2YBvF@|y7MwA z7d3OMZvYf72?Cs6u8307zYec*c*d|+-M|?e#ZttYO-gbH$S>E_<<3T^R-$y+IUoie zh0T1!pa2yg@e-GLi%`7%HhQ@|2)spcV~Ze!)+1B>B0vyXtGXar>xB)RIRLW}$CE@K zE@!8hA{nAxhDV6hMAvnZsr1yr9(P5&cILtC#LT>m%(}+n8gclJD%;45|11P~8-qjv zDj1R%H<29z&kC@x*ES>zNzSUNk*lt6#?mFKhK%{v9=yeHU}e=%F!Mu;z7^0_LC`>W z>=aw6Xy+*UQ>?l;3{~egLE`{ad>>BC)o#l|a?~SJV}>!DY6=5qVjfb%u{2#AHPERs zS&Arbs2Gm2!rH285K}6QW5b15)t`he=Qwy!#AU|iXRL$ec9gm(5IMPJ0Eu}*V<|lC z1{2`gQnJBBk;6vrkge4^94ZCoOk)yJ4sSa;+OhROOo_eoX+~1XKC!(m)zDe7O`u#B z7le&<7#g_JnOjdwH~eR*glzz><4YRD;yTv^%TH{AW}v2El^$N|R80_CIvj5=7Yl1? zsu~ib&ybM4+iD}i5Gtcw(+EB$f&QW@$apA(D!QPeY9J(txFREgjk-!y$tW9kgb0w-fGWFGd9dcvnVZ7NFPu#)qgj3IM=vb#-5E;--_{WcZ45TFGKJkD#y+)l69+Rz z#|vv(E0%ni{?IV&n4uH}H5RSU&S9&BkM$^pWo7CXakKA3n84 z;(>!aT&fXHsZ1`N(E19NPPMRgHZ~+l7`iCFCBp&E&dry(`2`dN18Qb$r?_6N@v*To zGBTXeRlg{H#PYgmoUvng(xcV7s_=*ioia-$K{RsbPU00xswk{`5{%95*|s{G!|r;g z_7hrTOyJ53D=zp&%9hNKiu%H{&Mar1zN5^~w*zAm9AecCL%ioZKP*q~Jy1r5@wWDj zoZ56?JZr>KG*mMS>L&H+P%F!hcfqFdk(JTw7+JR{thD6Q7J>jhI&`yMGzHf5b}2?Z zw*=OpE1t2&K$4VZX6DKpU;C=^uD8CrOw6Uag-987__eovusptJA7<}J10F20JXxm& zoWK@lvD9KXATt~G`WMRs^P+`?jxt)mEU<5rqnlieC0gdv$XPGfr^y6lT}Y$ZcqN#wOMff#U$6#lJZ$3sX3^Oi$Bi@WzRH=$Xm#^)| zS}3Dyjw?G}`n%=OW8W-?etdVCpMFL~)|#tyyx8AXQ!^;X;j#?d42=!GRB(xt2flaA=|&nVg3E zFp3hTjn>@!4W8>Pb6&OS6dlY3EIX?=pHfbF#WiKqsppr+zj;%cdFE%}8-p`>l(osR zFh?8|UI#(7@T7Dg3vhdV#1Ez(U(mAa&wC?)+3<~5 z5}GY$Y!`9xdMQGqbo9o5QGC5ZCwO*yknKs_}8p%HFP#Z`($OEX?BKd^zo+ z_my=gJ|_zsSl&m>&m1W~{_01y9uK3yTq+2RHst6>TZ=ZR4vgUXtc^#_zS;8*jSi+7 zL}4~>H^#n9UW*M_D8Qs)5QParA!s5TtRU69qx)VF` z1Ijv%jIS-H{_-D}hrj&iW#Y;2YX&n{=3yyQsxNZq8tn-2WzpE{j#qZ6n5p6Bw0I)?-eLyNyGdS9%YjNVSlU(}CzF5ZAZYiUyH+t?C zqTQ>&tJjxPE_j!)WnrF4GR&EBBb)db`w{kDWVY(eMxp7Re>8vziZ`u&sK+4gJ z3B9D~(iZZ7*09{;rJ}Obobl26$&M#Y97Yg5sWRE)jf*mRAzTo$(4>MVwa_=VlFs6nPS3h<3|LWF2TtZC6eV z?Re>*%g~^>?D*CJN8GSCZHVsM=BIioV-_ZetyR}|t*Mn&Pr{?1QUKA@9~v3eWmu-% z4b|U+|A{YrQyCsx?K7A$Dy$JZC5fWhP;=l=hwQC4psB}~!wWfvM{^N{Ay29aPHMUMS5TIJo#^qt{wlm9ylV4UA z=Y94vtfv|oM`4UKwCpu{<*#d(ud_-HR0}g@ z%Q$M3!vYhBIHBvlNBFJw;NVdq@ajr|F$}S? zJ;0-@SC#cAorC8P4;S88*v10kptXe+al_tQShq8);Hb%%AMT-S29lR5Q`=s>5FN*X zrHYa|(OMXC5+`mZMa&W}u7z_)p2ozi%fDFM&15=r^ITEvRU3DT()7o+U%%rVEkQLY z<7UovYvj~7x=wWH)0Bc=ipe>YO&g+n_Rm;LiZGk8kkqjh)4gWgCoRm+mD$Pt&~pyZ z-#LQFbE_vnJnb4?g=Jxz#p+``x`NBdn&Wrj?rojLa(LEH{U-A?xQisTphGi03Ft3>hsqecWx5_Jej@m-%pee)b5=bo9XB(fx<$sI#Gy zV-aVi;gMBkYX3u47%J%}SGKU@3WZO_25x|ijIYAM*{XGSh!2xvV_X%6WFl-@ilL(e zs)zMqVVi1YzJ5Inz0Ol_XLj*XCyb%n>=Vw-0Z|&z18jW zFGQw4z?I#k+NUvk(OPU)lMl>KccM&e7=mkPH`Ln=B(^ z%iRDrb2C|zxhHhVK}ns^n2khn0QAPCIkJ!o72yMMz&1Pa6l%qTQU?(1p|STv<;l0M za-`m8F4p5MXZ<>EF4iu2=@%&s;||YaIxo0*&@6VKsERD8BPMJn*qWP4VPYN5k9o|+ zK?>3(sjLlA;#eHi)ef6EN`|t52V=DKnLYdzx&-m<4JVM;10U+_NY&vv86Dx%7I^`m zcC6X*?6T=uFJHE>aIV+5qB7pPH;IF?3>1xTOy5#KzbmsBS^Jtx9|wW3!Xc>>8ne+k zW^DQqNEnRfLKG$S(DrX!@@9|hg@I0iV+=*WK6LDp$@^Yh`bftOL&*V1I9iHSfU%A@OdQo%yT z&Iatl?6hCwl9DGEE&!QLMpp5gp2Y{V3b2ToI$bvGd`a1O%1c&OSVUUH^|jtDbtTU-Ni;sCt~#(nyp!D?V_|LLY zP^WEWL7;E_)D?DgU}2l0#1X4AyCo0Viq2WBY|z+E022?4=jIJ3>Z*-9%C2Ai3urh5 z;-auzGN#J^-f^Ao;P_nzu_P4*ym&(~widJY_2v%kN;al6JMpwZ(Xs4Vpa_6AL>H7< zXDo*CjBD5ilgmP~HAd+a#KKn$xgxsTysO#ZwF<8qxmRjat1>6??2-L=?URGuB(%N^ zwpivdYq##cw5&Pd67V9Qyr)pEUJY96@B zL-;n%6L8_^+IJUtGhGv+uF~jaQB2`sw!XR8_Y}tB^9o_x^Df8Ia>6mqT0RGyKJb`Mq{=8K0CJ&2nD6Co9 z89Ttw-L1G;fJ(aDjJ3pi3L8qc;OwsFGOlcgG^X}H0uFy}051-X*=erfGHMlXb9cXH z#g|@i)y88r@x;A&STu=GGVl$bEN&ob4KxO*qp(cC%}cM*HS3OT){+NT6wf?%w_kve6|W$# z0(7Q~!dh=7Gd9V3e&h%JN@r|jDhl#Jtr^#o$5mQL(*SSi5LmFpcE^aBfEr1vROx6BMe^dOOQuR8Xur zp<~?T)>!k7qV;gebW2*%c1!C4I44sUz$6}ZjC5jcjsG5Yf({HMNqdzsw( zAZ9HNnvxwfUZRg-# zJO1KK-n{EVd@O$UG2P}eq}~k&_m(IA>n6-vJBLU4XwQmRhqbkrH^g#irZ!LYv8zy% zML|3SEeox>2BO*Gu4u+0kR2o@0bjWrhlp0P1Hr=Vj9n=}=I3SFP~egA^)_pdky8HP z`svsIO3y0v?H^0dxm&`hL>-F;l8_YO+m%^tCse~);Qf_ah#_0cZl|zv3k*9Zb7>(N zxBkMmc*88Ux7*%*xbNQsh^h-h`&{gV=Us-Ygwr&Um+~K^=T9Q`{P$gFuCucMDPnBtMToatJi_8Ypz$Dxc8F zYuO!tvY=-QtPnO9cl)`&gJoeoX7JJ7c|}0Ci6?%9lh+O9;6rzzkDo}2-X>b5vwG$oTD%X^QOF8s08^Q6FwXI4h_;^V zEQ_W0Ae_gy9cK>lhk017ur#dO{(^Emzk{&EHzc`6Yo;Q^)V@c{p6~F)^?C3d%9ED@ zDup%=$ogkGjzuMdFv}mz&CZrpYuA(=CvGj9H*L^zuz&x-vS;tpcwC7uu;ADAqoa2F z%y)Ws^FA8?n8%I=K~a)H4*I0Q4Z?}1ha6qnlrRIM0xE)ypiA5ISfnX@%+Al$_#x#Y zX55bR-huCh`E4%!@gf&nK7g4$ycf?2zFYP`@a1yok#At&2T;^;ecdTWLOA8RwKAzl z$`3X0@O^5!oQ+@EU-4U)mrE}CrLya^on_s+wQ@gn_;7jP!AHv-U;1kK^grER9(wSR zGO~KLW^}B@xy*3bh^dcxn1F@EUV`;3AusoGYplCOVdaHN@QZdc6Z@8&eKBY*i~Ow^ zKV9Iq;iMPq$9q%z@ud+=UH)Kie(FG(#!pUp2RFIrhvmrL2XNVj?>%r`9T~@0`SHA< z$$#KgK@N=*fQ7}MF2GD(zh+gr{(V=MtKa^nvSB^G0ok){IsUk^<-Fs{FP`_J@~*4i zT0U~aKa`LC&CU9=2l^WksEg%M_WDUN)<1nZ>}#s0N-~O^FtOB8Y-152 zJKh~E?6xhN%cuYD!{wq2&NJu=_n*D>U&}lG;7`f~mWn8FxRSr#p$#aQsiI(>b_a)! z`eq}c4J|_Oj%yMRrY8~?0%uiV!%s6w!$zSwQ*j{lw-JD)&3<&vhdCZpVMOEsO&>Fs zJr$97huNu$27K;|1IHQrnZN%?x$xyLbB@8y#KZ)C2|A7+isKs3w>SI-9@gV7@~yx3 z9<9rvk6?C(rku2MyUWciQz80r2G5xgBWQ6L9naYILV;Z7;5xFthizpRtL*I4mn0C| z6xD?yb#bWZZA!XOX3sPxOAiIt*gt*GJC`l&?YG}vF1_^9a`50mF}Axmz5cRt)s=6- z6Sv8}1KInTbxnq|20a@SGEsJxqR3fz{WBcXuGWwYGtf6P3@jCmoCmh*+ADqSZ&Yfk$h7IMu`|c|z zopcheAi5_!o&X0uCDk&871T0`!ZK{iiUS34C@eqS;B_o7w|X}g_L^(1DL3ADqfDHwTx*|r;)yba z19HU`SCpG?zPa!3@LYDuh2`Ua`;YKZGV(=nt)qPo%m!qp3a;1~ENp2GVUUh7!_K(N zVH~R_V$ln7()1J)tWnH>v@^ENlP95*wr?rVI&~+L>1_Ahb5Hr?CqG%%u3f9O{>YId zg|F4Prroq@lL|lR4;<}&_O7yi<9hpRCpfP#Tm0a}xl^z~STbQG7P9`Cjzg=~kOT-q zZ{0V0fu*96Gk&9M?Ud7GLaeb#9T=G{KjrDJ(m-Z$H=_{iP{7{p{`>F84I2K^6HlVp z*z(00y=&L5a{l?}_qwRR5q#_MZs1=#VWQmY=N9p>hIElYGZJaBlZ_b72;)eb@YHE@ zL6}s+0$DnO8hvkJ2}>Q3<`*+lA+&2a3?)|P7kS#r%yKq=i*0vRt-rBy#_Eq4)gY3n zd-BOAwLJ8g)MdJsbLF%@W&tx*F$n89g}mJ6nCc!9+7LrfKb00CyD7jg0J=BrH^xS*ul+5h*VZ3ek9XMDHAI9}}&vwo^=jeph9$Z4W6tK8gUww7iyO&?s z?rsOb_YC;#|7t=TmIXFBBRn{Dwpsd2EoOpcNvqk^hM2n6?(!hafWopOy@k#ENTtol zLeCywN1L&cKZ`bu_v@ZLd&>h4J!*8#e)sO(<$?^NW@ZYncX_pN{q@(E?c29^ zeAv0|_Ag;E_Z$=t`Hr9YD_%7>G)1BzXGfUBzHHGL5>9=7REIL!R!0}aO_QakJkrm& z1;K8qs{*35_4v_a9ybxEoxH7l>npdE<2G*!WVUzSd1txhmRrij7hha9ZroVdKjVxu z%2iigl_$FZKlJdU<)yE)!p&@}Uo0N8``E{q~iASU&Zse=eiE zxoBc)Suoa`L>4p#(KyIEp(*qiHd7sh8Kk2F^l3`L^w{USC^dmOx*y>3h{7@m*WS_9 zYs$y|`lj-^TkkN)&#}MZ6E~Glf94kap4guIHUqE|S`JFNTEZ-Fq+T7Wrs|k?kDgtr z8hv60={PFr-ITG}ho7m{F^m+Z7Z!c9x{iJK6BO16pGyb~e9AV5_U%`{w|wSvw=s!h z+HUyxjpg0%{a_i!Z;9>DTQp^ZfFmQvKkEa*$kbwX_=sR?9V#-U%vy@TveU>hvPQ?j zTP(*W+=R>n=D-DHC07OXu~)aS!4diK3SfF>w%mFf{#wb?PnQ>*y&G%n1}3%S_M-UZp>kV8@&Zxg>1kK#yKs7L9p?-DNi1dNG4^ z8ODX)ILmS;L0`NGpX2JpuYUY?&-{^zvSa7A^190}DX+n^g6BQ=%(4k5Ggf5Z{sZOS z@Bg5D{*Et~+wS;M*}r$cEd_e>SDtpfL*u(%h4?m$RMy0WfHuS`^bMk#61)VavC}EL zDfIctf-GYOvp#hY?q?vGY=_afsVyuYOu1SU$x;Xnp7G);ViA{IWn>6X!q(x2Vhwl} zal>(>Ogw`>7lX^KVXW1|`~%9pF(aTy(5JtVOwFtY8>mYXT7gY?3eDghBcf{80nKg- z@?*~m38^)S1G|jh7#m=xn9v8REi8#iLu}o+PU0=Dv;JZ^GCfxg + + + + THUNDERID_BASE_URL + https://localhost:8090 + THUNDERID_APPLICATION_ID + your-application-id + THUNDERID_ATTESTATION_ENABLED + false + + diff --git a/quickstarts/ios/Sources/HomeView.swift b/quickstarts/ios/Sources/HomeView.swift new file mode 100644 index 0000000..77f91e4 --- /dev/null +++ b/quickstarts/ios/Sources/HomeView.swift @@ -0,0 +1,411 @@ +// Copyright 2026 The ThunderID Authors +// SPDX-License-Identifier: Apache-2.0 + +import SwiftUI +import ThunderIDSwiftUI + +// MARK: - App Screen Enum + +private enum AppScreen { + case home, profile, token +} + +// MARK: - HomeView + +struct HomeView: View { + @EnvironmentObject private var state: ThunderIDState + @Environment(\.colorScheme) private var colorScheme + + @State private var screen: AppScreen = .home + + private var isDark: Bool { colorScheme == .dark } + private var bgColor: Color { isDark ? Color(hex: "080f1c") : Color(hex: "F7F9FC") } + private var textColor: Color { isDark ? Color(hex: "E0EAFF") : Color(hex: "05213F") } + private var mutedColor: Color { isDark ? Color(hex: "E0EAFF").opacity(0.48) : Color(hex: "5A7085") } + private var borderColor: Color { isDark ? Color.white.opacity(0.09) : Color(hex: "DDE3EC") } + private var cardColor: Color { isDark ? Color(hex: "111c2e") : Color(hex: "ffffff") } + private var primaryBlue: Color { Color(hex: "3688FF") } + private var successGreen: Color { Color(hex: "2fbd6b") } + private var errorRed: Color { Color(hex: "d95757") } + + var body: some View { + NavigationStack { + ZStack { + bgColor.ignoresSafeArea() + switch screen { + case .home: + HomeScreen( + isDark: isDark, + bgColor: bgColor, + textColor: textColor, + mutedColor: mutedColor, + borderColor: borderColor, + cardColor: cardColor, + primaryBlue: primaryBlue, + successGreen: successGreen, + onProfile: { screen = .profile }, + onToken: { screen = .token } + ) + case .profile: + ProfileScreen( + isDark: isDark, + bgColor: bgColor, + textColor: textColor, + mutedColor: mutedColor, + borderColor: borderColor, + cardColor: cardColor, + primaryBlue: primaryBlue + ) { + screen = .home + } + case .token: + TokenScreen( + isDark: isDark, + bgColor: bgColor, + textColor: textColor, + mutedColor: mutedColor, + borderColor: borderColor, + cardColor: cardColor, + primaryBlue: primaryBlue, + successGreen: successGreen, + errorRed: errorRed + ) { + screen = .home + } + } + } + #if os(iOS) + .toolbar(.hidden, for: .navigationBar) + #endif + } + } +} + +// MARK: - Claim Decoding Helper + +/// Reads a unix-seconds numeric claim (`Int` or `Double`) from a decoded JWT/userinfo claims map. +func claimUnixSeconds(_ claim: Any?) -> TimeInterval? { + guard let value = claim else { return nil } + if let intValue = value as? Int { return TimeInterval(intValue) } + if let doubleValue = value as? Double { return doubleValue } + return nil +} + +// MARK: - Next Step Model + +private struct NextStep { + let number: String + let title: String + let subtitle: String + let href: String +} + +// MARK: - Home Screen + +private struct HomeScreen: View { + @EnvironmentObject private var state: ThunderIDState + let isDark: Bool + let bgColor: Color + let textColor: Color + let mutedColor: Color + let borderColor: Color + let cardColor: Color + let primaryBlue: Color + let successGreen: Color + let onProfile: () -> Void + let onToken: () -> Void + + private var greetingName: String { + if let given = state.user?["given_name"] as? String, !given.isEmpty { + return given + } + if let email = state.user?.email, let prefix = email.split(separator: "@").first, !prefix.isEmpty { + return String(prefix) + } + return "there" + } + + private var authTimeClaim: TimeInterval? { claimUnixSeconds(state.user?["auth_time"]) } + private var expClaim: TimeInterval? { claimUnixSeconds(state.user?["exp"]) } + + private var organisationName: String { + guard let handle = (try? state.client.getConfiguration())?.organizationHandle, !handle.isEmpty else { + return "Default" + } + return handle + } + + private var greeting: String { + let hour = Calendar.current.component(.hour, from: Date()) + let timeOfDay: String + if hour < 12 { + timeOfDay = "morning" + } else if hour < 17 { + timeOfDay = "afternoon" + } else { + timeOfDay = "evening" + } + return "Good \(timeOfDay), \(greetingName)." + } + + private var currentDateString: String { + let formatter = DateFormatter() + formatter.dateFormat = "EEEE, MMMM d" + return formatter.string(from: Date()).uppercased() + } + + private let nextSteps: [NextStep] = [ + NextStep( + number: "01", + title: "Explore use cases", + subtitle: "See what you can build β€” auth flows for web, mobile, APIs, and agents.", + href: "https://thunderid.dev/docs/next/use-cases/overview/" + ), + NextStep( + number: "02", + title: "Learn about flows", + subtitle: "Understand how authorization code, PKCE, client credentials, and device flows work.", + href: "https://thunderid.dev/docs/next/guides/flows/what-are-flows/" + ), + NextStep( + number: "03", + title: "Style your experience", + subtitle: "Customize the login UI, branding, and email templates to match your product.", + href: "https://thunderid.dev/docs/next/guides/design/overview/" + ), + NextStep( + number: "04", + title: "Explore SDK APIs", + subtitle: "Full iOS SDK reference β€” views, state objects, and configuration options.", + href: "https://thunderid.dev/docs/next/sdks/ios/overview/" + ) + ] + + var body: some View { + ScrollView { + VStack(alignment: .leading, spacing: 0) { + // Hero: avatar + (date/session row, greeting row) + heroSection + .padding(.horizontal, 24) + .padding(.top, 24) + + // Stats row + statsRow + .padding(.horizontal, 20) + .padding(.top, 20) + + // What's next section + sectionHeader("WHAT'S NEXT") + .padding(.horizontal, 24) + .padding(.top, 28) + + stepsCard + .padding(.horizontal, 20) + .padding(.top, 12) + + // User actions + sectionHeader("ACCOUNT") + .padding(.horizontal, 24) + .padding(.top, 28) + + actionsCard + .padding(.horizontal, 20) + .padding(.top, 12) + .padding(.bottom, 40) + } + } + .background(bgColor) + } + + private var heroSection: some View { + HStack(alignment: .center, spacing: 14) { + UserAvatar(size: 48) + + VStack(alignment: .leading, spacing: 4) { + HStack(spacing: 6) { + Text(currentDateString) + .font(.system(size: 11, weight: .semibold)) + .tracking(1.2) + .foregroundColor(mutedColor) + Circle() + .fill(mutedColor.opacity(0.4)) + .frame(width: 3, height: 3) + Circle() + .fill(successGreen) + .frame(width: 6, height: 6) + Text("Session active") + .font(.system(size: 11, weight: .medium)) + .foregroundColor(successGreen) + } + Text(greeting) + .font(.system(size: 22, weight: .bold)) + .foregroundColor(textColor) + } + } + } + + private var statsRow: some View { + TimelineView(.periodic(from: .now, by: 1)) { context in + HStack(spacing: 0) { + statItem(value: signedInAtText, label: "Signed in at") + Divider() + .frame(width: 1, height: 36) + .background(borderColor) + statItem(value: sessionExpiresInText(now: context.date), label: "Session expires in") + Divider() + .frame(width: 1, height: 36) + .background(borderColor) + statItem(value: organisationName, label: "Organisation") + } + .padding(.vertical, 16) + } + .background(cardColor) + .clipShape(RoundedRectangle(cornerRadius: 14)) + .overlay(RoundedRectangle(cornerRadius: 14).stroke(borderColor, lineWidth: 1)) + } + + private var signedInAtText: String { + guard let authTime = authTimeClaim else { return "β€”" } + let formatter = DateFormatter() + formatter.dateStyle = .none + formatter.timeStyle = .short + return formatter.string(from: Date(timeIntervalSince1970: authTime)) + } + + private func sessionExpiresInText(now: Date) -> String { + guard let exp = expClaim else { return "β€”" } + let secondsLeft = Int(exp - now.timeIntervalSince1970) + if secondsLeft <= 0 { return "Expired" } + if secondsLeft < 3600 { + return "\(secondsLeft / 60)m \(secondsLeft % 60)s" + } + return "\(secondsLeft / 3600)h \((secondsLeft % 3600) / 60)m" + } + + private func statItem(value: String, label: String) -> some View { + VStack(spacing: 3) { + Text(value) + .font(.system(size: 18, weight: .bold)) + .foregroundColor(textColor) + Text(label) + .font(.system(size: 11)) + .foregroundColor(mutedColor) + } + .frame(maxWidth: .infinity) + } + + private func sectionHeader(_ text: String) -> some View { + Text(text) + .font(.system(size: 11, weight: .semibold)) + .tracking(1.2) + .foregroundColor(mutedColor) + } + + @Environment(\.openURL) private var openURL + + private var stepsCard: some View { + VStack(spacing: 0) { + ForEach(Array(nextSteps.enumerated()), id: \.offset) { index, step in + if index > 0 { + Divider() + .background(borderColor) + .padding(.leading, 16) + } + Button { + guard let url = URL(string: step.href) else { return } + openURL(url) + } label: { + HStack(spacing: 14) { + Text(step.number) + .font(.system(size: 13, weight: .semibold, design: .monospaced)) + .foregroundColor(primaryBlue) + .frame(width: 28) + + VStack(alignment: .leading, spacing: 2) { + Text(step.title) + .font(.system(size: 14, weight: .bold)) + .foregroundColor(textColor) + Text(step.subtitle) + .font(.system(size: 12)) + .foregroundColor(mutedColor) + } + + Spacer() + + Image(systemName: "chevron.right") + .font(.system(size: 12, weight: .medium)) + .foregroundColor(mutedColor) + } + .padding(.horizontal, 16) + .padding(.vertical, 14) + } + .buttonStyle(.plain) + } + } + .background(cardColor) + .clipShape(RoundedRectangle(cornerRadius: 14)) + .overlay(RoundedRectangle(cornerRadius: 14).stroke(borderColor, lineWidth: 1)) + } + + private var actionsCard: some View { + VStack(spacing: 0) { + // Manage Account + Button(action: onProfile) { + actionRow(icon: "person.circle", label: "Manage Account", color: textColor) + } + + Divider() + .background(borderColor) + .padding(.leading, 52) + + // Token debug + Button(action: onToken) { + actionRow(icon: "key.horizontal", label: "Token debug", color: textColor) + } + + Divider() + .background(borderColor) + .padding(.leading, 52) + + // Sign out + signOutRow + } + .background(cardColor) + .clipShape(RoundedRectangle(cornerRadius: 14)) + .overlay(RoundedRectangle(cornerRadius: 14).stroke(borderColor, lineWidth: 1)) + } + + private func actionRow(icon: String, label: String, color: Color) -> some View { + HStack(spacing: 14) { + Image(systemName: icon) + .font(.system(size: 18)) + .foregroundColor(color) + .frame(width: 24) + Text(label) + .font(.system(size: 15)) + .foregroundColor(color) + Spacer() + Image(systemName: "chevron.right") + .font(.system(size: 12, weight: .medium)) + .foregroundColor(mutedColor) + } + .padding(.horizontal, 16) + .padding(.vertical, 14) + } + + private var signOutRow: some View { + HStack(spacing: 14) { + Image(systemName: "rectangle.portrait.and.arrow.right") + .font(.system(size: 18)) + .foregroundColor(Color(hex: "d95757")) + .frame(width: 24) + SignOutButton() + .tint(Color(hex: "d95757")) + Spacer() + } + .padding(.horizontal, 16) + .padding(.vertical, 14) + } +} + +// Color(hex:) is defined in SignInView.swift and shared across the module. diff --git a/quickstarts/ios/Sources/HomeViewComponents.swift b/quickstarts/ios/Sources/HomeViewComponents.swift new file mode 100644 index 0000000..ae6eea1 --- /dev/null +++ b/quickstarts/ios/Sources/HomeViewComponents.swift @@ -0,0 +1,167 @@ +// Copyright 2026 The ThunderID Authors +// SPDX-License-Identifier: Apache-2.0 + +import SwiftUI +import ThunderIDSwiftUI + +// MARK: - Shared Components + +struct UserAvatarView: View { + let user: User? + let radius: CGFloat + + var body: some View { + if let urlString = pictureUrl, let url = URL(string: urlString) { + AsyncImage(url: url) { image in + image.resizable().scaledToFill() + } placeholder: { + Color.accentColor.opacity(0.3) + } + .frame(width: radius * 2, height: radius * 2) + .clipShape(Circle()) + } else { + Circle() + .fill(Color.accentColor.opacity(0.15)) + .frame(width: radius * 2, height: radius * 2) + .overlay( + Text(initial) + .font(.system(size: radius * 0.9, weight: .bold)) + .foregroundColor(.accentColor) + ) + } + } + + private var pictureUrl: String? { + if let pic = user?["picture"] as? String, !pic.isEmpty { return pic } + return nil + } + + private var initial: String { + if let name = user?.displayName, !name.isEmpty { return String(name.prefix(1)).uppercased() } + if let email = user?.email, !email.isEmpty { return String(email.prefix(1)).uppercased() } + return "?" + } +} + +struct StatItemView: View { + let value: String + let label: String + + var body: some View { + VStack(spacing: 4) { + Text(value) + .font(.title2).bold() + Text(label) + .font(.caption) + .foregroundColor(.secondary) + .multilineTextAlignment(.center) + } + .frame(maxWidth: .infinity) + } +} + +struct FeatureCardView: View { + let label: String + let imageUrl: String + let isNew: Bool + + var body: some View { + ZStack { + AsyncImage(url: URL(string: imageUrl)) { image in + image.resizable().scaledToFill() + } placeholder: { + Color.secondary.opacity(0.12) + } + .clipped() + + LinearGradient( + colors: [.clear, .black.opacity(0.6)], + startPoint: .top, + endPoint: .bottom + ) + + VStack(alignment: .leading) { + if isNew { + Text("NEW") + .font(.system(size: 10, weight: .bold)) + .foregroundColor(.white) + .padding(.horizontal, 8) + .padding(.vertical, 4) + .background(Color.accentColor) + .cornerRadius(12) + } + Spacer() + Text(label) + .font(.system(size: 14, weight: .bold)) + .foregroundColor(.white) + } + .frame(maxWidth: .infinity, alignment: .leading) + .padding(12) + } + .aspectRatio(1, contentMode: .fit) + .clipShape(RoundedRectangle(cornerRadius: 16)) + .overlay( + RoundedRectangle(cornerRadius: 16) + .stroke(Color.gray.opacity(0.3), lineWidth: 1) + ) + } +} + +// MARK: - Listing Data & Card + +struct Listing { + let title: String + let location: String + let price: Int + let rating: Double + let imageUrl: String +} + +struct ListingCardView: View { + let listing: Listing + + var body: some View { + VStack(alignment: .leading, spacing: 0) { + ZStack(alignment: .topTrailing) { + AsyncImage(url: URL(string: listing.imageUrl)) { image in + image.resizable().scaledToFill() + } placeholder: { + Color.secondary.opacity(0.12) + } + .frame(height: 130) + .clipped() + + Image(systemName: "heart") + .foregroundColor(.white) + .padding(8) + } + .frame(height: 130) + + VStack(alignment: .leading, spacing: 2) { + HStack { + Text(listing.location) + .font(.caption) + .foregroundColor(.secondary) + .lineLimit(1) + Spacer() + Image(systemName: "star.fill") + .font(.system(size: 9)) + .foregroundColor(.accentColor) + Text(String(format: "%.2f", listing.rating)) + .font(.caption) + } + Text(listing.title) + .font(.caption) + .fontWeight(.semibold) + .lineLimit(2) + Text("$\(listing.price)/night") + .font(.caption) + } + .padding(.horizontal, 8) + .padding(.vertical, 10) + } + .background(.background) + .clipShape(RoundedRectangle(cornerRadius: 16)) + .shadow(color: .black.opacity(0.08), radius: 4, x: 0, y: 2) + } +} diff --git a/quickstarts/ios/Sources/ProfileView.swift b/quickstarts/ios/Sources/ProfileView.swift new file mode 100644 index 0000000..68ba24f --- /dev/null +++ b/quickstarts/ios/Sources/ProfileView.swift @@ -0,0 +1,51 @@ +// Copyright 2026 The ThunderID Authors +// SPDX-License-Identifier: Apache-2.0 + +import SwiftUI +import ThunderIDSwiftUI + +// MARK: - Profile Screen + +struct ProfileScreen: View { + let isDark: Bool + let bgColor: Color + let textColor: Color + let mutedColor: Color + let borderColor: Color + let cardColor: Color + let primaryBlue: Color + let onBack: () -> Void + + var body: some View { + ScrollView { + VStack(alignment: .leading, spacing: 0) { + // Back nav + Button(action: onBack) { + HStack(spacing: 4) { + Image(systemName: "chevron.left") + .font(.system(size: 14, weight: .semibold)) + Text("Home") + .font(.system(size: 16)) + } + .foregroundColor(primaryBlue) + } + .padding(.horizontal, 20) + .padding(.top, 20) + .padding(.bottom, 8) + + // UserProfile owns the /users/me data, edit/save state, and its own styling + // (light/dark-adaptive), so this screen only supplies the surrounding chrome. + UserProfile() + .padding(.horizontal, 20) + .padding(.bottom, 24) + + // ChangeCredential manages the credential declared on the user type schema; its + // heading and labels follow that credential's own display name from the console. + ChangeCredential() + .padding(.horizontal, 20) + .padding(.bottom, 40) + } + } + .background(bgColor) + } +} diff --git a/quickstarts/ios/Sources/Quickstart.entitlements b/quickstarts/ios/Sources/Quickstart.entitlements new file mode 100644 index 0000000..6ba0b71 --- /dev/null +++ b/quickstarts/ios/Sources/Quickstart.entitlements @@ -0,0 +1,10 @@ + + + + + com.apple.developer.associated-domains + + webcredentials:your-thunderid-domain.example + + + diff --git a/quickstarts/ios/Sources/RootView.swift b/quickstarts/ios/Sources/RootView.swift new file mode 100644 index 0000000..15c2a5b --- /dev/null +++ b/quickstarts/ios/Sources/RootView.swift @@ -0,0 +1,31 @@ +// Copyright 2026 The ThunderID Authors +// SPDX-License-Identifier: Apache-2.0 + +import SwiftUI +import ThunderIDSwiftUI + +struct RootView: View { + @EnvironmentObject private var state: ThunderIDState + + var body: some View { + if !state.isInitialized || state.isLoading { + VStack(spacing: 12) { + ProgressView() + Text("Loading\u{2026}") + .foregroundColor(.secondary) + } + .frame(maxWidth: .infinity, maxHeight: .infinity) + } else if let error = state.error { + VStack(spacing: 16) { + Text("Configuration error: \(error)\n\nCheck your .env values.") + .multilineTextAlignment(.center) + .padding(24) + } + .frame(maxWidth: .infinity, maxHeight: .infinity) + } else if state.isSignedIn { + HomeView() + } else { + AuthView() + } + } +} diff --git a/quickstarts/ios/Sources/SignInView.swift b/quickstarts/ios/Sources/SignInView.swift new file mode 100644 index 0000000..6ff2c9b --- /dev/null +++ b/quickstarts/ios/Sources/SignInView.swift @@ -0,0 +1,354 @@ +// Copyright 2026 The ThunderID Authors +// SPDX-License-Identifier: Apache-2.0 + +import SwiftUI +import ThunderIDSwiftUI + +// MARK: - Color Helpers + +extension Color { + init(hex: String) { + let hex = hex.trimmingCharacters(in: CharacterSet.alphanumerics.inverted) + var int: UInt64 = 0 + Scanner(string: hex).scanHexInt64(&int) + let alpha, red, green, blue: UInt64 + switch hex.count { + case 3: + (alpha, red, green, blue) = (255, (int >> 8) * 17, (int >> 4 & 0xF) * 17, (int & 0xF) * 17) + case 6: + (alpha, red, green, blue) = (255, int >> 16, int >> 8 & 0xFF, int & 0xFF) + case 8: + (alpha, red, green, blue) = (int >> 24, int >> 16 & 0xFF, int >> 8 & 0xFF, int & 0xFF) + default: + (alpha, red, green, blue) = (255, 0, 0, 0) + } + self.init( + .sRGB, + red: Double(red) / 255, + green: Double(green) / 255, + blue: Double(blue) / 255, + opacity: Double(alpha) / 255 + ) + } +} + +// MARK: - ThunderID Logo Mark + +private struct TdMarkView: View { + let height: CGFloat + let dark: Bool + + private var width: CGFloat { height * (207.0 / 257.0) } + + var body: some View { + Canvas { context, size in + let scaleX = size.width / 207.0 + let scaleY = size.height / 257.0 + + func scaledPath(_ pathData: Path) -> Path { + pathData.applying(CGAffineTransform(scaleX: scaleX, y: scaleY)) + } + + // Path 1: wordmark top-left bar β€” text color + var path1 = Path() + path1.move(to: CGPoint(x: 55.4763, y: 26.4391)) + path1.addLine(to: CGPoint(x: 58.8866, y: 0)) + path1.addLine(to: CGPoint(x: 0, y: 0)) + path1.addLine(to: CGPoint(x: 0, y: 26.4391)) + path1.closeSubpath() + context.fill(scaledPath(path1), with: .color(dark ? Color(hex: "E8F4FF") : Color(hex: "05213F"))) + + // Path 2: left bar β€” blue + var path2 = Path() + path2.move(to: CGPoint(x: 39.8438, y: 147.407)) + path2.addLine(to: CGPoint(x: 49.5455, y: 72.2839)) + path2.addLine(to: CGPoint(x: 0, y: 72.2839)) + path2.addLine(to: CGPoint(x: 0, y: 256.743)) + path2.addLine(to: CGPoint(x: 60.5602, y: 256.743)) + path2.addLine(to: CGPoint(x: 80.048, y: 147.407)) + path2.closeSubpath() + context.fill(scaledPath(path2), with: .color(Color(hex: "3688FF"))) + + // Path 3: right bolt β€” blue + var path3 = Path() + path3.move(to: CGPoint(x: 192.42, y: 59.361)) + path3.addCurve( + to: CGPoint(x: 150.903, y: 15.3381), + control1: CGPoint(x: 182.782, y: 40.2307), + control2: CGPoint(x: 168.929, y: 25.5705) + ) + path3.addCurve( + to: CGPoint(x: 133.703, y: 7.5208), + control1: CGPoint(x: 145.501, y: 12.2662), + control2: CGPoint(x: 139.761, y: 9.6605) + ) + path3.addLine(to: CGPoint(x: 115.401, y: 103.702)) + path3.addLine(to: CGPoint(x: 159.757, y: 103.702)) + path3.addLine(to: CGPoint(x: 76.2987, y: 256.743)) + path3.addLine(to: CGPoint(x: 83.3735, y: 256.743)) + path3.addCurve( + to: CGPoint(x: 150.14, y: 241.236), + control1: CGPoint(x: 109.449, y: 256.743), + control2: CGPoint(x: 131.69, y: 251.574) + ) + path3.addCurve( + to: CGPoint(x: 192.356, y: 196.959), + control1: CGPoint(x: 168.569, y: 230.897), + control2: CGPoint(x: 182.634, y: 216.131) + ) + path3.addCurve( + to: CGPoint(x: 206.909, y: 128.043), + control1: CGPoint(x: 202.058, y: 177.765), + control2: CGPoint(x: 206.909, y: 154.8) + ) + path3.addCurve( + to: CGPoint(x: 192.441, y: 59.3821), + control1: CGPoint(x: 206.909, y: 101.286), + control2: CGPoint(x: 202.079, y: 78.5123) + ) + path3.closeSubpath() + context.fill(scaledPath(path3), with: .color(Color(hex: "3688FF"))) + } + .frame(width: width, height: height) + } +} + +// MARK: - AuthView (Landing Screen) + +struct AuthView: View { + @EnvironmentObject private var state: ThunderIDState + @Environment(\.colorScheme) private var colorScheme + + private var applicationId: String { + (try? state.client.getConfiguration())?.applicationId ?? "" + } + + @State private var showSignUp = false + @State private var showSignIn = false + @State private var showRecover = false + + private var isDark: Bool { colorScheme == .dark } + + private var bgColor: Color { isDark ? Color(hex: "080f1c") : Color(hex: "F7F9FC") } + private var textColor: Color { isDark ? Color(hex: "E0EAFF") : Color(hex: "05213F") } + private var mutedColor: Color { isDark ? Color(hex: "E0EAFF").opacity(0.48) : Color(hex: "5A7085") } + private var borderColor: Color { isDark ? Color.white.opacity(0.09) : Color(hex: "DDE3EC") } + private var cardColor: Color { isDark ? Color(hex: "111c2e") : Color(hex: "ffffff") } + private var primaryBlue: Color { Color(hex: "3688FF") } + + private let featureTags = ["OAuth 2.0", "PKCE", "JWT", "MFA", "SSO"] + + var body: some View { + ZStack { + bgColor.ignoresSafeArea() + + VStack(spacing: 0) { + Spacer() + + // Logo mark + TdMarkView(height: 64, dark: isDark) + .padding(.bottom, 32) + + // Headline + Text("Authentication\nfor developers.") + .font(.system(size: 28, weight: .bold)) + .tracking(-0.5) + .multilineTextAlignment(.center) + .foregroundColor(textColor) + .padding(.horizontal, 32) + + // Subtext + Text("OAuth 2.0, PKCE, MFA, and JWT\n- out of the box in minutes.") + .font(.system(size: 15)) + .multilineTextAlignment(.center) + .foregroundColor(mutedColor) + .padding(.top, 12) + .padding(.horizontal, 32) + + // Feature tags + ScrollView(.horizontal, showsIndicators: false) { + HStack(spacing: 8) { + ForEach(featureTags, id: \.self) { tag in + Text(tag) + .font(.system(size: 12, weight: .medium)) + .foregroundColor(primaryBlue) + .padding(.horizontal, 12) + .padding(.vertical, 6) + .background(primaryBlue.opacity(0.1)) + .overlay( + Capsule() + .stroke(primaryBlue.opacity(0.3), lineWidth: 1) + ) + .clipShape(Capsule()) + } + } + .padding(.horizontal, 24) + } + .padding(.top, 24) + + Spacer() + + // CTAs + VStack(spacing: 12) { + Button { + showSignUp = true + } label: { + Text("Get started") + .font(.system(size: 16, weight: .semibold)) + .foregroundColor(.white) + .frame(maxWidth: .infinity) + .padding(.vertical, 15) + .background(primaryBlue) + .clipShape(RoundedRectangle(cornerRadius: 12)) + } + + Button { + showSignIn = true + } label: { + Text("Sign in") + .font(.system(size: 16, weight: .semibold)) + .foregroundColor(primaryBlue) + .frame(maxWidth: .infinity) + .padding(.vertical, 15) + .background(cardColor) + .clipShape(RoundedRectangle(cornerRadius: 12)) + .overlay( + RoundedRectangle(cornerRadius: 12) + .stroke(primaryBlue, lineWidth: 1.5) + ) + } + } + .padding(.horizontal, 24) + .padding(.bottom, 48) + } + } + // Sign In sheet + .sheet(isPresented: $showSignIn) { + SignInSheet( + applicationId: applicationId, + isDark: isDark, + bgColor: bgColor, + textColor: textColor, + mutedColor: mutedColor, + primaryBlue: primaryBlue + ) + .presentationDetents([.medium, .large]) + .presentationDragIndicator(.visible) + } + // Sign Up sheet + .sheet(isPresented: $showSignUp) { + SignUpSheet( + applicationId: applicationId, + isDark: isDark, + bgColor: bgColor, + textColor: textColor, + mutedColor: mutedColor, + primaryBlue: primaryBlue + ) + .presentationDetents([.medium, .large]) + .presentationDragIndicator(.visible) + } + // Recover sheet + .sheet(isPresented: $showRecover) { + RecoverSheet( + isDark: isDark, + bgColor: bgColor, + textColor: textColor, + mutedColor: mutedColor, + primaryBlue: primaryBlue + ) { + showRecover = false + DispatchQueue.main.asyncAfter(deadline: .now() + 0.35) { + showSignIn = true + } + } + .presentationDetents([.medium, .large]) + .presentationDragIndicator(.visible) + } + } +} + +// MARK: - Sign In Sheet + +private struct SignInSheet: View { + let applicationId: String + let isDark: Bool + let bgColor: Color + let textColor: Color + let mutedColor: Color + let primaryBlue: Color + + var body: some View { + ZStack { + bgColor.ignoresSafeArea() + + VStack(alignment: .leading, spacing: 0) { + SignIn(applicationId: applicationId) + .padding(.horizontal, 24) + .padding(.top, 32) + .padding(.bottom, 24) + + Spacer() + } + } + } +} + +// MARK: - Sign Up Sheet + +private struct SignUpSheet: View { + let applicationId: String + let isDark: Bool + let bgColor: Color + let textColor: Color + let mutedColor: Color + let primaryBlue: Color + + var body: some View { + ZStack { + bgColor.ignoresSafeArea() + + VStack(alignment: .leading, spacing: 0) { + SignUp(applicationId: applicationId) + .padding(.horizontal, 24) + .padding(.top, 32) + .padding(.bottom, 24) + + Spacer() + } + } + } +} + +// MARK: - Recover Sheet + +private struct RecoverSheet: View { + let isDark: Bool + let bgColor: Color + let textColor: Color + let mutedColor: Color + let primaryBlue: Color + let onBackToSignIn: () -> Void + + var body: some View { + ZStack { + bgColor.ignoresSafeArea() + + VStack(alignment: .leading, spacing: 0) { + Spacer() + + Button(action: onBackToSignIn) { + HStack(spacing: 6) { + Image(systemName: "chevron.left") + .font(.system(size: 13, weight: .semibold)) + Text("Back to sign in") + .font(.system(size: 14, weight: .semibold)) + } + .foregroundColor(primaryBlue) + } + .frame(maxWidth: .infinity) + .padding(.bottom, 32) + } + } + } +} diff --git a/quickstarts/ios/Sources/TokenDebugView.swift b/quickstarts/ios/Sources/TokenDebugView.swift new file mode 100644 index 0000000..1ea235f --- /dev/null +++ b/quickstarts/ios/Sources/TokenDebugView.swift @@ -0,0 +1,279 @@ +// Copyright 2026 The ThunderID Authors +// SPDX-License-Identifier: Apache-2.0 + +import SwiftUI +import ThunderIDSwiftUI + +// MARK: - Token Parts + +private struct TokenParts { + let header: String + let payload: String + let signature: String +} + +// MARK: - Token Screen + +struct TokenScreen: View { + @EnvironmentObject private var state: ThunderIDState + let isDark: Bool + let bgColor: Color + let textColor: Color + let mutedColor: Color + let borderColor: Color + let cardColor: Color + let primaryBlue: Color + let successGreen: Color + let errorRed: Color + let onBack: () -> Void + + @State private var accessToken: String = "" + @State private var isLoadingToken = true + @State private var tokenError: String? + @State private var copiedToken = false + + private var tokenParts: TokenParts? { + guard !accessToken.isEmpty else { return nil } + let parts = accessToken.split(separator: ".").map(String.init) + guard parts.count == 3 else { return nil } + return TokenParts(header: parts[0], payload: parts[1], signature: parts[2]) + } + + private var decodedPayload: [String: Any] { + decodeJwtPayload(accessToken) + } + + private var prettyPayload: String { + guard !decodedPayload.isEmpty else { return "{}" } + let options: JSONSerialization.WritingOptions = [.prettyPrinted, .sortedKeys] + if let data = try? JSONSerialization.data(withJSONObject: decodedPayload, options: options), + let str = String(data: data, encoding: .utf8) { + return str + } + return "{}" + } + + private var expiryInfo: (label: String, isExpired: Bool)? { + guard let exp = decodedPayload["exp"] as? Double else { return nil } + let expDate = Date(timeIntervalSince1970: exp) + let now = Date() + if expDate < now { return ("Expired", true) } + let minutes = Int(expDate.timeIntervalSince(now) / 60) + return ("\(minutes) min", false) + } + + private var issuer: String { + (decodedPayload["iss"] as? String) ?? "β€”" + } + + private var scopes: String { + if let scopeValue = decodedPayload["scope"] as? String { return scopeValue } + if let scopeList = decodedPayload["scp"] as? [String] { return scopeList.joined(separator: " ") } + return "β€”" + } + + var body: some View { + ScrollView { + VStack(alignment: .leading, spacing: 0) { + // Back nav + Button(action: onBack) { + HStack(spacing: 4) { + Image(systemName: "chevron.left") + .font(.system(size: 14, weight: .semibold)) + Text("Home") + .font(.system(size: 16)) + } + .foregroundColor(primaryBlue) + } + .padding(.horizontal, 20) + .padding(.top, 20) + + Text("Token Debug") + .font(.system(size: 26, weight: .bold)) + .foregroundColor(textColor) + .padding(.horizontal, 24) + .padding(.top, 8) + + if isLoadingToken { + HStack { + Spacer() + ProgressView() + .tint(primaryBlue) + Spacer() + } + .padding(.top, 48) + } else if let error = tokenError { + Text("Error: \(error)") + .font(.system(size: 14)) + .foregroundColor(errorRed) + .padding(.horizontal, 24) + .padding(.top, 20) + } else { + tokenCard + .padding(.horizontal, 20) + .padding(.top, 20) + + payloadCard + .padding(.horizontal, 20) + .padding(.top, 16) + + metaCard + .padding(.horizontal, 20) + .padding(.top, 16) + .padding(.bottom, 40) + } + } + } + .background(bgColor) + .task { + await loadToken() + } + } + + private func loadToken() async { + isLoadingToken = true + tokenError = nil + do { + accessToken = try await state.client.getAccessToken() + } catch { + tokenError = error.localizedDescription + } + isLoadingToken = false + } + + private var tokenCard: some View { + VStack(alignment: .leading, spacing: 12) { + HStack { + Text("Access token") + .font(.system(size: 13, weight: .semibold)) + .foregroundColor(textColor) + Spacer() + Button(action: copyToken) { + HStack(spacing: 4) { + Image(systemName: copiedToken ? "checkmark" : "doc.on.doc") + .font(.system(size: 12)) + Text(copiedToken ? "Copied" : "Copy") + .font(.system(size: 12, weight: .medium)) + } + .foregroundColor(copiedToken ? successGreen : primaryBlue) + } + } + + if let parts = tokenParts { + ScrollView(.horizontal, showsIndicators: false) { + HStack(spacing: 0) { + Text(parts.header) + .foregroundColor(Color(hex: "ff7b72")) + Text(".") + .foregroundColor(Color.white.opacity(0.4)) + Text(parts.payload) + .foregroundColor(Color(hex: "79c0ff")) + Text(".") + .foregroundColor(Color.white.opacity(0.4)) + Text(parts.signature) + .foregroundColor(Color(hex: "3fb950")) + } + .font(.system(size: 11, design: .monospaced)) + .padding(12) + } + .background(Color(hex: "0b1120")) + .clipShape(RoundedRectangle(cornerRadius: 8)) + } + } + .padding(16) + .background(cardColor) + .clipShape(RoundedRectangle(cornerRadius: 14)) + .overlay(RoundedRectangle(cornerRadius: 14).stroke(borderColor, lineWidth: 1)) + } + + private func copyToken() { + #if canImport(UIKit) + UIPasteboard.general.string = accessToken + #endif + copiedToken = true + DispatchQueue.main.asyncAfter(deadline: .now() + 2) { + copiedToken = false + } + } + + private var payloadCard: some View { + VStack(alignment: .leading, spacing: 12) { + HStack { + Text("JWT Payload") + .font(.system(size: 13, weight: .semibold)) + .foregroundColor(textColor) + Spacer() + if let expiry = expiryInfo { + Text(expiry.label) + .font(.system(size: 11, weight: .semibold)) + .foregroundColor(expiry.isExpired ? errorRed : successGreen) + .padding(.horizontal, 9) + .padding(.vertical, 4) + .background((expiry.isExpired ? errorRed : successGreen).opacity(0.12)) + .clipShape(Capsule()) + } + } + + ScrollView(.horizontal, showsIndicators: false) { + Text(prettyPayload) + .font(.system(size: 11, design: .monospaced)) + .foregroundColor(isDark ? Color(hex: "E0EAFF") : Color(hex: "05213F")) + .padding(12) + .frame(minWidth: 0, alignment: .leading) + } + .background(isDark ? Color(hex: "0b1120") : Color(hex: "DDE3EC").opacity(0.5)) + .clipShape(RoundedRectangle(cornerRadius: 8)) + } + .padding(16) + .background(cardColor) + .clipShape(RoundedRectangle(cornerRadius: 14)) + .overlay(RoundedRectangle(cornerRadius: 14).stroke(borderColor, lineWidth: 1)) + } + + private var metaCard: some View { + VStack(spacing: 0) { + metaRow(label: "Issuer", value: issuer) + Divider() + .background(borderColor) + .padding(.leading, 16) + metaRow(label: "Scopes", value: scopes) + } + .background(cardColor) + .clipShape(RoundedRectangle(cornerRadius: 14)) + .overlay(RoundedRectangle(cornerRadius: 14).stroke(borderColor, lineWidth: 1)) + } + + private func metaRow(label: String, value: String) -> some View { + HStack(alignment: .top, spacing: 12) { + Text(label) + .font(.system(size: 13)) + .foregroundColor(mutedColor) + .frame(width: 60, alignment: .leading) + Text(value) + .font(.system(size: 13, design: .monospaced)) + .foregroundColor(textColor) + .lineLimit(3) + .multilineTextAlignment(.leading) + Spacer() + } + .padding(.horizontal, 16) + .padding(.vertical, 14) + } +} + +// MARK: - JWT Decode Helper + +private func decodeJwtPayload(_ token: String) -> [String: Any] { + let parts = token.split(separator: ".").map(String.init) + guard parts.count == 3 else { return [:] } + var base64 = parts[1] + .replacingOccurrences(of: "-", with: "+") + .replacingOccurrences(of: "_", with: "/") + while base64.count % 4 != 0 { base64 += "=" } + guard let data = Data(base64Encoded: base64), + let obj = try? JSONSerialization.jsonObject(with: data), + let dict = obj as? [String: Any] else { + return [:] + } + return dict +} diff --git a/quickstarts/ios/thunderid-config/thunderid-config.yaml b/quickstarts/ios/thunderid-config/thunderid-config.yaml new file mode 100644 index 0000000..94fc982 --- /dev/null +++ b/quickstarts/ios/thunderid-config/thunderid-config.yaml @@ -0,0 +1,34 @@ +--- +resource_type: application +# Application used exclusively by the iOS Quickstart E2E suite. It has no OAuth profile: the +# mobile SDKs authenticate app-natively via the Flow Execution API, so the sample app needs only +# the base URL and this application ID. +# +# The ID is fixed so the sample's Config.plist and the Maestro flows can be committed against a +# known value instead of discovering it at run time. +id: 019e5b10-1001-7a2b-9c3d-4e5f60718293 +ouHandle: default +name: Mobile Quickstart E2E App +description: Application for the ThunderID mobile SDK quickstart E2E suites +type: mobile +# A mobile application must normally prove its binary identity via platform attestation before it +# may initiate a flow directly, otherwise /flow/execute fails with FES-1016. Apple App Attest is +# unavailable in the iOS Simulator and Play Integrity requires real Play Services, so neither can +# be satisfied on the emulated devices this suite drives. devMode skips that check. +# +# Test-only. Never enable this on a real tenant: it removes the guarantee that the client +# initiating a flow is the genuine, unmodified app. +# +# NOTE: POST /import currently drops this block silently (it reports success, then stores +# attestation: null), so run-e2e.sh re-applies it over PUT /applications/{id}. Once the +# import path preserves it, that extra step can go. +attestation: + devMode: true +authFlowHandle: default-flow +# The suite registers a fresh user through the UI rather than relying on a seeded account, so +# self-service registration has to be enabled for this application. +registrationFlowHandle: default-flow +isRegistrationFlowEnabled: true +signOutFlowHandle: default-flow +allowedUserTypes: + - Person diff --git a/quickstarts/nextjs/.env.example b/quickstarts/nextjs/.env.example new file mode 100644 index 0000000..66cdadd --- /dev/null +++ b/quickstarts/nextjs/.env.example @@ -0,0 +1,20 @@ +# Base URL of your ThunderID deployment. ex: https://localhost:8090 +NEXT_PUBLIC_THUNDERID_BASE_URL=https://localhost:8090 + +# Flow Secret for this app. Sent in the `Flow-Secret` header to authenticate this app when the +# native (embedded) flow starts. Shown once when the application is created; if lost, regenerate it +# from the app's Credentials tab (under Edit). Server-only, never expose to the browser. +THUNDERID_FLOW_SECRET=your-flow-secret-here + +# Secret used to encrypt this app's session cookie. Generate locally, not from the console. +THUNDERID_SECRET=generate-with-openssl-rand-base64-32 + +# Application ID (spId) for this app. ThunderID Console -> your application -> Overview. +NEXT_PUBLIC_THUNDERID_APPLICATION_ID=your-application-id-here +# Local app route that renders the sign-in page. Not from the console. +NEXT_PUBLIC_THUNDERID_SIGN_IN_URL=/signin +# Local app route that renders the sign-up page. Not from the console. +NEXT_PUBLIC_THUNDERID_SIGN_UP_URL=/signup + +# DANGER: Disables ALL TLS verification. Only for local development with self-signed certs. NEVER use in production. +NODE_TLS_REJECT_UNAUTHORIZED=0 diff --git a/quickstarts/nextjs/.gitignore b/quickstarts/nextjs/.gitignore new file mode 100644 index 0000000..304f800 --- /dev/null +++ b/quickstarts/nextjs/.gitignore @@ -0,0 +1,3 @@ +node_modules +.next +.env diff --git a/quickstarts/nextjs/.stackblitzrc b/quickstarts/nextjs/.stackblitzrc new file mode 100644 index 0000000..5f0a200 --- /dev/null +++ b/quickstarts/nextjs/.stackblitzrc @@ -0,0 +1,4 @@ +{ + "installDependencies": false, + "startCommand": "npm run prepare-dev && npm install && npm run dev" +} diff --git a/quickstarts/nextjs/README.md b/quickstarts/nextjs/README.md new file mode 100644 index 0000000..afffece --- /dev/null +++ b/quickstarts/nextjs/README.md @@ -0,0 +1,117 @@ +# ThunderID Next.js Quickstart + +Open in StackBlitz + +A minimal Next.js 15 App Router application demonstrating ThunderID authentication with OAuth 2.0, PKCE, and JWT out of the box. + +## Prerequisites + +- Node.js 18+ +- pnpm +- A ThunderID application + +## Getting started + +1. Copy the example environment file: + + ```bash + cp .env.example .env + ``` + +2. Fill in your ThunderID credentials in `.env`. By default the file is set up for the native flow: + + ```dotenv + NEXT_PUBLIC_THUNDERID_BASE_URL=https://localhost:8090 + NEXT_PUBLIC_THUNDERID_APPLICATION_ID= + THUNDERID_FLOW_SECRET= + NEXT_PUBLIC_THUNDERID_SIGN_IN_URL=/signin + NEXT_PUBLIC_THUNDERID_SIGN_UP_URL=/signup + THUNDERID_SECRET= + ``` + + The Flow Secret is generated by the server when the application is created, shown once, and only + retrievable afterward from the app's Credentials tab (under Edit). It's a separate credential from + the OAuth2 Client Secret used by the redirect-based flow below β€” an embedded app (no OAuth2 + configuration) has a Flow Secret and no client secret; a redirect-based `authorization_code` app has + a client secret and no Flow Secret. + +3. Start the development server: + + ```bash + pnpm dev + ``` + + The app is now running at [http://localhost:3000](http://localhost:3000). + +

    +

    Redirect-based flow

    + +By default this quickstart uses the native (embedded) flow, where sign-in/sign-up render inline on this +app's own `/signin` and `/signup` routes with no redirect to ThunderID's hosted pages. + +To send the user to ThunderID's hosted sign-in page instead, switch to the redirect-based flow: + +1. Register a redirect URI for your application (see the app's config notice in the console for the + exact value to use). +2. Regenerate `.env` for the redirect flow: + + ```bash + npm run prepare-dev:redirect + ``` + + This comments out the native-flow vars (`NEXT_PUBLIC_THUNDERID_APPLICATION_ID`, + `NEXT_PUBLIC_THUNDERID_SIGN_IN_URL`, `NEXT_PUBLIC_THUNDERID_SIGN_UP_URL`, `THUNDERID_FLOW_SECRET`) and + adds: + + ```dotenv + NEXT_PUBLIC_THUNDERID_CLIENT_ID= + THUNDERID_CLIENT_SECRET= + ``` + + Both values come from the application's Credentials tab in the console. To switch back to the native + flow, run `node scripts/prepare-dev.cjs --flow=native` (or manually re-enable the native-flow vars and + comment out the two above). +3. Fill in `NEXT_PUBLIC_THUNDERID_CLIENT_ID` and `THUNDERID_CLIENT_SECRET` in `.env`, then restart the dev + server. + +
    + +## Back-channel logout + +ThunderID can end this app's session itself. When the user's ThunderID session ends somewhere else, +for example by signing out of another application, ThunderID posts a logout token to this app. The +route is one line in `app/api/auth/backchannel-logout/route.ts`: + +```ts +export const {POST} = backchannelLogout() +``` + +The session lives in a cookie that only the browser can delete, so the SDK records the logout and +treats every later request with that session as signed out. + +To try it, use the redirect-based flow above, since the logout token is addressed to the client ID: + +1. In the ThunderID Console, open this application, go to **Advanced Settings β†’ OAuth2 + Configuration**, and set **Back-Channel Logout URI** to + `http://localhost:3000/api/auth/backchannel-logout`. +2. ThunderID refuses localhost and private network addresses by default. For local testing only, + turn that off in the server's `deployment.yaml` and restart it: + ```yaml + oauth: + logout: + backchannel: + reject_private_addresses: false + ``` +3. Sign in at [http://localhost:3000](http://localhost:3000), then sign in to a second application + in the same browser, so both share one ThunderID session. +4. Sign out of the second application, then reload this app: you are signed out here too. + +Things to know before production: + +- The SDK records ended sessions in memory by default. If you run more than one instance, pass a + shared `store` to both `backchannelLogout()` and `thunderIDProxy()`, since ThunderID's request + reaches only one instance. +- Route protection in `thunderIDProxy()` sees the in-memory record only when the proxy runs on the + Node.js runtime. On Next.js 15, add `runtime: 'nodejs'` to the `config` export of your + `middleware.ts`. On the Edge runtime, use a shared `store`. +- An access token already handed to the browser or to another API stays valid until it expires. diff --git a/quickstarts/nextjs/app/account/page.tsx b/quickstarts/nextjs/app/account/page.tsx new file mode 100644 index 0000000..d0e17a4 --- /dev/null +++ b/quickstarts/nextjs/app/account/page.tsx @@ -0,0 +1,212 @@ +'use client' +import { ChangeCredential, SignedIn, SignedOut, User, UserProfile } from '@thunderid/nextjs' +import Link from 'next/link' +import { useRouter, useSearchParams } from 'next/navigation' +import { useState } from 'react' +import Nav from '../components/Nav' + +function HomeIcon() { + return ( + + ) +} + +function PersonIcon() { + return ( + + ) +} + +function ShieldIcon() { + return ( + + ) +} + +const TABS = [ + { id: 'home', label: 'Home', icon: HomeIcon }, + { id: 'personal', label: 'Personal info', icon: PersonIcon }, + { id: 'security', label: 'Security', icon: ShieldIcon }, +] + +const CREDENTIALS = [ + { attribute: 'password', title: 'Password', description: 'Used to sign in to your account.', cta: 'Change password' }, +] + +function ChevronIcon() { + return ( + + + + ) +} + +function CredentialCard({ attribute, title, description, cta }: { attribute: string; title: string; description: string; cta: string }) { + const [open, setOpen] = useState(false) + const close = () => setOpen(false) + + return ( +
    +
    +
    +
    {title}
    +
    {description}
    +
    + +
    + {open && ( +
    + +
    + )} +
    + ) +} + +const TILES = [ + { + id: 'personal', + icon: PersonIcon, + tone: 'blue', + title: 'Personal info', + description: 'Name, email, phone, and profile photo', + }, + { + id: 'security', + icon: ShieldIcon, + tone: 'green', + title: 'Security', + description: 'Password and other credentials', + }, +] + +// Google Account-style layout: a persistent left nav switching between tabs of +// content on the right, rather than a single scrolling page or a modal. +function AccountTabs() { + const router = useRouter() + const searchParams = useSearchParams() + const requestedTab = searchParams.get('tab') + const [tab, setTab] = useState(TABS.some((t) => t.id === requestedTab) ? requestedTab! : 'home') + + const selectTab = (id: string) => { + setTab(id) + router.replace(id === 'home' ? '/account' : `/account?tab=${id}`) + } + + return ( +
    + + +
    +
    + {tab === 'home' && ( + + {(user: { givenName?: string; given_name?: string; displayName?: string; username?: string } | null) => { + const givenName = user?.givenName ?? user?.given_name ?? user?.displayName ?? user?.username ?? 'there' + + return ( + <> +

    Hi, {givenName}

    +

    + Manage your info and security across ThunderID apps. +

    +
    + {TILES.map(({ id, icon: Icon, tone, title, description }) => ( + + ))} +
    + + ) + }} +
    + )} + + {tab === 'personal' && ( + <> +

    Personal info

    +

    Manage the basic profile info others may see.

    + + + )} + + {tab === 'security' && ( + <> +

    Security

    +

    Manage your password and other credentials.

    +
    + {CREDENTIALS.map((credential) => ( + + ))} +
    + + )} +
    +
    +
    + ) +} + +export default function AccountPage() { + return ( +
    +
    + ) +} diff --git a/quickstarts/nextjs/app/actions.ts b/quickstarts/nextjs/app/actions.ts new file mode 100644 index 0000000..6a72ed3 --- /dev/null +++ b/quickstarts/nextjs/app/actions.ts @@ -0,0 +1,19 @@ +'use server' + +import { thunderid } from '@thunderid/nextjs/server' + +/** + * Fetch the raw access token JWT for the current session. + * Tokens are kept server-side β€” this Server Action is the only way a + * client component can retrieve them without exposing the session cookie. + */ +export async function fetchAccessToken(): Promise { + try { + const sdk = await thunderid() + const sessionId = await sdk.getSessionId() + if (!sessionId) return undefined + return await sdk.getAccessToken(sessionId) + } catch { + return undefined + } +} diff --git a/quickstarts/nextjs/app/api/auth/backchannel-logout/route.ts b/quickstarts/nextjs/app/api/auth/backchannel-logout/route.ts new file mode 100644 index 0000000..c09cc0d --- /dev/null +++ b/quickstarts/nextjs/app/api/auth/backchannel-logout/route.ts @@ -0,0 +1,7 @@ +import {backchannelLogout} from '@thunderid/nextjs/server' + +// ThunderID posts a logout token here when the user's session ends somewhere else, such as a +// sign-out from another application. The SDK records the logout, and from then on this app treats +// the matching session cookie as signed out. Register this path as the application's +// Back-Channel Logout URI to use it (see the README). +export const {POST} = backchannelLogout() diff --git a/quickstarts/nextjs/app/components/ConfigNotice.tsx b/quickstarts/nextjs/app/components/ConfigNotice.tsx new file mode 100644 index 0000000..4d581cb --- /dev/null +++ b/quickstarts/nextjs/app/components/ConfigNotice.tsx @@ -0,0 +1,121 @@ +'use client' +import { useState } from 'react' +import ThunderMark from './ThunderMark' +import NextLogo from './icons/NextLogo' + +function MoonIcon() { + return ( + + + + ) +} + +function SunIcon() { + return ( + + + + + + + + ) +} + +export default function ConfigNotice({ missing, isRedirectFlow }: { missing: string[]; isRedirectFlow: boolean }) { + const [dark, setDark] = useState(false) + + const toggle = () => { + const next = !dark + setDark(next) + document.documentElement.classList.toggle('dark', next) + } + + return ( +
    + + +
    +
    +
    + +
    + +
    + + Setup required + +
    + +

    Configuration needed

    + +

    + This quickstart can't reach ThunderID yet. Follow the steps + below, then restart the dev server. +

    + +
    +
    Step 1 · Set environment variables
    + +
      + {missing.map((key) => ( +
    • {key}
    • + ))} +
    + +

    + Copy .env.example to .env, fill in the + values from your ThunderID application, then run npm run dev again. +

    +
    + + {isRedirectFlow && ( +
    +
    Step 2 · Register redirect URIs
    + +
    +

    + Sign-in and sign-out are handled by this app's server, so + no CORS configuration is needed. In the{' '} + ThunderID Console, open this application and go + to Advanced Settings → OAuth2 Configuration, + then add the exact URIs below. +

    + +
    +
    +
    Authorized redirect URI
    + http://localhost:3000 +
    +
    +
    Post-Logout Redirect URI
    + http://localhost:3000 +
    +
    +
    +
    + )} + +

    + Need more info? Take a look at the{' '} + + Next.js quickstart guide. + +

    +
    +
    +
    + ) +} diff --git a/quickstarts/nextjs/app/components/HeroCtas.tsx b/quickstarts/nextjs/app/components/HeroCtas.tsx new file mode 100644 index 0000000..ea8e91b --- /dev/null +++ b/quickstarts/nextjs/app/components/HeroCtas.tsx @@ -0,0 +1,16 @@ +'use client' +import { SignInButton } from '@thunderid/nextjs' + +export default function HeroCtas() { + return ( +
    + + {({ signIn, isLoading }) => ( + + )} + +
    + ) +} diff --git a/quickstarts/nextjs/app/components/Nav.tsx b/quickstarts/nextjs/app/components/Nav.tsx new file mode 100644 index 0000000..e660f18 --- /dev/null +++ b/quickstarts/nextjs/app/components/Nav.tsx @@ -0,0 +1,102 @@ +'use client' +import { SignedIn, SignedOut, SignInButton, UserDropdown } from '@thunderid/nextjs' +import Link from 'next/link' +import { usePathname, useRouter } from 'next/navigation' +import { useState } from 'react' +import NextLogo from './icons/NextLogo' + +function MoonIcon() { + return ( + + + + ) +} + +function SunIcon() { + return ( + + + + + + + + ) +} + +function ChevronLeftIcon() { + return ( + + ) +} + +function KeyIcon() { + return ( + + ) +} + +export default function Nav() { + const [dark, setDark] = useState(false) + const pathname = usePathname() + const router = useRouter() + const isHome = pathname === '/' + + const toggle = () => { + const next = !dark + setDark(next) + document.documentElement.classList.toggle('dark', next) + } + + const menuItems = [ + { + label: Token debug, + href: '/token', + }, + ] + + return ( + + ) +} diff --git a/quickstarts/nextjs/app/components/ThunderMark.tsx b/quickstarts/nextjs/app/components/ThunderMark.tsx new file mode 100644 index 0000000..d8cf0ab --- /dev/null +++ b/quickstarts/nextjs/app/components/ThunderMark.tsx @@ -0,0 +1,36 @@ +export default function ThunderMark({ + height = 40, + className, + darkMode = false, +}: { + height?: number + className?: string + darkMode?: boolean +}) { + const width = Math.round((height / 257) * 207) + + return ( + + + + + + ) +} diff --git a/quickstarts/nextjs/app/components/icons/NextLogo.tsx b/quickstarts/nextjs/app/components/icons/NextLogo.tsx new file mode 100644 index 0000000..b78a766 --- /dev/null +++ b/quickstarts/nextjs/app/components/icons/NextLogo.tsx @@ -0,0 +1,17 @@ +export default function NextLogo({ size = 16, fill = 'currentColor' }: { size?: number; fill?: string }) { + return ( + + ) +} diff --git a/quickstarts/nextjs/app/globals.css b/quickstarts/nextjs/app/globals.css new file mode 100644 index 0000000..6972b47 --- /dev/null +++ b/quickstarts/nextjs/app/globals.css @@ -0,0 +1,1521 @@ +/* ── Reset ── */ +*, +::before, +::after { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +/* ── Design tokens ── */ +:root { + --color-bg: #f7f9fc; + --color-card: #ffffff; + --color-border: #dde3ec; + --color-text: #05213f; + --color-text-muted: #5a7085; + --color-muted: #5a7085; + --color-primary: #3688ff; + --color-primary-hover: #1f72f0; + --color-nav-bg: rgba(247, 249, 252, 0.92); + --color-nav-border: #dde3ec; + --shadow-card: 0 1px 3px 0 rgba(5, 33, 63, 0.06), + 0 4px 12px 0 rgba(5, 33, 63, 0.08); + --font-sans: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', + sans-serif; + --radius-card: 12px; + --radius-btn: 8px; +} + +/* ── Dark mode ── */ +.dark, +html.dark { + --color-bg: #080f1c; + --color-card: #0f1a2d; + --color-border: rgba(255, 255, 255, 0.09); + --color-text: #E0EAFF; + --color-text-muted: rgba(224, 234, 255, 0.48); + --color-muted: rgba(224, 234, 255, 0.48); + --color-nav-bg: rgba(8, 15, 28, 0.92); + + /* ThunderID Design Tokens for Dark Mode */ + --thunderid-color-background-surface: #0f1a2d; + --thunderid-color-background-body: #080f1c; + --thunderid-color-background-disabled: rgba(255, 255, 255, 0.06); + --thunderid-color-background-muted: rgba(255, 255, 255, 0.05); + --thunderid-color-text-primary: #E0EAFF; + --thunderid-color-text-secondary: rgba(224, 234, 255, 0.65); + --thunderid-color-border: rgba(255, 255, 255, 0.09); + --thunderid-color-border-focus: var(--color-primary); + --thunderid-input-borderColor: rgba(255, 255, 255, 0.16); + --thunderid-input-focusBorderColor: var(--color-primary); + --thunderid-input-focusRing: 0 0 0 3px rgba(54, 136, 255, 0.25); + --thunderid-card-borderColor: rgba(255, 255, 255, 0.09); + --thunderid-card-shadow: 0 4px 20px rgba(0, 0, 0, 0.4); + --thunderid-color-action-hover: rgba(255, 255, 255, 0.06); +} + +/* ── Base ── */ +html, +body { + height: 100%; +} + +body { + font-family: var(--font-sans); + background: var(--color-bg); + color: var(--color-text); + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + line-height: 1.5; +} + +/* ── App shell ── */ +.app { + min-height: 100vh; + display: flex; + flex-direction: column; + background: var(--color-bg); + color: var(--color-text); + transition: background 0.2s, color 0.2s; +} + +/* ── Navigation ── */ +.nav { + position: fixed; + inset-block-start: 0; + inset-inline: 0; + height: 52px; + display: flex; + align-items: center; + justify-content: space-between; + padding: 0 28px; + background: var(--color-nav-bg); + backdrop-filter: blur(12px); + -webkit-backdrop-filter: blur(12px); + border-bottom: 1px solid var(--color-nav-border); + z-index: 100; + transition: background 0.2s, border-color 0.2s; +} + +.nav-brand { + display: flex; + align-items: center; + gap: 10px; + text-decoration: none; + color: var(--color-text); +} + +.nav-logo { + display: flex; + align-items: center; + gap: 10px; + text-decoration: none; + color: var(--color-text); +} + +.nav-wordmark { + font-size: 15px; + font-weight: 700; + letter-spacing: -0.02em; + color: var(--color-text); +} + +.wordmark { + display: flex; + flex-direction: column; + gap: 1px; +} + +.wordmark-name { + font-size: 14px; + font-weight: 700; + letter-spacing: -0.03em; + color: var(--color-text); + line-height: 1; +} + +.wordmark-sub { + font-size: 8.5px; + font-weight: 700; + letter-spacing: 0.1em; + text-transform: uppercase; + color: var(--color-primary); + line-height: 1; +} + +.nav-actions { + display: flex; + align-items: center; + gap: 8px; +} + +.dark-toggle { + display: inline-flex; + align-items: center; + justify-content: center; + width: 34px; + height: 34px; + padding: 0; + background: transparent; + border: 1px solid var(--color-border); + border-radius: var(--radius-btn); + color: var(--color-text-muted); + cursor: pointer; + transition: color 0.15s, background 0.15s, border-color 0.15s; + flex-shrink: 0; +} + +.dark-toggle:hover { + color: var(--color-text); + background: var(--color-border); +} + +/* ── Buttons ── */ +button { + font-family: var(--font-sans); + cursor: pointer; + border: none; + border-radius: var(--radius-btn); + font-weight: 600; + transition: background 0.15s, color 0.15s, border-color 0.15s, opacity 0.15s; + line-height: 1; + white-space: nowrap; +} + +button:focus-visible { + outline: 2px solid var(--color-primary); + outline-offset: 2px; +} + +.btn-primary, +.btn-outline, +.btn-ghost { + display: inline-flex; + align-items: center; + justify-content: center; + height: 46px; + padding: 0 24px; + font-size: 15px; + text-decoration: none; +} + +.btn-primary { + background: var(--color-primary); + color: #ffffff; + border: 1.5px solid var(--color-primary); +} + +.btn-primary:hover { + opacity: 0.88; +} + +.btn-outline { + background: transparent; + color: var(--color-primary); + border: 1.5px solid rgba(54, 136, 255, 0.4); +} + +.btn-outline:hover { + background: rgba(54, 136, 255, 0.08); +} + +.btn-ghost { + background: transparent; + color: var(--color-muted); + border: none; +} + +.btn-ghost:hover { + color: var(--color-text); + background: rgba(0, 0, 0, 0.04); +} + +/* Nav-sized buttons */ +.nav .btn-primary, +.nav .btn-outline, +.nav .btn-ghost { + height: 36px; + padding: 0 16px; + font-size: 14px; +} + +/* ── Hero section ── */ +.hero { + flex: 1; + padding: 96px 32px 80px; + min-height: 100vh; +} + +.hero-inner { + display: flex; + flex-direction: column; + align-items: center; + text-align: center; + gap: 0; + max-width: 560px; + width: 100%; + margin: 0 auto; +} + +.hero-mark { + display: flex; + justify-content: center; + margin-bottom: 32px; +} + +.hero-badge { + display: inline-flex; + align-items: center; + gap: 8px; + font-size: 11px; + font-weight: 700; + letter-spacing: 0.1em; + text-transform: uppercase; + color: var(--color-text-muted); + margin-bottom: 28px; +} + +.hero-badge-line { + display: block; + width: 24px; + height: 1px; + background: var(--color-border); + flex-shrink: 0; +} + +.hero-title { + font-size: 42px; + font-weight: 700; + letter-spacing: -0.05em; + color: var(--color-text); + line-height: 1.1; + margin: 0 0 18px; +} + +.hero-subtitle { + font-size: 16px; + color: var(--color-text-muted); + max-width: 420px; + line-height: 1.8; + letter-spacing: -0.01em; + margin: 0 auto 36px; +} + +.hero-ctas { + display: flex; + gap: 12px; + flex-wrap: wrap; + justify-content: center; + margin-bottom: 52px; +} + +.hero-divider { + width: 100%; + border: none; + border-top: 1px solid var(--color-border); + margin: 4px 0; +} + +/* ── Stats row ── */ +.hero-stats { + display: grid; + grid-template-columns: repeat(3, 1fr); + width: 100%; +} + +.hero-stat { + display: flex; + flex-direction: column; + align-items: center; + gap: 4px; + padding: 16px 8px; + position: relative; +} + +.hero-stat + .hero-stat::before { + content: ''; + position: absolute; + left: 0; + top: 20%; + height: 60%; + width: 1px; + background: var(--color-border); +} + +.hero-stat-value { + font-size: 15px; + font-weight: 700; + color: var(--color-text); + letter-spacing: -0.02em; +} + +.hero-stat-label { + font-size: 12px; + color: var(--color-text-muted); +} + +/* ── Config notice ── */ +.config-badge { + color: #e88b3a; +} + +.config-list { + width: 100%; + max-width: 420px; + text-align: left; + list-style: none; + background: var(--color-card); + border: 1px solid var(--color-border); + border-radius: var(--radius-btn); + padding: 0 16px; + margin: 4px 0 28px; +} + +.config-list-item { + padding: 10px 0; + font-family: ui-monospace, SFMono-Regular, Menlo, monospace; + font-size: 13px; + color: var(--color-text); +} + +.config-list-item:not(:last-child) { + border-bottom: 1px solid var(--color-border); +} + +.config-hint { + font-size: 14px; + color: var(--color-text-muted); + line-height: 1.7; + max-width: 420px; + margin: 0 auto; +} + +.config-hint code { + background: rgba(54, 136, 255, 0.1); + border-radius: 4px; + padding: 2px 6px; + font-family: ui-monospace, SFMono-Regular, Menlo, monospace; + font-size: 13px; +} + +.config-step { + width: 100%; + max-width: 420px; + margin: 0 auto 28px; +} + +.config-step-label { + font-size: 11px; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.09em; + color: var(--color-text-muted); + margin-bottom: 10px; + text-align: left; +} + +.config-step .config-list, +.config-step .config-hint { + margin-left: 0; + margin-right: 0; +} + +.config-box { + text-align: left; + background: var(--color-card); + border: 1px solid var(--color-border); + border-radius: var(--radius-card); + padding: 16px; +} + +.config-box-body { + font-size: 13px; + color: var(--color-text-muted); + line-height: 1.6; + margin-bottom: 14px; +} + +.config-value-group { + display: flex; + flex-direction: column; + gap: 12px; +} + +.config-value-label { + font-size: 11px; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.06em; + color: var(--color-text-muted); + margin-bottom: 4px; +} + +.config-value { + display: block; + overflow-x: auto; + white-space: nowrap; + font-family: ui-monospace, SFMono-Regular, Menlo, monospace; + font-size: 12px; + color: var(--color-text); + background: rgba(54, 136, 255, 0.1); + border-radius: 4px; + padding: 8px 10px; +} + +.config-docs-note { + font-size: 13px; + color: var(--color-text-muted); + max-width: 420px; + margin: 0 auto; +} + +.config-docs-note a { + color: var(--color-primary); + font-weight: 600; +} + +/* ── User / welcome card ── */ +.user-card { + display: flex; + flex-direction: column; + align-items: center; + gap: 16px; + background: var(--color-card); + border: 1px solid var(--color-border); + border-radius: var(--radius-card); + padding: 32px; + max-width: 480px; + width: 100%; + box-shadow: var(--shadow-card); +} + +.user-avatar { + width: 48px; + height: 48px; + border-radius: 50%; + background: var(--color-primary); + color: #ffffff; + display: flex; + align-items: center; + justify-content: center; + font-size: 17px; + font-weight: 700; + letter-spacing: 0.02em; + flex-shrink: 0; +} + +.user-welcome { + font-size: 1.375rem; + font-weight: 700; + letter-spacing: -0.02em; + color: var(--color-text); + text-align: center; +} + +.user-details { + display: flex; + flex-direction: column; + gap: 0; + width: 100%; + border: 1px solid var(--color-border); + border-radius: 8px; + overflow: hidden; +} + +.user-detail-row { + display: flex; + justify-content: space-between; + align-items: center; + padding: 10px 16px; + gap: 16px; +} + +.user-detail-row + .user-detail-row { + border-top: 1px solid var(--color-border); +} + +.user-detail-row dt { + font-size: 13px; + color: var(--color-text-muted); + font-weight: 500; + flex-shrink: 0; +} + +.user-detail-row dd { + font-size: 13px; + color: var(--color-text); + font-weight: 500; + text-align: right; + word-break: break-all; +} + +/* ── Signed-in home shell ── */ +.home-shell { + min-height: calc(100vh - 52px); + margin-top: 52px; +} + +/* ── Signed-in home page ── */ +.home-main { + width: 100%; + max-width: 900px; + margin: 0 auto; + padding: 52px 28px 80px; +} + +/* Greeting */ +.home-greeting { + display: flex; + align-items: flex-start; + gap: 16px; + margin-bottom: 36px; +} + +.home-avatar { + flex-shrink: 0; +} + +.home-greeting-text { + min-width: 0; +} + +.home-greeting-name { + margin: 0 0 6px; + font-size: 26px; + font-weight: 700; + color: var(--color-text); + letter-spacing: -0.04em; +} + +.home-greeting-meta { + display: flex; + align-items: center; + gap: 8px; + font-size: 13px; + color: var(--color-muted); + letter-spacing: -0.01em; + flex-wrap: wrap; +} + +.home-dot { + display: inline-block; + width: 3px; + height: 3px; + border-radius: 50%; + background: var(--color-border); + flex-shrink: 0; +} + +.home-session-active { + display: inline-flex; + align-items: center; + gap: 5px; + color: #2fbd6b; +} + +.home-session-dot { + display: inline-block; + width: 6px; + height: 6px; + border-radius: 50%; + background: #2fbd6b; + flex-shrink: 0; +} + +/* Session stats row */ +.home-stats { + display: flex; + gap: 0; + padding: 20px 0; + border-top: 1px solid var(--color-border); + border-bottom: 1px solid var(--color-border); + margin-bottom: 52px; +} + +.home-stat { + flex: 1; + display: flex; + align-items: center; + gap: 10px; + min-width: 0; +} + +.home-stat--bordered { + padding-left: 32px; + border-left: 1px solid var(--color-border); +} + +.home-stat-icon { + width: 32px; + height: 32px; + border-radius: 8px; + background: rgba(54, 136, 255, 0.1); + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; + color: #3688ff; +} + +.home-stat-value { + font-size: 14px; + font-weight: 700; + color: var(--color-text); + letter-spacing: -0.02em; +} + +.home-stat-value--mono { + font-family: monospace; + letter-spacing: 0.01em; +} + +.home-stat-label { + font-size: 11px; + font-weight: 600; + color: var(--color-muted); + text-transform: uppercase; + letter-spacing: 0.07em; + margin-top: 2px; +} + +/* What's next */ +.home-next-label { + font-size: 11px; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.09em; + color: var(--color-muted); + margin-bottom: 20px; +} + +.home-next-list { + display: flex; + flex-direction: column; +} + +.home-next-item { + display: grid; + grid-template-columns: 28px 1fr auto; + gap: 16px; + align-items: start; + padding: 20px 0; + border-top: 1px solid var(--color-border); + text-decoration: none; + color: inherit; + cursor: pointer; + transition: background 0.2s; + border-radius: 4px; +} + +.home-next-item:hover .home-next-cta { + opacity: 1; +} + +.home-next-n { + font-size: 11px; + font-weight: 700; + color: #3688ff; + letter-spacing: 0.05em; + padding-top: 2px; + font-variant-numeric: tabular-nums; +} + +.home-next-body { + min-width: 0; +} + +.home-next-title { + font-size: 14px; + font-weight: 600; + color: var(--color-text); + letter-spacing: -0.02em; + margin-bottom: 4px; +} + +.home-next-desc { + font-size: 13px; + color: var(--color-muted); + line-height: 1.6; + letter-spacing: -0.01em; +} + +.home-next-cta { + display: inline-flex; + align-items: center; + gap: 4px; + font-size: 13px; + font-weight: 600; + color: #3688ff; + white-space: nowrap; + opacity: 0.7; + transition: opacity 0.2s; + padding-top: 2px; +} + +/* ── Nav back button ── */ +.nav-back-btn { + display: inline-flex; + align-items: center; + gap: 4px; + height: 32px; + padding: 0 10px; + border-radius: 6px; + border: none; + background: transparent; + color: var(--color-muted); + font-size: 13px; + font-family: var(--font-sans); + letter-spacing: -0.01em; + cursor: pointer; + transition: background 0.2s, color 0.2s; +} + +.nav-back-btn:hover { + background: var(--color-border); + color: var(--color-text); +} + +/* ── Token debug page ── */ +.token-main { + width: 100%; + max-width: 780px; + margin: 0 auto; + margin-top: 52px; + padding: 52px 28px 80px; +} + +.token-header { + display: flex; + align-items: flex-start; + justify-content: space-between; + gap: 16px; + margin-bottom: 36px; + flex-wrap: wrap; +} + +.token-title { + margin: 0 0 5px; + font-size: 22px; + font-weight: 700; + letter-spacing: -0.04em; + color: var(--color-text); +} + +.token-subtitle { + margin: 0; + font-size: 13px; + color: var(--color-muted); + letter-spacing: -0.01em; +} + +/* ── Sign in / Sign up pages ── */ +.auth-main { + width: 100%; + min-height: calc(100vh - 52px); + margin-top: 52px; + display: flex; + align-items: center; + justify-content: center; + padding: 40px 20px; +} + +.auth-card { + display: flex; + flex-direction: column; + align-items: center; + gap: 8px; + background: var(--color-card); + border: 1px solid var(--color-border); + border-radius: var(--radius-card); + box-shadow: var(--shadow-card); + padding: 40px 32px; + max-width: 420px; + width: 100%; +} + +.auth-title { + font-size: 1.5rem; + font-weight: 700; + letter-spacing: -0.02em; + color: var(--color-text); + text-align: center; +} + +.auth-subtitle { + margin: 0 0 16px; + font-size: 13px; + color: var(--color-text-muted); + text-align: center; +} + +.auth-switch { + margin-top: 20px; + font-size: 13px; + color: var(--color-text-muted); + text-align: center; +} + +.auth-switch a { + color: var(--color-primary); + font-weight: 600; + text-decoration: none; +} + +.auth-switch a:hover { + text-decoration: underline; +} + +.token-badge { + display: inline-flex; + align-items: center; + gap: 7px; + padding: 6px 12px; + border-radius: 6px; + font-size: 12px; + font-weight: 700; + letter-spacing: -0.01em; + flex-shrink: 0; +} + +.token-badge--expired { + background: rgba(220, 38, 38, 0.08); + border: 1px solid rgba(220, 38, 38, 0.22); + color: #dc2626; +} + +.token-badge--valid { + background: rgba(47, 189, 107, 0.08); + border: 1px solid rgba(47, 189, 107, 0.22); + color: #2fbd6b; +} + +.token-badge-dot { + display: inline-block; + width: 6px; + height: 6px; + border-radius: 50%; + background: currentColor; + flex-shrink: 0; +} + +/* Raw token section */ +.token-raw-section { + margin-bottom: 20px; +} + +.token-raw-label-row { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 8px; +} + +.token-section-label { + font-size: 11px; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.09em; + color: var(--color-muted); +} + +.token-copy-btn { + display: inline-flex; + align-items: center; + gap: 5px; + padding: 4px 10px; + border-radius: 5px; + background: transparent; + border: 1px solid var(--color-border); + font-size: 11px; + font-weight: 600; + color: var(--color-muted); + cursor: pointer; + font-family: var(--font-sans); + letter-spacing: -0.01em; + transition: border-color 0.2s, color 0.2s; +} + +.token-copy-btn:hover { + border-color: #3688ff; + color: #3688ff; +} + +.token-raw { + display: block; + font-size: 11px; + font-family: monospace; + word-break: break-all; + line-height: 1.8; + background: #0b1120; + padding: 14px 16px; + border-radius: 8px; + overflow-x: auto; +} + +.token-raw--loading { + color: rgba(255, 255, 255, 0.3); +} + +.token-part--header { color: #ff7b72; } +.token-part--payload { color: #79c0ff; } +.token-part--signature { color: #3fb950; } + +.token-dot { + color: rgba(255, 255, 255, 0.2); +} + +/* Decoded grid */ +.token-decoded-grid { + display: grid; + grid-template-columns: 1fr 1.7fr; + gap: 12px; + margin-bottom: 20px; +} + +.token-code-box { + background: #0b1120; + border-radius: 10px; + overflow: hidden; +} + +.token-code-box-header { + padding: 9px 14px; + font-size: 10px; + font-weight: 700; + letter-spacing: 0.09em; + text-transform: uppercase; +} + +.token-code-box-header--header { + color: #ff7b72; + border-bottom: 1px solid rgba(255, 123, 114, 0.15); +} + +.token-code-box-header--payload { + color: #79c0ff; + border-bottom: 1px solid rgba(121, 192, 255, 0.15); +} + +.token-code-pre { + margin: 0; + padding: 14px; + font-size: 11.5px; + line-height: 1.8; + font-family: monospace; + color: #c9d1d9; + overflow-x: auto; + max-height: 220px; +} + +/* Meta row */ +.token-meta-row { + display: flex; + gap: 32px; + padding-top: 20px; + border-top: 1px solid var(--color-border); + flex-wrap: wrap; +} + +.token-meta-label { + font-size: 10px; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.09em; + color: var(--color-muted); + margin-bottom: 5px; +} + +.token-meta-value { + font-size: 12px; + font-family: monospace; + color: var(--color-text); + letter-spacing: -0.01em; +} + +/* ── Responsive ── */ +@media (max-width: 480px) { + .nav { + padding: 0 16px; + } + + .nav-wordmark { + display: none; + } + + .hero { + padding: 80px 16px 32px; + } + + .hero-title { + font-size: 2rem; + } + + .hero-stats { + grid-template-columns: 1fr; + } + + .hero-stat + .hero-stat::before { + top: 0; + left: 20%; + width: 60%; + height: 1px; + } + + .hero-ctas { + flex-direction: column; + align-items: stretch; + } + + .user-card { + padding: 24px 16px; + } +} + +/* ─── Account page (Google Account-style left-nav layout) ─────────── */ +.account-page { + display: flex; + align-items: flex-start; + min-height: calc(100vh - 52px); + margin-top: 52px; +} + +.account-sidebar { + width: 280px; + flex-shrink: 0; + padding: 40px 24px; + position: sticky; + top: 52px; +} + +.account-sidebar-title { + font-size: 22px; + font-weight: 700; + letter-spacing: -0.03em; + color: var(--color-text); + margin: 0 0 24px 16px; +} + +.account-nav { + display: flex; + flex-direction: column; + gap: 2px; +} + +.account-nav-item { + display: flex; + align-items: center; + gap: 14px; + width: 100%; + padding: 11px 16px; + border: none; + border-radius: 20px; + background: transparent; + color: var(--color-muted); + font-size: 14px; + font-weight: 500; + font-family: inherit; + text-align: left; + cursor: pointer; + white-space: nowrap; + transition: background 0.2s, color 0.2s; +} + +.account-nav-item:hover { + background: var(--color-border); + color: var(--color-text); +} + +.account-nav-item--active, +.account-nav-item--active:hover { + background: rgba(54, 136, 255, 0.12); + color: var(--color-primary); +} + +.account-content { + flex: 1; + min-width: 0; + display: flex; + justify-content: center; + padding: 40px 32px 80px; + border-left: 1px solid var(--color-border); +} + +.account-content-inner { + width: 100%; + max-width: 720px; +} + +/* UserProfile's `min-width: 600px` (a floor meant to keep the field grid from getting + cramped in other contexts) fights this page's own responsive layout, refusing to shrink + below 600px even when the viewport is narrower. The Security/Home boxes have no such floor + and already shrink fluidly with their container, so match that here. */ +.account-content .thunderid-user-profile { + min-width: 0; + background: var(--color-card) !important; + border: 1px solid var(--color-border) !important; + border-radius: var(--radius-card) !important; + box-shadow: var(--shadow-card); + color: var(--color-text); + box-sizing: border-box; +} + +.account-content .thunderid-user-profile .thunderid-user-profile__hero { + border-bottom: 1px solid var(--color-border); +} + +.account-content .thunderid-user-profile .thunderid-user-profile__hero-name { + color: var(--color-text); +} + +.account-content .thunderid-user-profile .thunderid-user-profile__hero-subtitle { + color: var(--color-text-muted); +} + +.account-content .thunderid-user-profile .thunderid-user-profile__field { + border-bottom: 1px solid var(--color-border); +} + +.account-content .thunderid-user-profile .thunderid-user-profile__field-label { + color: var(--color-text-muted); +} + +.account-content .thunderid-user-profile .thunderid-user-profile__field-value { + color: var(--color-text); +} + +.account-content .thunderid-user-profile .thunderid-user-profile__field-placeholder { + color: var(--color-text-muted); +} + +.account-content .thunderid-user-profile .thunderid-user-profile__field-edit-btn { + color: var(--color-text-muted); +} + +.account-content .thunderid-user-profile .thunderid-user-profile__field-edit-btn:hover { + color: var(--color-primary); +} + +.account-content .thunderid-user-profile input, +.account-content .thunderid-user-profile select, +.account-content .thunderid-user-profile textarea { + background: rgba(255, 255, 255, 0.05); + border: 1px solid var(--color-border); + border-radius: var(--radius-btn); + color: var(--color-text); + padding: 6px 10px; +} + +.account-content-title { + font-size: 26px; + font-weight: 700; + letter-spacing: -0.03em; + color: var(--color-text); + margin: 0 0 6px; +} + +.account-content-subtitle { + font-size: 14px; + color: var(--color-muted); + margin: 0 0 32px; +} + +.account-tiles { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); + gap: 16px; + margin-top: 8px; +} + +.account-tile { + text-align: left; + background: var(--color-card); + border: 1px solid var(--color-border); + border-radius: var(--radius-card); + padding: 22px; + cursor: pointer; + font-family: inherit; + display: flex; + flex-direction: column; + transition: border-color 0.2s; +} + +.account-tile:hover { + border-color: rgba(54, 136, 255, 0.35); +} + +.account-tile-icon { + width: 36px; + height: 36px; + border-radius: 10px; + display: flex; + align-items: center; + justify-content: center; + margin-bottom: 14px; +} + +.account-tile-icon--blue { + background: rgba(54, 136, 255, 0.12); + color: var(--color-primary); +} + +.account-tile-icon--green { + background: rgba(16, 185, 129, 0.12); + color: #10b981; +} + +.account-tile-title { + font-size: 15px; + font-weight: 600; + color: var(--color-text); + margin-bottom: 4px; +} + +.account-tile-desc { + font-size: 12.5px; + color: var(--color-muted); + line-height: 1.5; +} + +.account-security-list { + display: flex; + flex-direction: column; + gap: 16px; +} + +.account-security-card { + background: var(--color-card); + border: 1px solid var(--color-border); + border-radius: var(--radius-card); + padding: 20px 22px; +} + +.account-security-card-row { + display: flex; + align-items: center; + justify-content: space-between; + gap: 16px; +} + +.account-security-card-title { + font-size: 14px; + font-weight: 600; + color: var(--color-text); + margin-bottom: 2px; +} + +.account-security-card-desc { + font-size: 12.5px; + color: var(--color-muted); +} + +.account-security-card-cta { + flex-shrink: 0; + display: flex; + align-items: center; + gap: 6px; + padding: 0; + background: none; + border: none; + color: var(--color-primary); + font-size: 13px; + font-weight: 500; + font-family: inherit; + cursor: pointer; + transition: opacity 0.2s; +} + +.account-security-card-cta:hover { + opacity: 0.8; +} + +.account-security-card-chevron { + display: inline-flex; + transition: transform 0.2s; +} + +.account-security-card-chevron--open { + transform: rotate(180deg); +} + +.account-security-card-form { + margin-top: 18px; + padding-top: 18px; + border-top: 1px solid var(--color-border); +} + +@media (max-width: 760px) { + .account-page { + flex-direction: column; + } + .account-sidebar { + width: 100%; + position: static; + padding: 20px 16px 8px; + } + .account-nav { + flex-direction: row; + overflow-x: auto; + } + .account-content { + max-width: 100%; + border-left: none; + border-top: 1px solid var(--color-border); + padding: 24px 20px 60px; + } +} + +/* ── ThunderID inputs & forms dark mode ── */ +.dark .thunderid-password-field__wrapper, +html.dark .thunderid-password-field__wrapper, +.app.dark .thunderid-password-field__wrapper, +.dark .thunderid-text-field__wrapper, +html.dark .thunderid-text-field__wrapper, +.app.dark .thunderid-text-field__wrapper, +.dark .thunderid-text-field__input, +html.dark .thunderid-text-field__input, +.app.dark .thunderid-text-field__input { + background-color: rgba(255, 255, 255, 0.05) !important; + border-color: rgba(255, 255, 255, 0.16) !important; + color: var(--color-text) !important; +} + +.dark .thunderid-password-field__label, +html.dark .thunderid-password-field__label, +.app.dark .thunderid-password-field__label, +.dark .thunderid-text-field__label, +html.dark .thunderid-text-field__label, +.app.dark .thunderid-text-field__label, +.dark .thunderid-input-label, +html.dark .thunderid-input-label, +.app.dark .thunderid-input-label { + color: var(--color-text) !important; +} + +.dark .thunderid-password-field__input, +html.dark .thunderid-password-field__input, +.app.dark .thunderid-password-field__input { + background: transparent !important; + color: var(--color-text) !important; +} + +.dark .thunderid-password-field__input::placeholder, +html.dark .thunderid-password-field__input::placeholder, +.app.dark .thunderid-password-field__input::placeholder, +.dark .thunderid-text-field__input::placeholder, +html.dark .thunderid-text-field__input::placeholder, +.app.dark .thunderid-text-field__input::placeholder { + color: var(--color-text-muted) !important; +} + +.dark .thunderid-password-field__toggle, +html.dark .thunderid-password-field__toggle, +.app.dark .thunderid-password-field__toggle { + color: var(--color-text-muted) !important; + background: transparent !important; +} + +.dark .thunderid-password-field__toggle:hover, +html.dark .thunderid-password-field__toggle:hover, +.app.dark .thunderid-password-field__toggle:hover { + color: var(--color-text) !important; +} + +.dark .thunderid-change-credential__requirements-heading, +html.dark .thunderid-change-credential__requirements-heading, +.app.dark .thunderid-change-credential__requirements-heading, +.dark .thunderid-change-credential__requirement, +html.dark .thunderid-change-credential__requirement, +.app.dark .thunderid-change-credential__requirement { + color: var(--color-text-muted) !important; +} + +.dark .thunderid-change-credential__requirement--passed, +html.dark .thunderid-change-credential__requirement--passed, +.app.dark .thunderid-change-credential__requirement--passed { + color: #38c172 !important; +} + +/* ── ThunderID UserDropdown dark mode ── */ +.dark .thunderid-user-dropdown__menu, +html.dark .thunderid-user-dropdown__menu, +.app.dark .thunderid-user-dropdown__menu, +.dark .thunderid-user-dropdown__content, +html.dark .thunderid-user-dropdown__content, +.app.dark .thunderid-user-dropdown__content { + background-color: var(--color-card) !important; + border: 1px solid var(--color-border) !important; + box-shadow: 0 8px 32px rgba(0, 0, 0, 0.45) !important; + color: var(--color-text) !important; +} + +.dark .thunderid-user-dropdown__menu-header, +html.dark .thunderid-user-dropdown__menu-header, +.app.dark .thunderid-user-dropdown__menu-header, +.dark .thunderid-user-dropdown__header, +html.dark .thunderid-user-dropdown__header, +.app.dark .thunderid-user-dropdown__header { + border-bottom: 1px solid var(--color-border) !important; +} + +.dark .thunderid-user-dropdown__menu-header-name, +html.dark .thunderid-user-dropdown__menu-header-name, +.app.dark .thunderid-user-dropdown__menu-header-name, +.dark .thunderid-user-dropdown__header-name, +html.dark .thunderid-user-dropdown__header-name, +.app.dark .thunderid-user-dropdown__header-name { + color: var(--color-text) !important; +} + +.dark .thunderid-user-dropdown__menu-header-subtitle, +html.dark .thunderid-user-dropdown__menu-header-subtitle, +.app.dark .thunderid-user-dropdown__menu-header-subtitle, +.dark .thunderid-user-dropdown__header-subtitle, +html.dark .thunderid-user-dropdown__header-subtitle, +.app.dark .thunderid-user-dropdown__header-subtitle { + color: var(--color-text-muted) !important; +} + +.dark .thunderid-user-dropdown__menu-divider, +html.dark .thunderid-user-dropdown__menu-divider, +.app.dark .thunderid-user-dropdown__menu-divider, +.dark .thunderid-divider, +html.dark .thunderid-divider, +.app.dark .thunderid-divider { + background-color: var(--color-border) !important; + border-color: var(--color-border) !important; +} + +.dark .thunderid-user-dropdown__item, +html.dark .thunderid-user-dropdown__item, +.app.dark .thunderid-user-dropdown__item { + color: var(--color-text) !important; +} + +.dark .thunderid-user-dropdown__item:hover, +html.dark .thunderid-user-dropdown__item:hover, +.app.dark .thunderid-user-dropdown__item:hover { + background-color: rgba(255, 255, 255, 0.06) !important; + color: var(--color-text) !important; +} + +.dark .thunderid-user-dropdown__item--danger, +html.dark .thunderid-user-dropdown__item--danger, +.app.dark .thunderid-user-dropdown__item--danger { + color: #f87171 !important; +} + +.dark .thunderid-user-dropdown__item--danger:hover, +html.dark .thunderid-user-dropdown__item--danger:hover, +.app.dark .thunderid-user-dropdown__item--danger:hover { + background-color: rgba(239, 68, 68, 0.12) !important; +} + +.dark .thunderid-card, +html.dark .thunderid-card, +.app.dark .thunderid-card { + background-color: var(--color-card) !important; + border-color: var(--color-border) !important; + color: var(--color-text) !important; +} + diff --git a/quickstarts/nextjs/app/layout.tsx b/quickstarts/nextjs/app/layout.tsx new file mode 100644 index 0000000..d67dade --- /dev/null +++ b/quickstarts/nextjs/app/layout.tsx @@ -0,0 +1,47 @@ +import type { Metadata } from 'next' +import { ThunderIDProvider } from '@thunderid/nextjs/server' +import ConfigNotice from './components/ConfigNotice' +import './globals.css' + +export const dynamic = 'force-dynamic' + +export const metadata: Metadata = { + title: 'ThunderID Next.js Quickstart', + description: 'ThunderID authentication with Next.js', +} + +// Redirect-based flow (NEXT_PUBLIC_THUNDERID_CLIENT_ID set) sends the user to +// ThunderID's hosted pages and needs a registered redirect URI. The default, +// native flow renders sign-in/sign-up inline via the app's own routes and +// needs an application ID instead β€” no redirect URI or CORS setup required. +const isRedirectFlow = Boolean(process.env.NEXT_PUBLIC_THUNDERID_CLIENT_ID) + +const REQUIRED_ENV_VARS = [ + 'NEXT_PUBLIC_THUNDERID_BASE_URL', + 'THUNDERID_SECRET', + ...(isRedirectFlow + ? ['NEXT_PUBLIC_THUNDERID_CLIENT_ID', 'THUNDERID_CLIENT_SECRET'] + : ['NEXT_PUBLIC_THUNDERID_APPLICATION_ID', 'NEXT_PUBLIC_THUNDERID_SIGN_IN_URL', 'NEXT_PUBLIC_THUNDERID_SIGN_UP_URL', 'THUNDERID_FLOW_SECRET']), +] + +export default function RootLayout({ + children, +}: { + children: React.ReactNode +}) { + const missingEnvVars = REQUIRED_ENV_VARS.filter((key) => !process.env[key]) + + return ( + + + {missingEnvVars.length > 0 ? ( + + ) : ( + + {children} + + )} + + + ) +} diff --git a/quickstarts/nextjs/app/not-found.tsx b/quickstarts/nextjs/app/not-found.tsx new file mode 100644 index 0000000..53bd47d --- /dev/null +++ b/quickstarts/nextjs/app/not-found.tsx @@ -0,0 +1,13 @@ +import Link from 'next/link' + +export default function NotFound() { + return ( +
    +
    +

    Page not found

    +

    The page you're looking for doesn't exist.

    + Return home +
    +
    + ) +} diff --git a/quickstarts/nextjs/app/page.tsx b/quickstarts/nextjs/app/page.tsx new file mode 100644 index 0000000..825ba9f --- /dev/null +++ b/quickstarts/nextjs/app/page.tsx @@ -0,0 +1,264 @@ +'use client' +import { SignedIn, SignedOut, User, UserAvatar, useThunderID } from '@thunderid/nextjs' +import { useState, useEffect } from 'react' +import { fetchAccessToken } from './actions' +import HeroCtas from './components/HeroCtas' +import Nav from './components/Nav' +import ThunderMark from './components/ThunderMark' + +function greeting(name: string): string { + const h = new Date().getHours() + const tod = h < 12 ? 'morning' : h < 17 ? 'afternoon' : 'evening' + return `Good ${tod}, ${name}.` +} + +function formatTime(unixSeconds: number | undefined): string { + if (!unixSeconds) return 'β€”' + return new Date(unixSeconds * 1000).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }) +} + +function formatCountdown(secsLeft: number): { text: string; color: string } { + if (secsLeft <= 0) return { text: 'Expired', color: '#d95757' } + if (secsLeft < 300) { + const m = Math.floor(secsLeft / 60), s = secsLeft % 60 + return { text: `${m}m ${s}s`, color: '#e88b3a' } + } + if (secsLeft < 3600) { + const m = Math.floor(secsLeft / 60), s = secsLeft % 60 + return { text: `${m}m ${s}s`, color: '#2fbd6b' } + } + const hr = Math.floor(secsLeft / 3600), m = Math.floor((secsLeft % 3600) / 60) + return { text: `${hr}h ${m}m`, color: '#2fbd6b' } +} + +const NEXT_STEPS = [ + { + n: '01', + title: 'Explore use cases', + body: 'See what you can build β€” auth flows for web, mobile, APIs, and agents.', + cta: 'Browse use cases', + href: 'https://thunderid.dev/docs/next/use-cases/overview/', + }, + { + n: '02', + title: 'Learn about flows', + body: 'Understand how authorization code, PKCE, client credentials, and device flows work.', + cta: 'Read guide', + href: 'https://thunderid.dev/docs/next/guides/flows/what-are-flows/', + }, + { + n: '03', + title: 'Style your experience', + body: 'Customize the login UI, branding, and email templates to match your product.', + cta: 'Design guide', + href: 'https://thunderid.dev/docs/next/guides/design/overview/', + }, + { + n: '04', + title: 'Explore SDK APIs', + body: 'Full Next.js SDK reference β€” hooks, components, and configuration options.', + cta: 'SDK reference', + href: 'https://thunderid.dev/docs/next/sdks/nextjs/overview/', + }, +] + +function ClockIcon() { + return ( + + ) +} + +function TimerIcon() { + return ( + + ) +} + +function BuildingIcon() { + return ( + + ) +} + +function ArrowIcon() { + return ( + + ) +} + +function HomeContent() { + const { organizationHandle } = useThunderID() + const [accessToken, setAccessToken] = useState(null) + const [now, setNow] = useState(Math.floor(Date.now() / 1000)) + + useEffect(() => { + void fetchAccessToken().then((t) => { if (t) setAccessToken(t) }) + }, []) + + useEffect(() => { + const id = setInterval(() => setNow(Math.floor(Date.now() / 1000)), 1000) + return () => clearInterval(id) + }, []) + + const jwtPayload = accessToken ? (() => { + try { + const part = accessToken.split('.')[1] ?? '' + const base64 = part.replace(/-/g, '+').replace(/_/g, '/') + const padded = base64.padEnd(base64.length + (4 - (base64.length % 4)) % 4, '=') + return JSON.parse(atob(padded)) as Record + } catch { return null } + })() : null + + const authTime = jwtPayload?.auth_time as number | undefined + const exp = jwtPayload?.exp as number | undefined + const secsLeft = exp ? Math.max(0, exp - now) : null + const countdown = secsLeft !== null ? formatCountdown(secsLeft) : null + + return ( + + {(user: { givenName?: string; given_name?: string; familyName?: string; email?: string } | null) => { + const givenName = user?.givenName ?? user?.given_name ?? user?.email?.split('@')[0] ?? 'there' + const email = user?.email + const ouName = organizationHandle ?? 'Default' + + return ( +
    +
    + +
    +

    {greeting(givenName)}

    +
    + {email && {email}} + {email && } + + + Session active + +
    +
    +
    + +
    +
    +
    +
    +
    {formatTime(authTime)}
    +
    Signed in at
    +
    +
    +
    +
    +
    +
    + {countdown ? countdown.text : 'β€”'} +
    +
    Session expires in
    +
    +
    +
    +
    +
    +
    {ouName}
    +
    Organisation
    +
    +
    +
    + +
    What's next
    + +
    + ) + }} +
    + ) +} + +export default function HomePage() { + return ( +
    +
    + ) +} diff --git a/quickstarts/nextjs/app/signin/page.tsx b/quickstarts/nextjs/app/signin/page.tsx new file mode 100644 index 0000000..26ab4ce --- /dev/null +++ b/quickstarts/nextjs/app/signin/page.tsx @@ -0,0 +1,30 @@ +'use client' +import Link from 'next/link' +import { useRouter } from 'next/navigation' +import { SignedIn, SignedOut, SignIn } from '@thunderid/nextjs' +import Nav from '../components/Nav' + +export default function SignInPage() { + const router = useRouter() + + return ( +
    +
    + ) +} diff --git a/quickstarts/nextjs/app/signup/page.tsx b/quickstarts/nextjs/app/signup/page.tsx new file mode 100644 index 0000000..d185861 --- /dev/null +++ b/quickstarts/nextjs/app/signup/page.tsx @@ -0,0 +1,27 @@ +'use client' +import Link from 'next/link' +import { SignedIn, SignedOut, SignUp } from '@thunderid/nextjs' +import Nav from '../components/Nav' + +export default function SignUpPage() { + return ( +
    +
    + ) +} diff --git a/quickstarts/nextjs/app/token/page.tsx b/quickstarts/nextjs/app/token/page.tsx new file mode 100644 index 0000000..9d7f741 --- /dev/null +++ b/quickstarts/nextjs/app/token/page.tsx @@ -0,0 +1,143 @@ +'use client' +import { useState, useEffect } from 'react' +import { fetchAccessToken } from '../actions' +import Nav from '../components/Nav' + +function decodeJwtPart(part: string): Record | null { + try { + const base64 = part.replace(/-/g, '+').replace(/_/g, '/') + const padded = base64.padEnd(base64.length + (4 - (base64.length % 4)) % 4, '=') + return JSON.parse(atob(padded)) as Record + } catch { + return null + } +} + +function CopyIcon() { + return ( + + ) +} + +export default function TokenDebugPage() { + const [rawToken, setRawToken] = useState(null) + const [copied, setCopied] = useState(false) + const [now, setNow] = useState(Math.floor(Date.now() / 1000)) + + useEffect(() => { + void fetchAccessToken().then((t) => { if (t) setRawToken(t) }) + }, []) + + useEffect(() => { + const id = setInterval(() => setNow(Math.floor(Date.now() / 1000)), 1000) + return () => clearInterval(id) + }, []) + + const parts = rawToken ? rawToken.split('.') : [] + const jwtHeader = parts[0] ? decodeJwtPart(parts[0]) : null + const jwtPayload = parts[1] ? decodeJwtPart(parts[1]) : null + + const exp = jwtPayload?.exp as number | undefined + const expiresIn = exp ? exp - now : null + const expired = expiresIn !== null && expiresIn <= 0 + const minsLeft = expiresIn !== null ? Math.abs(Math.floor(expiresIn / 60)) : null + + const handleCopy = () => { + if (rawToken && navigator.clipboard) { + void navigator.clipboard.writeText(rawToken) + setCopied(true) + setTimeout(() => setCopied(false), 1500) + } + } + + const issuer = jwtPayload?.iss as string | undefined + const audience = Array.isArray(jwtPayload?.aud) ? (jwtPayload.aud as string[]).join(', ') : jwtPayload?.aud as string | undefined + const scopes = jwtPayload?.scope as string | undefined + + return ( +
    +
    + ) +} diff --git a/quickstarts/nextjs/next-env.d.ts b/quickstarts/nextjs/next-env.d.ts new file mode 100644 index 0000000..830fb59 --- /dev/null +++ b/quickstarts/nextjs/next-env.d.ts @@ -0,0 +1,6 @@ +/// +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/quickstarts/nextjs/next.config.ts b/quickstarts/nextjs/next.config.ts new file mode 100644 index 0000000..e4f5738 --- /dev/null +++ b/quickstarts/nextjs/next.config.ts @@ -0,0 +1,5 @@ +import type { NextConfig } from 'next' + +const nextConfig: NextConfig = {} + +export default nextConfig diff --git a/quickstarts/nextjs/package.json b/quickstarts/nextjs/package.json new file mode 100644 index 0000000..4c7613b --- /dev/null +++ b/quickstarts/nextjs/package.json @@ -0,0 +1,24 @@ +{ + "name": "@thunderid/nextjs-quickstart", + "private": true, + "version": "0.0.0", + "scripts": { + "prepare-dev": "node scripts/prepare-dev.cjs", + "prepare-dev:redirect": "node scripts/prepare-dev.cjs --flow=redirect", + "dev": "next dev", + "build": "next build", + "start": "next start" + }, + "dependencies": { + "@thunderid/nextjs": "1.3.0", + "next": "^15.5.25", + "react": "^19.2.3", + "react-dom": "^19.2.3" + }, + "devDependencies": { + "@types/node": "^24.7.2", + "@types/react": "^19.2.14", + "@types/react-dom": "^19.2.3", + "typescript": "^5.9.3" + } +} diff --git a/quickstarts/nextjs/pnpm-lock.yaml b/quickstarts/nextjs/pnpm-lock.yaml new file mode 100644 index 0000000..e2f0155 --- /dev/null +++ b/quickstarts/nextjs/pnpm-lock.yaml @@ -0,0 +1,1391 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +overrides: + postcss: 8.5.23 + +importers: + + .: + dependencies: + '@thunderid/nextjs': + specifier: 1.3.0 + version: 1.3.0(next@15.5.28(@types/node@24.19.2)(react-dom@19.3.1(react@19.3.1))(react@19.3.1))(react-dom@19.3.1(react@19.3.1))(react@19.3.1) + next: + specifier: ^15.5.25 + version: 15.5.28(@types/node@24.19.2)(react-dom@19.3.1(react@19.3.1))(react@19.3.1) + react: + specifier: ^19.2.3 + version: 19.3.1 + react-dom: + specifier: ^19.2.3 + version: 19.3.1(react@19.3.1) + devDependencies: + '@types/node': + specifier: ^24.7.2 + version: 24.19.2 + '@types/react': + specifier: ^19.2.14 + version: 19.3.0 + '@types/react-dom': + specifier: ^19.2.3 + version: 19.3.0(@types/react@19.3.0) + typescript: + specifier: ^5.9.3 + version: 5.9.3 + +packages: + + '@babel/code-frame@7.29.7': + resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.29.8': + resolution: {integrity: sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-globals@7.29.7': + resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.29.7': + resolution: {integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.29.7': + resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.29.7': + resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.29.9': + resolution: {integrity: sha512-CjXrNHTnvqBVqHgdBysY3vk2T8tpJHb5/RMeHJBTyVa9xgugCB0CJTx/3oO8RV2QRQP391RWpB7D6hLjm8V9uA==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/runtime@7.29.10': + resolution: {integrity: sha512-NpugTzbKgGrNe45Ui32cN8vCFFMxVtP/9rtfwv0nP5FRDAjvYBxJcLVpYA9mr1jxP6cnIT7x9LUzuDTbWYYNRA==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.29.7': + resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.29.10': + resolution: {integrity: sha512-B3lYAs2nkKskbgQ1nfy8Ma9ao9Q1rntTAQHrzzyDuj+TSO+X3le6PfWwqDvodsb+OumE10eMFfuMCTQSQ5iuIQ==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.29.8': + resolution: {integrity: sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==} + engines: {node: '>=6.9.0'} + + '@emnapi/runtime@1.11.3': + resolution: {integrity: sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==} + + '@emotion/babel-plugin@11.13.5': + resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==} + + '@emotion/cache@11.14.0': + resolution: {integrity: sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==} + + '@emotion/css@11.13.5': + resolution: {integrity: sha512-wQdD0Xhkn3Qy2VNcIzbLP9MR8TafI0MJb7BEAXKp+w4+XqErksWR4OXomuDzPsN4InLdGhVe6EYcn2ZIUCpB8w==} + + '@emotion/hash@0.9.2': + resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} + + '@emotion/memoize@0.9.0': + resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==} + + '@emotion/serialize@1.3.3': + resolution: {integrity: sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==} + + '@emotion/sheet@1.4.0': + resolution: {integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==} + + '@emotion/unitless@0.10.0': + resolution: {integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==} + + '@emotion/utils@1.4.2': + resolution: {integrity: sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==} + + '@emotion/weak-memoize@0.4.0': + resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} + + '@floating-ui/core@1.8.0': + resolution: {integrity: sha512-0CIZ5itps/8x7BG8dEIhs53BvCUH2PCoogtakwRTut+Arm58sJooJ0AuZhLw2HJYIR5cMLNPBSS728sPho2khQ==} + + '@floating-ui/dom@1.8.0': + resolution: {integrity: sha512-yXSrzeHZBTZadLOlfyhCkJHNeLJnHRnRInwdZ40L7ZiaAtrBwoYlsDrX3v5zB1Utk7CLfzcOVnVVWoXEky7Ceg==} + + '@floating-ui/react-dom@2.1.9': + resolution: {integrity: sha512-JDjEFGCpImxDCA7JJKviA0M9+RtmJdj0m/NVU5IMgBK+AmZouAQQ7/+2GLH0GXXY0YMw9oXPB8hKdbPYg5QLYg==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/react@0.27.12': + resolution: {integrity: sha512-kKlWNrpIQxF1B/a2MZvE0/uyKby4960yjO91W7nVyNKmmfNi62xU9HCjL1M1eWzx/LFj/VPSwJVbwQk9Pq/68A==} + peerDependencies: + react: '>=17.0.0' + react-dom: '>=17.0.0' + + '@floating-ui/utils@0.2.12': + resolution: {integrity: sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww==} + + '@img/colour@1.1.0': + resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==} + engines: {node: '>=18'} + + '@img/sharp-darwin-arm64@0.35.5': + resolution: {integrity: sha512-QRUlFQ0WxvdWyqqG/WtI3iupfD5rBzmCHXSdPsY91sAtVtTo7Q4cb6zOccZ3gqEqkr0f1As1ehLqmEpDsRf+lg==} + engines: {node: '>=20.9.0'} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.35.5': + resolution: {integrity: sha512-+BR255RhDlpygUpOc/Jdt1nT6DQ3XG/ERo5wbcdOf5Q320dKtPCKPLR1LJs9VGXRaMa8l1uUa0tkCNOXiAxZUw==} + engines: {node: '>=20.9.0'} + cpu: [x64] + os: [darwin] + + '@img/sharp-freebsd-wasm32@0.35.5': + resolution: {integrity: sha512-Y/z91nEZ4uIBX5X3nfTovjU9lHNKFYbL2lpHCLVNmXQK03VIZvXBBt0KxbPGp2SdGSF+2mQU4e+hQaWOt86iAw==} + engines: {node: '>=20.9.0'} + os: [freebsd] + + '@img/sharp-libvips-darwin-arm64@1.3.4': + resolution: {integrity: sha512-5R89nBYiRdUlSWJxPhO+GVtaXzXSxKnRu/xqMn3KTA3L9EB9Oy/P+Nn2f2vlhPuUdy/Zusb2DarbyTpGCfEDuw==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.3.4': + resolution: {integrity: sha512-iR2OKH80yi0U+dUplyh3/xdpFvps6YkCwsXenIJxqxR1v9o+xtKTGbS9H7cps+2Vxjc8B1j96p75NmTGjIhtpQ==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.3.4': + resolution: {integrity: sha512-Y3dgX/6lE2QhQb+Gxy0WZxfg9MEm/JBjamZpS2IklP7xIQoKN4hzAm7KcMVGtaVDt3neE9OKBC7vAfonA/Lr1A==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-arm@1.3.4': + resolution: {integrity: sha512-LmRtTsOHuvM2+wlO2Db37dx5MiZhB0FvSunciw48YjdOkZz9KAiRbm8ujeMOA1INqmei5NapFxYEK1D1ZSidmw==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-ppc64@1.3.4': + resolution: {integrity: sha512-Le6boB8Tai0Nis+gIxIpKx68UDVVIqdR8Tin5Yf1z2LJJQLDJvCDRqRu+jC2qCoD+eIomonmOwB4smBRxfVpYQ==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-riscv64@1.3.4': + resolution: {integrity: sha512-aHkkIEHPRdQEegJN20MLmGtxYD9R2wQr3Cwpddnu5+YKMt6Uzax7S9h5gpZTo8wyrGuZSlfQ63OevL5mTyOC7Q==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-s390x@1.3.4': + resolution: {integrity: sha512-ra/mB6MikESDUO7Yg+Mi95bFBb9GsObURuhnOv3OqknjGe9sZrG8tCe9q0xSIGrtLgvgw0gKnFWcK4blSgQOuQ==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-x64@1.3.4': + resolution: {integrity: sha512-GJ//SSXbnwSDes02umB3nDJLFcQzw8a18V8fyhqr6tV515tOEMdImjjxj1AoafMRz56F3PHgftnj1QEKSU1zkw==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linuxmusl-arm64@1.3.4': + resolution: {integrity: sha512-hvulFwtjUcagsis6BBxHwGFwWoNZjgYmULGVrZcyfNbjA8hKILbRxGg15/7w5HDyXHXUos/j6baAWqnCyQ2DWA==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@img/sharp-libvips-linuxmusl-x64@1.3.4': + resolution: {integrity: sha512-6zXKeE/p39I1AmA3cJG35eyBGNqNddLnUXjhwBnsGjFPWqf5VKkDBEqaEkPDoTEtkxwi2vv8Tcr2mDyP4So7Fg==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@img/sharp-linux-arm64@0.35.5': + resolution: {integrity: sha512-LYVx5JTsOM2CBzmxreh+nl64/3H6Xb09iSLknqH47z2T2DFFxDeFLP5y4dJwe6H7uGQlHPyEEtIqyo3DYsRwdQ==} + engines: {node: '>=20.9.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-arm@0.35.5': + resolution: {integrity: sha512-LEaXK2WdXVK5ykcw0buWyPMsmLLL2vpHLD6yrNSW+JGEL3BZPA4tpKN6iaMc4AxTTAoaX/sU1rOL51lcIz48ZQ==} + engines: {node: '>=20.9.0'} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-ppc64@0.35.5': + resolution: {integrity: sha512-QVxAAq8evVRI9ia2vqgwrmWucn5Dfv+JdWzj75pD8omHLPSP7f8p20O8jxzjCcuCEQEOtYOZUmX1hkiZ0kdevA==} + engines: {node: '>=20.9.0'} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-riscv64@0.35.5': + resolution: {integrity: sha512-LtdreXguaavKODPIfzJ4kffx7UNt1omwtK0rch4EBbbSTXPnxWmYSayXdLJw0fJzQ97kHt1gL/yh4tvU+nCyRQ==} + engines: {node: '>=20.9.0'} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-s390x@0.35.5': + resolution: {integrity: sha512-UZasTOFiYzotTsGOCu42BfUzP6Tu6Do/947iRm1RsLKvlllxwGcn4RN27LibGWceix4Y+Pmw3jsnTcCQIgWjqA==} + engines: {node: '>=20.9.0'} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-x64@0.35.5': + resolution: {integrity: sha512-SxFtLTeJInhAA9Q836kux2vZNeOBQEx658qvbboZScr0wIARym3IcGmW7KpVD5sbVg0Ojy+udFQdayYIZyoNog==} + engines: {node: '>=20.9.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@img/sharp-linuxmusl-arm64@0.35.5': + resolution: {integrity: sha512-9HbMclmI1zlNkFRs3z9/eBtDjfD0sGlrX1z6b1qwmiFY5ElDLh4BC0LPBdVp7z1DXFiKlIcznf+ZlsuZzLxQqg==} + engines: {node: '>=20.9.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@img/sharp-linuxmusl-x64@0.35.5': + resolution: {integrity: sha512-4KOphqB035HrVdqLZfCgMzzERrQkkzOwRhl4OAkRO1YCldbaFjySXMaK534Mo0V+LndnlJk+sbUyLeU0ULyD1A==} + engines: {node: '>=20.9.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@img/sharp-wasm32@0.35.5': + resolution: {integrity: sha512-Ptsga1su4tQx+LLF1ECS9U6nz5kmrXKo6XVbtR48Ke3ZRxxgaWBu7IDtEe1quo8hiupwm6WFqxVlXaSf7IINGQ==} + engines: {node: '>=20.9.0'} + + '@img/sharp-webcontainers-wasm32@0.35.5': + resolution: {integrity: sha512-hfhF/FmoQyTUkA0bIKFOtw536BQSeBMe6BF6QyWlrPxT754+TFLaZ7sKKTfvvM0yJgKgaYTwnFCIZ/GuDw5SUA==} + engines: {node: '>=20.9.0'} + cpu: [wasm32] + + '@img/sharp-win32-arm64@0.35.5': + resolution: {integrity: sha512-X4t7g+7ZA5DKblCBEXGjUqqemj4vczING/5viFwAL8h4N3qYeyjwdCvRLHi4EdOUI+2Z7UFlp1VM+p/AuEtm6Q==} + engines: {node: '>=20.9.0'} + cpu: [arm64] + os: [win32] + + '@img/sharp-win32-ia32@0.35.5': + resolution: {integrity: sha512-5Zm82LoBc43nhwNybZlG7Y1KO//Zhsn306fQl29ZOuStHLGTo3BWL83q3cznX0poxSAMuYL1On/BHBxkBeKr6A==} + engines: {node: ^20.9.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.35.5': + resolution: {integrity: sha512-x76eH0vEiHlcMQu8Y8IenntaACtddpT6W0wmXtWrnKcnKI7ME5DdgqhAD6SEWOEl1v2zDvkZDhFA9KnURwpfqg==} + engines: {node: '>=20.9.0'} + cpu: [x64] + os: [win32] + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.6.0': + resolution: {integrity: sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@next/env@15.5.28': + resolution: {integrity: sha512-xxW5EBI8fMPuVTPBW7LL980IRbuDXlbkUAwp9DDhtb4Lnich3nJ13uYpvrX4VE74hWPf6AvHHAMmGCidcHjbfg==} + + '@next/swc-darwin-arm64@15.5.28': + resolution: {integrity: sha512-dPoQYXcfSIqx5o+TOXVXO7kONK5qbtNRDeiTfII0bT3puGIT6VF5e0QwmxNZfEZ5Zety5f3m9P/p4xqwfiLlPg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@next/swc-darwin-x64@15.5.28': + resolution: {integrity: sha512-RgCJ7buBivTH+6sddqaVm+/v8kwMHlFkobvdt3DfETutws5HrxnToMIWSN9X3MZ3aAi7BbKrGZZWUDQLEycXqw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@next/swc-linux-arm64-gnu@15.5.28': + resolution: {integrity: sha512-OHXQe13olE59aKe++zHavGcJPh5SLHXi6Anret3BBeq1+qhSuOJDNAli/EDDfxs6UTqA4Qddo4uyYry2slyjiQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@next/swc-linux-arm64-musl@15.5.28': + resolution: {integrity: sha512-nTB7bB6vfn4ezCJNYP43ukt2o8L3+WxKF/sTcTxepdXsJh3SM9RhlU7wrZYbH7L4HO5M87dqDTwm8587vAkCiw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@next/swc-linux-x64-gnu@15.5.28': + resolution: {integrity: sha512-WXCfVI32rW3xCusoUX1RpZKtyChWU2Zwe27JUDmM3KrXwcDNc9vV4zEq0GKFAURnuQ/Ouo/XqPvB0yh445XZCg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@next/swc-linux-x64-musl@15.5.28': + resolution: {integrity: sha512-Miq+NDb/HWsXuxseYxMM6fuEOQXgTziarkKIRpVKCn8W69cEfhQaQr+90pO+u4q2CbJR2wzXmUuCFyZaJs/Nng==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@next/swc-win32-arm64-msvc@15.5.28': + resolution: {integrity: sha512-5LR79lemgDlgxvG7MQJ+zHCkVcrUoQuO7CiIvq3I58vNW4goSOE2b+19Z6FujRWMouvni4gvudYFuFuNxolGWA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@next/swc-win32-x64-msvc@15.5.28': + resolution: {integrity: sha512-GNipvXUYROSTf4PXEyH95FrWImIB5zdaK6uEOg0RP1/X2drnvoMwiBkJ0VWdzX7w3iiBm3y5g2TxkKDGVTOQcg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@swc/helpers@0.5.15': + resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + + '@thunderid/browser@1.3.0': + resolution: {integrity: sha512-O6DHlUyVFfBaNcJDEXACLU4NJMrNjDlqAuzesvJ+8a0Gl5g8WFK53rpx027e/rWICG0vcGe2UVZuhvZq5Z511A==} + + '@thunderid/javascript@1.4.0': + resolution: {integrity: sha512-qHfIFzXOQTN1nhuBT91Tr8bLPvfyEDa7gUQSL7GNcJkcyyKfJ77meIwr91lCme0ySFUnTeKl0Bk+R8iIJiKXBw==} + + '@thunderid/nextjs@1.3.0': + resolution: {integrity: sha512-MssmgDizw2OYy7p4+XJku3cHhz6TrTgjeyOGvc0TWD1f/en5/jggxy7g9RmDAuKPKRQ4C9eCAvtpHuvN73rMvg==} + peerDependencies: + next: '>=15.5.18' + react: '>=16.8.0' + + '@thunderid/node@1.3.0': + resolution: {integrity: sha512-hAFf4Bv3JZTcatF7Y/iarbd3lYLbIkz6SHzGKG5HOwh/a/Ip8qpu7u4npF6/0cNzrvZzY5g6awIymsIav75Xqw==} + + '@thunderid/react@1.4.0': + resolution: {integrity: sha512-MRSnxgAYCnQKXLaAcWd4oiX7H0RfMVtQr8eeDD8aA+TbJYYt2uSIuSEAgOad7iMbVL+xw174n/S/lw6ekKLBqg==} + peerDependencies: + '@types/react': '>=16.8.0' + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@types/node@24.19.2': + resolution: {integrity: sha512-93d49wCWJkCyN87MxLpNN6KXPCwFw7bVUg79mGUV1OS40JGWwVCr8n61DXCSqz7CV6/VfPkb7xec7uP2M+QHWQ==} + + '@types/parse-json@4.0.2': + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + + '@types/react-dom@19.3.0': + resolution: {integrity: sha512-ZI7bU42mZXXKHn/qNLEw2IrbiINU7X5+vfgdixBHkCNpYWXjKgfQ/P+uyGb5CjOLB9UcnTeg3rylQtV2hym44Q==} + peerDependencies: + '@types/react': ^19.3.0 + + '@types/react@19.2.14': + resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==} + + '@types/react@19.3.0': + resolution: {integrity: sha512-N0rFCuH9YoxG9/m61l9MfpJKfmLOVU0em7ipIz6TRgSSkvReLB9vL85GB+yr8Bs5leqpvg96JSwF4ZS1s4viQg==} + + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + + babel-plugin-macros@3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + base64url@3.0.1: + resolution: {integrity: sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==} + engines: {node: '>=6.0.0'} + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + caniuse-lite@1.0.30001816: + resolution: {integrity: sha512-+8Yx7BXCoqk6IF8yTicjfUR6D/ldJzdlsodlEOiOSPmhK844WIgk67/zIQaGAOxNkZyyvBlrRFnLvqKIoqbAFw==} + + client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + + convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + + core-js@3.42.0: + resolution: {integrity: sha512-Sz4PP4ZA+Rq4II21qkNqOEDTDrCvcANId3xpIgB34NDkWc3UduWj2dqEtN9yZIq8Dk3HyPI33x9sqqU5C8sr0g==} + + cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + + cross-fetch@4.1.0: + resolution: {integrity: sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==} + + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + + dom-walk@0.1.2: + resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} + + dompurify@3.4.13: + resolution: {integrity: sha512-2vmYIoqjze2d+kakP8S/nS5shfsl587kzwEjcGlTdiksUVgFHnFCsLYDVj/JNqJVOQZGSYBTmuycv0PodwmnMQ==} + + error-ex@1.3.4: + resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + fast-sha256@1.3.0: + resolution: {integrity: sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ==} + + find-root@1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + get-random-values@3.0.0: + resolution: {integrity: sha512-mNznaBdYcpz7UAdnOtDGcLdNwAa79mXl5htEyyZ51YaeAWNf2g4x/2yCVBdNNTbi35wX0Stc2PJXM7G6rcONOA==} + engines: {node: 18 || >=20} + + global@4.4.0: + resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==} + + hasown@2.0.4: + resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} + engines: {node: '>= 0.4'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-core-module@2.17.0: + resolution: {integrity: sha512-J/vG0zBCbIKOQFfufSwyXdMrsohyJIUNkrnmo6WZGzoM7tr/lsbfW5b2BvisL6zsyMzK9UxV9L6c7AoFbyXHOA==} + engines: {node: '>= 0.4'} + + jose@6.2.3: + resolution: {integrity: sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + memory-cache@0.2.0: + resolution: {integrity: sha512-OcjA+jzjOYzKmKS6IQVALHLVz+rNTMPoJvCztFaZxwG14wtAW7VRZjwTQu06vKCYOxh4jVnik7ya0SXTB0W+xA==} + + min-document@2.19.2: + resolution: {integrity: sha512-8S5I8db/uZN8r9HSLFVWPdJCvYOejMcEC82VIzNUc6Zkklf/d1gg2psfE79/vyhWOj4+J8MtwmoOz3TmvaGu5A==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.20: + resolution: {integrity: sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + next@15.5.28: + resolution: {integrity: sha512-JjhLBBY1PNnuwPtcZ7t8yxVeJVYvD2Jyp633J+gRCNbzSt7N0E+xqCf6uQiff3+3qmUkwcF/ksfSsK1xsZ76Tw==} + engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.51.1 + babel-plugin-react-compiler: '*' + react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + babel-plugin-react-compiler: + optional: true + sass: + optional: true + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + postcss@8.5.23: + resolution: {integrity: sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg==} + engines: {node: ^10 || ^12 || >=14} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + react-dom@19.3.1: + resolution: {integrity: sha512-Y0bARz53lhEC1NMCASs0/j+faB/zqt3R8hpvg1e8+61ZVJ4UL0UdC4cBbXfZMcIuhrfgeILTLe+ZeBCavQPtKQ==} + peerDependencies: + react: ^19.3.1 + + react@19.3.1: + resolution: {integrity: sha512-QNhWdt7nrgVWWQG58QuGsAR3jv3Hbe4mb4vz7w2csnHavciZJgda1CPNaldF6eVxv90ud3jUXpKlHL69gO38yw==} + engines: {node: '>=0.10.0'} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve@1.22.13: + resolution: {integrity: sha512-Dj/cW9zBV2aRj6XzCxuGIs3ESZKv02jixne3q6jFZYZ3/Tg09gHHviSMDL4kObh9pqSahdRHEnDoaP2gn8YLhA==} + engines: {node: '>= 0.4'} + hasBin: true + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + scheduler@0.28.0: + resolution: {integrity: sha512-juorfCmIkIw8tT+p5BXSm6PJjQF/ycEYmKyzURCIt/RaZIhL+PulbQ9Yu2z1HdOJDdqDTlxA1+xKBmHXJsczAw==} + + secure-random-bytes@5.0.1: + resolution: {integrity: sha512-48nvkahmdyoRbHW/x1HTGIk+i2/84MHFBB+rZ50cg1y/p2RjKG+fhTMQKZx4QD6T6/o2M2WHLPkncqQpjMMsUw==} + engines: {node: 18 || >=20} + + secure-random-octet@4.0.1: + resolution: {integrity: sha512-KEeg9wGi/96Q8Edp97gt5Z5dYCcvG7vPKdKFq6rPLCHtaaHwZKbhbC+gY74O7OjX8Fnels49wqc8IgkNhBJZfw==} + engines: {node: 18 || >=20} + + semver@7.8.5: + resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} + engines: {node: '>=10'} + hasBin: true + + sharp@0.35.5: + resolution: {integrity: sha512-Ywn4OnzGukp7CDMrp08RQ50YKmuwG47brZgIVPTvBaaAfQlRlygrRqSrxdCiL9M+LlzLBiJ68IR1QqvzHyjC7g==} + engines: {node: '>=20.9.0'} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + + source-map-js@1.2.2: + resolution: {integrity: sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==} + engines: {node: '>=0.10.0'} + + source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + + stream-browserify@3.0.0: + resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + styled-jsx@5.1.6: + resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + + stylis@4.2.0: + resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + tabbable@6.5.0: + resolution: {integrity: sha512-wieBHXygIm7OyQOu5hQlkk62/WyCFYGlWg7L6/ZCUZwx0o398Zkn4pVmMyfYhfMG8kGrj/Krt8eIk6UKC6VzwA==} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + + undici-types@7.24.6: + resolution: {integrity: sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + uuid@11.1.1: + resolution: {integrity: sha512-vIYxrBCC/N/K+Js3qSN88go7kIfNPssr/hHCesKCQNAjmgvYS2oqr69kIufEG+O4+PfezOH4EbIeHCfFov8ZgQ==} + hasBin: true + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + yaml@1.10.3: + resolution: {integrity: sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==} + engines: {node: '>= 6'} + +snapshots: + + '@babel/code-frame@7.29.7': + dependencies: + '@babel/helper-validator-identifier': 7.29.7 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/generator@7.29.8': + dependencies: + '@babel/parser': 7.29.9 + '@babel/types': 7.29.8 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/helper-globals@7.29.7': {} + + '@babel/helper-module-imports@7.29.7': + dependencies: + '@babel/traverse': 7.29.10 + '@babel/types': 7.29.8 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.29.7': {} + + '@babel/helper-validator-identifier@7.29.7': {} + + '@babel/parser@7.29.9': + dependencies: + '@babel/types': 7.29.8 + + '@babel/runtime@7.29.10': {} + + '@babel/template@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/parser': 7.29.9 + '@babel/types': 7.29.8 + + '@babel/traverse@7.29.10': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/generator': 7.29.8 + '@babel/helper-globals': 7.29.7 + '@babel/parser': 7.29.9 + '@babel/template': 7.29.7 + '@babel/types': 7.29.8 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.29.8': + dependencies: + '@babel/helper-string-parser': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + + '@emnapi/runtime@1.11.3': + dependencies: + tslib: 2.8.1 + optional: true + + '@emotion/babel-plugin@11.13.5': + dependencies: + '@babel/helper-module-imports': 7.29.7 + '@babel/runtime': 7.29.10 + '@emotion/hash': 0.9.2 + '@emotion/memoize': 0.9.0 + '@emotion/serialize': 1.3.3 + babel-plugin-macros: 3.1.0 + convert-source-map: 1.9.0 + escape-string-regexp: 4.0.0 + find-root: 1.1.0 + source-map: 0.5.7 + stylis: 4.2.0 + transitivePeerDependencies: + - supports-color + + '@emotion/cache@11.14.0': + dependencies: + '@emotion/memoize': 0.9.0 + '@emotion/sheet': 1.4.0 + '@emotion/utils': 1.4.2 + '@emotion/weak-memoize': 0.4.0 + stylis: 4.2.0 + + '@emotion/css@11.13.5': + dependencies: + '@emotion/babel-plugin': 11.13.5 + '@emotion/cache': 11.14.0 + '@emotion/serialize': 1.3.3 + '@emotion/sheet': 1.4.0 + '@emotion/utils': 1.4.2 + transitivePeerDependencies: + - supports-color + + '@emotion/hash@0.9.2': {} + + '@emotion/memoize@0.9.0': {} + + '@emotion/serialize@1.3.3': + dependencies: + '@emotion/hash': 0.9.2 + '@emotion/memoize': 0.9.0 + '@emotion/unitless': 0.10.0 + '@emotion/utils': 1.4.2 + csstype: 3.2.3 + + '@emotion/sheet@1.4.0': {} + + '@emotion/unitless@0.10.0': {} + + '@emotion/utils@1.4.2': {} + + '@emotion/weak-memoize@0.4.0': {} + + '@floating-ui/core@1.8.0': + dependencies: + '@floating-ui/utils': 0.2.12 + + '@floating-ui/dom@1.8.0': + dependencies: + '@floating-ui/core': 1.8.0 + '@floating-ui/utils': 0.2.12 + + '@floating-ui/react-dom@2.1.9(react-dom@19.3.1(react@19.3.1))(react@19.3.1)': + dependencies: + '@floating-ui/dom': 1.8.0 + react: 19.3.1 + react-dom: 19.3.1(react@19.3.1) + + '@floating-ui/react@0.27.12(react-dom@19.3.1(react@19.3.1))(react@19.3.1)': + dependencies: + '@floating-ui/react-dom': 2.1.9(react-dom@19.3.1(react@19.3.1))(react@19.3.1) + '@floating-ui/utils': 0.2.12 + react: 19.3.1 + react-dom: 19.3.1(react@19.3.1) + tabbable: 6.5.0 + + '@floating-ui/utils@0.2.12': {} + + '@img/colour@1.1.0': + optional: true + + '@img/sharp-darwin-arm64@0.35.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.3.4 + optional: true + + '@img/sharp-darwin-x64@0.35.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.3.4 + optional: true + + '@img/sharp-freebsd-wasm32@0.35.5': + dependencies: + '@img/sharp-wasm32': 0.35.5 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.3.4': + optional: true + + '@img/sharp-libvips-darwin-x64@1.3.4': + optional: true + + '@img/sharp-libvips-linux-arm64@1.3.4': + optional: true + + '@img/sharp-libvips-linux-arm@1.3.4': + optional: true + + '@img/sharp-libvips-linux-ppc64@1.3.4': + optional: true + + '@img/sharp-libvips-linux-riscv64@1.3.4': + optional: true + + '@img/sharp-libvips-linux-s390x@1.3.4': + optional: true + + '@img/sharp-libvips-linux-x64@1.3.4': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.3.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.3.4': + optional: true + + '@img/sharp-linux-arm64@0.35.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.3.4 + optional: true + + '@img/sharp-linux-arm@0.35.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.3.4 + optional: true + + '@img/sharp-linux-ppc64@0.35.5': + optionalDependencies: + '@img/sharp-libvips-linux-ppc64': 1.3.4 + optional: true + + '@img/sharp-linux-riscv64@0.35.5': + optionalDependencies: + '@img/sharp-libvips-linux-riscv64': 1.3.4 + optional: true + + '@img/sharp-linux-s390x@0.35.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.3.4 + optional: true + + '@img/sharp-linux-x64@0.35.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.3.4 + optional: true + + '@img/sharp-linuxmusl-arm64@0.35.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.3.4 + optional: true + + '@img/sharp-linuxmusl-x64@0.35.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.3.4 + optional: true + + '@img/sharp-wasm32@0.35.5': + dependencies: + '@emnapi/runtime': 1.11.3 + optional: true + + '@img/sharp-webcontainers-wasm32@0.35.5': + dependencies: + '@img/sharp-wasm32': 0.35.5 + optional: true + + '@img/sharp-win32-arm64@0.35.5': + optional: true + + '@img/sharp-win32-ia32@0.35.5': + optional: true + + '@img/sharp-win32-x64@0.35.5': + optional: true + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.6.0 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.6.0': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.6.0 + + '@next/env@15.5.28': {} + + '@next/swc-darwin-arm64@15.5.28': + optional: true + + '@next/swc-darwin-x64@15.5.28': + optional: true + + '@next/swc-linux-arm64-gnu@15.5.28': + optional: true + + '@next/swc-linux-arm64-musl@15.5.28': + optional: true + + '@next/swc-linux-x64-gnu@15.5.28': + optional: true + + '@next/swc-linux-x64-musl@15.5.28': + optional: true + + '@next/swc-win32-arm64-msvc@15.5.28': + optional: true + + '@next/swc-win32-x64-msvc@15.5.28': + optional: true + + '@swc/helpers@0.5.15': + dependencies: + tslib: 2.8.1 + + '@thunderid/browser@1.3.0': + dependencies: + '@thunderid/javascript': 1.4.0 + base64url: 3.0.1 + buffer: 6.0.3 + core-js: 3.42.0 + fast-sha256: 1.3.0 + jose: 6.2.3 + process: 0.11.10 + randombytes: 2.1.0 + stream-browserify: 3.0.0 + tslib: 2.8.1 + + '@thunderid/javascript@1.4.0': + dependencies: + jose: 6.2.3 + tslib: 2.8.1 + + '@thunderid/nextjs@1.3.0(next@15.5.28(@types/node@24.19.2)(react-dom@19.3.1(react@19.3.1))(react@19.3.1))(react-dom@19.3.1(react@19.3.1))(react@19.3.1)': + dependencies: + '@thunderid/node': 1.3.0 + '@thunderid/react': 1.4.0(@types/react@19.2.14)(react-dom@19.3.1(react@19.3.1))(react@19.3.1) + '@types/react': 19.2.14 + jose: 6.2.3 + next: 15.5.28(@types/node@24.19.2)(react-dom@19.3.1(react@19.3.1))(react@19.3.1) + react: 19.3.1 + tslib: 2.8.1 + transitivePeerDependencies: + - encoding + - react-dom + - supports-color + + '@thunderid/node@1.3.0': + dependencies: + '@thunderid/javascript': 1.4.0 + base64url: 3.0.1 + cross-fetch: 4.1.0 + fast-sha256: 1.3.0 + jose: 6.2.3 + memory-cache: 0.2.0 + secure-random-bytes: 5.0.1 + tslib: 2.8.1 + uuid: 11.1.1 + transitivePeerDependencies: + - encoding + + '@thunderid/react@1.4.0(@types/react@19.2.14)(react-dom@19.3.1(react@19.3.1))(react@19.3.1)': + dependencies: + '@emotion/css': 11.13.5 + '@floating-ui/react': 0.27.12(react-dom@19.3.1(react@19.3.1))(react@19.3.1) + '@thunderid/browser': 1.3.0 + '@types/react': 19.2.14 + dompurify: 3.4.13 + react: 19.3.1 + react-dom: 19.3.1(react@19.3.1) + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@types/node@24.19.2': + dependencies: + undici-types: 7.24.6 + + '@types/parse-json@4.0.2': {} + + '@types/react-dom@19.3.0(@types/react@19.3.0)': + dependencies: + '@types/react': 19.3.0 + + '@types/react@19.2.14': + dependencies: + csstype: 3.2.3 + + '@types/react@19.3.0': + dependencies: + csstype: 3.2.3 + + '@types/trusted-types@2.0.7': + optional: true + + babel-plugin-macros@3.1.0: + dependencies: + '@babel/runtime': 7.29.10 + cosmiconfig: 7.1.0 + resolve: 1.22.13 + + base64-js@1.5.1: {} + + base64url@3.0.1: {} + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + callsites@3.1.0: {} + + caniuse-lite@1.0.30001816: {} + + client-only@0.0.1: {} + + convert-source-map@1.9.0: {} + + core-js@3.42.0: {} + + cosmiconfig@7.1.0: + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.1 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.3 + + cross-fetch@4.1.0: + dependencies: + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + + csstype@3.2.3: {} + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + detect-libc@2.1.2: + optional: true + + dom-walk@0.1.2: {} + + dompurify@3.4.13: + optionalDependencies: + '@types/trusted-types': 2.0.7 + + error-ex@1.3.4: + dependencies: + is-arrayish: 0.2.1 + + es-errors@1.3.0: {} + + escape-string-regexp@4.0.0: {} + + fast-sha256@1.3.0: {} + + find-root@1.1.0: {} + + function-bind@1.1.2: {} + + get-random-values@3.0.0: + dependencies: + global: 4.4.0 + + global@4.4.0: + dependencies: + min-document: 2.19.2 + process: 0.11.10 + + hasown@2.0.4: + dependencies: + function-bind: 1.1.2 + + ieee754@1.2.1: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + inherits@2.0.4: {} + + is-arrayish@0.2.1: {} + + is-core-module@2.17.0: + dependencies: + hasown: 2.0.4 + + jose@6.2.3: {} + + js-tokens@4.0.0: {} + + jsesc@3.1.0: {} + + json-parse-even-better-errors@2.3.1: {} + + lines-and-columns@1.2.4: {} + + memory-cache@0.2.0: {} + + min-document@2.19.2: + dependencies: + dom-walk: 0.1.2 + + ms@2.1.3: {} + + nanoid@3.3.20: {} + + next@15.5.28(@types/node@24.19.2)(react-dom@19.3.1(react@19.3.1))(react@19.3.1): + dependencies: + '@next/env': 15.5.28 + '@swc/helpers': 0.5.15 + caniuse-lite: 1.0.30001816 + postcss: 8.5.23 + react: 19.3.1 + react-dom: 19.3.1(react@19.3.1) + styled-jsx: 5.1.6(react@19.3.1) + optionalDependencies: + '@next/swc-darwin-arm64': 15.5.28 + '@next/swc-darwin-x64': 15.5.28 + '@next/swc-linux-arm64-gnu': 15.5.28 + '@next/swc-linux-arm64-musl': 15.5.28 + '@next/swc-linux-x64-gnu': 15.5.28 + '@next/swc-linux-x64-musl': 15.5.28 + '@next/swc-win32-arm64-msvc': 15.5.28 + '@next/swc-win32-x64-msvc': 15.5.28 + sharp: 0.35.5(@types/node@24.19.2) + transitivePeerDependencies: + - '@babel/core' + - '@types/node' + - babel-plugin-macros + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.29.7 + error-ex: 1.3.4 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + path-parse@1.0.7: {} + + path-type@4.0.0: {} + + picocolors@1.1.1: {} + + postcss@8.5.23: + dependencies: + nanoid: 3.3.20 + picocolors: 1.1.1 + source-map-js: 1.2.2 + + process@0.11.10: {} + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + react-dom@19.3.1(react@19.3.1): + dependencies: + react: 19.3.1 + scheduler: 0.28.0 + + react@19.3.1: {} + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + resolve-from@4.0.0: {} + + resolve@1.22.13: + dependencies: + es-errors: 1.3.0 + is-core-module: 2.17.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + safe-buffer@5.2.1: {} + + scheduler@0.28.0: {} + + secure-random-bytes@5.0.1: + dependencies: + secure-random-octet: 4.0.1 + + secure-random-octet@4.0.1: + dependencies: + get-random-values: 3.0.0 + + semver@7.8.5: + optional: true + + sharp@0.35.5(@types/node@24.19.2): + dependencies: + '@img/colour': 1.1.0 + detect-libc: 2.1.2 + semver: 7.8.5 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.35.5 + '@img/sharp-darwin-x64': 0.35.5 + '@img/sharp-freebsd-wasm32': 0.35.5 + '@img/sharp-libvips-darwin-arm64': 1.3.4 + '@img/sharp-libvips-darwin-x64': 1.3.4 + '@img/sharp-libvips-linux-arm': 1.3.4 + '@img/sharp-libvips-linux-arm64': 1.3.4 + '@img/sharp-libvips-linux-ppc64': 1.3.4 + '@img/sharp-libvips-linux-riscv64': 1.3.4 + '@img/sharp-libvips-linux-s390x': 1.3.4 + '@img/sharp-libvips-linux-x64': 1.3.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.3.4 + '@img/sharp-libvips-linuxmusl-x64': 1.3.4 + '@img/sharp-linux-arm': 0.35.5 + '@img/sharp-linux-arm64': 0.35.5 + '@img/sharp-linux-ppc64': 0.35.5 + '@img/sharp-linux-riscv64': 0.35.5 + '@img/sharp-linux-s390x': 0.35.5 + '@img/sharp-linux-x64': 0.35.5 + '@img/sharp-linuxmusl-arm64': 0.35.5 + '@img/sharp-linuxmusl-x64': 0.35.5 + '@img/sharp-webcontainers-wasm32': 0.35.5 + '@img/sharp-win32-arm64': 0.35.5 + '@img/sharp-win32-ia32': 0.35.5 + '@img/sharp-win32-x64': 0.35.5 + '@types/node': 24.19.2 + optional: true + + source-map-js@1.2.2: {} + + source-map@0.5.7: {} + + stream-browserify@3.0.0: + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + styled-jsx@5.1.6(react@19.3.1): + dependencies: + client-only: 0.0.1 + react: 19.3.1 + + stylis@4.2.0: {} + + supports-preserve-symlinks-flag@1.0.0: {} + + tabbable@6.5.0: {} + + tr46@0.0.3: {} + + tslib@2.8.1: {} + + typescript@5.9.3: {} + + undici-types@7.24.6: {} + + util-deprecate@1.0.2: {} + + uuid@11.1.1: {} + + webidl-conversions@3.0.1: {} + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + yaml@1.10.3: {} diff --git a/quickstarts/nextjs/pnpm-workspace.yaml b/quickstarts/nextjs/pnpm-workspace.yaml new file mode 100644 index 0000000..f8d813f --- /dev/null +++ b/quickstarts/nextjs/pnpm-workspace.yaml @@ -0,0 +1,10 @@ +allowBuilds: + core-js: false + +overrides: + # JUSTIFICATION: Fixes GHSA-6g55-p6wh-862q / GHSA-r28c-9q8g-f849 / GHSA-fxqj-rqcc-2cmp (arbitrary + # file read via attacker-controlled `sourceMappingURL`) and GHSA-qx2v-qp2m-jg93 (XSS via unescaped + # `` in stringify output). Transitive via `@thunderid/nextjs` > `next`, which still bundles + # `postcss@8.4.31` internally even on the latest 15.5.x release. Keep the override until Next.js + # bumps its own postcss pin (https://github.com/vercel/next.js). + postcss: 8.5.23 diff --git a/quickstarts/nextjs/proxy.ts b/quickstarts/nextjs/proxy.ts new file mode 100644 index 0000000..bada0be --- /dev/null +++ b/quickstarts/nextjs/proxy.ts @@ -0,0 +1,13 @@ +import {thunderIDProxy, createRouteMatcher} from '@thunderid/nextjs/server' + +const isProtectedRoute = createRouteMatcher(['/dashboard(.*)']) + +export default thunderIDProxy(async (thunderid, request) => { + if (isProtectedRoute(request)) { + await thunderid.protectRoute() + } +}) + +export const config = { + matcher: ['/((?!_next/static|_next/image|favicon.ico).*)'], +} diff --git a/quickstarts/nextjs/scripts/prepare-dev.cjs b/quickstarts/nextjs/scripts/prepare-dev.cjs new file mode 100644 index 0000000..1e74cc2 --- /dev/null +++ b/quickstarts/nextjs/scripts/prepare-dev.cjs @@ -0,0 +1,78 @@ +// Copyright 2026 The ThunderID Authors +// SPDX-License-Identifier: Apache-2.0 + +const fs = require('node:fs'); +const path = require('node:path'); + +const root = path.join(__dirname, '..'); + +const PREFIX = 'NEXT_PUBLIC_THUNDERID_'; +const NATIVE_FLOW_VARS = [ + `${PREFIX}APPLICATION_ID`, + `${PREFIX}SIGN_IN_URL`, + `${PREFIX}SIGN_UP_URL`, + 'THUNDERID_FLOW_SECRET', +]; +const REDIRECT_FLOW_VARS = [`${PREFIX}CLIENT_ID`, 'THUNDERID_CLIENT_SECRET']; +const REDIRECT_FLOW_PLACEHOLDERS = { + [`${PREFIX}CLIENT_ID`]: 'your-client-id-here', + THUNDERID_CLIENT_SECRET: 'your-client-secret-here', +}; + +const flowArg = process.argv.find((arg) => arg.startsWith('--flow=')); +const flowExplicitlyRequested = Boolean(flowArg); +const flow = flowArg ? flowArg.slice('--flow='.length) : 'native'; + +if (flowExplicitlyRequested && flow !== 'native' && flow !== 'redirect') { + console.error(`Unknown --flow value "${flow}". Expected "native" or "redirect".`); + process.exit(1); +} + +/** + * Toggles the leading `# ` on env var lines to match the selected flow, appending + * any vars for the selected flow that aren't present in the source file yet (the + * redirect-flow vars aren't checked into `.env.example`, so switching to `redirect` + * from a fresh copy needs to add them rather than just uncomment them). + */ +function applyFlow(envContent, selectedFlow) { + const varsToEnable = selectedFlow === 'redirect' ? REDIRECT_FLOW_VARS : NATIVE_FLOW_VARS; + const varsToDisable = selectedFlow === 'redirect' ? NATIVE_FLOW_VARS : REDIRECT_FLOW_VARS; + const found = new Set(); + + const lines = envContent.split('\n').map((line) => { + const enable = varsToEnable.find((key) => line.replace(/^#\s*/, '').startsWith(`${key}=`)); + if (enable) { + found.add(enable); + return line.replace(/^#\s*/, ''); + } + + const disable = varsToDisable.find((key) => line.startsWith(`${key}=`)); + if (disable) return `# ${line}`; + + return line; + }); + + const missing = varsToEnable.filter((key) => !found.has(key)); + if (missing.length > 0) { + lines.push('', `# ── ${selectedFlow} flow ─────────────────────────────────────────────────`); + for (const key of missing) lines.push(`${key}=${REDIRECT_FLOW_PLACEHOLDERS[key] ?? ''}`); + } + + return lines.join('\n'); +} + +const envExample = path.join(root, '.env.example'); +const envTarget = path.join(root, '.env'); + +// Only explicit `--flow=` invocations are allowed to (re)write an existing +// .env β€” a plain `npm run prepare-dev` (e.g. from .stackblitzrc's +// startCommand) stays a safe, idempotent copy-if-missing. +if (fs.existsSync(envExample) && (flowExplicitlyRequested || !fs.existsSync(envTarget))) { + const envSource = fs.existsSync(envTarget) ? envTarget : envExample; + const envContent = applyFlow(fs.readFileSync(envSource, 'utf8'), flow) + // Blank placeholder values (e.g. `your-client-id-here`, the sample base URL) + // so the copied .env still trips the app's missing-env-var check until real + // values are filled in. + .replace(/^([A-Z0-9_]+)=(your-\S*|generate-with-\S*|https:\/\/localhost:8090)$/gm, '$1='); + fs.writeFileSync(envTarget, envContent); +} diff --git a/quickstarts/nextjs/tsconfig.json b/quickstarts/nextjs/tsconfig.json new file mode 100644 index 0000000..fba2bf3 --- /dev/null +++ b/quickstarts/nextjs/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "target": "ES2017", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [{ "name": "next" }], + "paths": { "@/*": ["./src/*"] } + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "exclude": ["node_modules"] +} diff --git a/quickstarts/node/.env.example b/quickstarts/node/.env.example new file mode 100644 index 0000000..a45eda1 --- /dev/null +++ b/quickstarts/node/.env.example @@ -0,0 +1,14 @@ +# Base URL of your ThunderID deployment. ex: https://localhost:8090 +THUNDERID_BASE_URL=https://localhost:8090 + +# OAuth2 Client ID for this service. ThunderID Console -> your application -> Overview. +THUNDERID_CLIENT_ID=your-client-id +# OAuth2 Client Secret for this service. Shown once when the application is created; +# if lost, regenerate it from the app's Credentials tab (under Edit). +THUNDERID_CLIENT_SECRET=your-client-secret + +# Optional: space-separated scopes to request for this service. +THUNDERID_SCOPE= + +# DANGER: Disables ALL TLS verification. Only for local development with self-signed certs. NEVER use in production. +NODE_TLS_REJECT_UNAUTHORIZED=0 diff --git a/quickstarts/node/.gitignore b/quickstarts/node/.gitignore new file mode 100644 index 0000000..37d7e73 --- /dev/null +++ b/quickstarts/node/.gitignore @@ -0,0 +1,2 @@ +node_modules +.env diff --git a/quickstarts/node/.stackblitzrc b/quickstarts/node/.stackblitzrc new file mode 100644 index 0000000..5f0a200 --- /dev/null +++ b/quickstarts/node/.stackblitzrc @@ -0,0 +1,4 @@ +{ + "installDependencies": false, + "startCommand": "npm run prepare-dev && npm install && npm run dev" +} diff --git a/quickstarts/node/README.md b/quickstarts/node/README.md new file mode 100644 index 0000000..c833add --- /dev/null +++ b/quickstarts/node/README.md @@ -0,0 +1,79 @@ +# ThunderID Node.js Service Quickstart + +Open in StackBlitz + +A minimal machine-to-machine (service-to-service) client, using the ThunderID Node.js SDK +(`@thunderid/node`). Unlike the other quickstarts, there's no user and no browser sign-in: this +service authenticates as **itself** with the OAuth 2.0 `client_credentials` grant, then uses the +resulting access token to call another piece of business logic. + +This is the pattern to use for background jobs, cron tasks, or one backend service calling +another, where there's no human in the loop to redirect through a login page. + +The sample is organized the way a real backend usually is, with authentication kept in its own +service instead of scattered across business logic: + +```text +quickstarts/node/ +β”œβ”€β”€ index.mjs Wires the services together and prints the result +└── lib/ + β”œβ”€β”€ AuthService.mjs Acquires and caches this service's own access token + β”œβ”€β”€ InventoryService.mjs Business logic; asks AuthService for a token before answering + └── ui.mjs Terminal output, built on boxen and picocolors +``` + +## How it works + +- `lib/AuthService.mjs` initializes `ThunderIDNodeClient` with `grantType: 'client_credentials'`. + With that set, `getAccessToken()` authenticates as the service itself (no session, no sign-in) + and transparently fetches, caches, and refreshes the token, the same method a user-facing + quickstart would call to read an existing session's token, just authenticating as the service + itself instead of a signed-in user. +- `lib/InventoryService.mjs` is the business logic that needs a token before it can act. It asks + `AuthService` for one; the rest of the app never handles a token or an `Authorization` header + directly. In a real deployment, `InventoryService` would send that token to a separate inventory + backend over HTTP, in place of another service calling `AuthService`'s owner the same way. + +## Prerequisites + +- Node.js 18+ +- A running ThunderID instance (default: `https://localhost:8090`) +- A **Backend Service** application registered in ThunderID + +## Create an application + +1. Open the ThunderID Console (`https://localhost:8090/console`), navigate to **Applications**, and + click **Add Application**. +2. From the **Choose a type** page, select **Backend Service**. +3. Enter a name (e.g. `node-service-quickstart`) and create the application. Backend Service apps + are pre-configured for the `client_credentials` grant with `client_secret_basic` authentication, + no extra setup needed. +4. Copy the **Client ID** from the **General** tab, and the **Client Secret** from the window that + pops up when the application is created (shown only once), you'll need them below. + +## Getting started + +1. Copy the environment file and fill in your application's credentials: + ```sh + cp .env.example .env + ``` + ``` + THUNDERID_CLIENT_ID= + THUNDERID_CLIENT_SECRET= + THUNDERID_BASE_URL=https://localhost:8090 + ``` + +2. Install dependencies and run it: + ```sh + npm install + npm start + ``` + +The script authenticates once, then calls `InventoryService.getStock()` for a few SKUs and prints +the result before exiting: a scope line, then an `Inventory` panel with one line per SKU, green +for in-stock items, yellow for out-of-stock, red for a SKU that doesn't exist. + +## Learn more + +- [ThunderID Docs](https://thunderid.dev/docs) +- [OAuth 2.0 Client Credentials Grant (RFC 6749 Β§4.4)](https://www.rfc-editor.org/rfc/rfc6749#section-4.4) diff --git a/quickstarts/node/index.mjs b/quickstarts/node/index.mjs new file mode 100644 index 0000000..8d01c87 --- /dev/null +++ b/quickstarts/node/index.mjs @@ -0,0 +1,42 @@ +import {AuthService} from './lib/AuthService.mjs'; +import {InventoryService} from './lib/InventoryService.mjs'; +import {printIntro, printConfigNeeded, printAuthenticated, printInventory} from './lib/ui.mjs'; + +printIntro(); + +const REQUIRED_ENV_VARS = ['THUNDERID_CLIENT_ID', 'THUNDERID_CLIENT_SECRET']; +const missingEnvVars = REQUIRED_ENV_VARS.filter((key) => !process.env[key]); + +if (missingEnvVars.length > 0) { + printConfigNeeded(missingEnvVars); + process.exit(1); +} + +const THUNDER_BASE_URL = process.env.THUNDERID_BASE_URL || 'https://localhost:8090'; + +// AuthService authenticates as this service itself (grantType: 'client_credentials'), +// no user and no browser sign-in, unlike the express/react/etc quickstarts, which +// authenticate a human through a login page. +const auth = new AuthService({ + baseUrl: THUNDER_BASE_URL, + clientId: process.env.THUNDERID_CLIENT_ID, + clientSecret: process.env.THUNDERID_CLIENT_SECRET, + scopes: process.env.THUNDERID_SCOPE, +}); + +const inventory = new InventoryService({auth}); + +const accessToken = await auth.getAccessToken(); +const {scope} = await auth.decodeAccessToken(accessToken); +printAuthenticated({baseUrl: THUNDER_BASE_URL, clientId: process.env.THUNDERID_CLIENT_ID, scope}); + +const rows = []; +for (const sku of ['SKU-100', 'SKU-200', 'SKU-300', 'SKU-999']) { + try { + const item = await inventory.getStock(sku); + rows.push({sku, name: item.name, stock: item.stock}); + } catch (error) { + rows.push({sku, error: error.message}); + } +} +printInventory(rows); diff --git a/quickstarts/node/lib/AuthService.mjs b/quickstarts/node/lib/AuthService.mjs new file mode 100644 index 0000000..e827c15 --- /dev/null +++ b/quickstarts/node/lib/AuthService.mjs @@ -0,0 +1,33 @@ +import {ThunderIDNodeClient} from '@thunderid/node'; + +/** + * Authenticates this service as itself with the OAuth 2.0 client_credentials + * grant, no user, no browser sign-in. Other services in this process (or a + * real deployment) ask AuthService for a token instead of talking to + * ThunderIDNodeClient directly, so the authentication concern stays in one + * place and out of business logic like InventoryService. + */ +export class AuthService { + #client = new ThunderIDNodeClient(); + #ready; + + constructor({baseUrl, clientId, clientSecret, scopes}) { + this.#ready = this.#client.initialize({ + baseUrl, + clientId, + clientSecret, + grantType: 'client_credentials', + scopes, + }); + } + + /** Fetches (or reuses the cached) access token for this service's own identity. */ + async getAccessToken() { + await this.#ready; + return this.#client.getAccessToken(); + } + + async decodeAccessToken(accessToken) { + return this.#client.decodeJwtToken(accessToken); + } +} diff --git a/quickstarts/node/lib/InventoryService.mjs b/quickstarts/node/lib/InventoryService.mjs new file mode 100644 index 0000000..9897c79 --- /dev/null +++ b/quickstarts/node/lib/InventoryService.mjs @@ -0,0 +1,29 @@ +const CATALOG = { + 'SKU-100': {sku: 'SKU-100', name: 'Wireless Mouse', stock: 42}, + 'SKU-200': {sku: 'SKU-200', name: 'Mechanical Keyboard', stock: 7}, + 'SKU-300': {sku: 'SKU-300', name: '4K Monitor', stock: 0}, +}; + +/** + * Business logic for a service that needs to call another backend. It asks + * AuthService for a token before answering, so the rest of the app never + * handles a token or an Authorization header directly. In a real deployment + * this would send the token to a separate inventory service over HTTP + * instead of just holding it in-process. + */ +export class InventoryService { + constructor({auth}) { + this.auth = auth; + } + + async getStock(sku) { + // A real backend would attach this as `Authorization: Bearer ${accessToken}` + // on the request to the inventory service; here it just proves the token + // was obtained before answering. + await this.auth.getAccessToken(); + + const item = CATALOG[sku]; + if (!item) throw new Error(`No item with SKU ${sku}`); + return item; + } +} diff --git a/quickstarts/node/lib/ui.mjs b/quickstarts/node/lib/ui.mjs new file mode 100644 index 0000000..f234454 --- /dev/null +++ b/quickstarts/node/lib/ui.mjs @@ -0,0 +1,89 @@ +import boxen from 'boxen'; +import pc from 'picocolors'; + +const BRAND = '#3688FF'; +const ORANGE = '#e88b3a'; + +function indent(text) { + return text + .split('\n') + .map((line) => ` ${line}`) + .join('\n'); +} + +function badge(label, colorFn) { + const line = pc.dim('──────'); + return `${line} ${pc.bold(colorFn(label.toUpperCase()))} ${line}`; +} + +function box(content, {title, borderColor}) { + return boxen(content, { + title, + titleAlignment: 'left', + padding: {top: 0, bottom: 0, left: 1, right: 1}, + borderStyle: 'round', + borderColor, + }); +} + +export function printIntro() { + console.log(); + console.log(indent(pc.bold('ThunderID Node Service Quickstart'))); + console.log(indent(pc.dim('Service-to-service auth via OAuth 2.0 client_credentials'))); + console.log(); +} + +export function printConfigNeeded(missingEnvVars) { + console.log(indent(badge('Setup required', pc.yellow))); + console.log(); + console.log(indent(pc.bold('Configuration needed'))); + console.log( + indent( + pc.dim( + "This quickstart can't reach ThunderID yet. Set the following environment variable(s), then run again.", + ), + ), + ); + console.log(); + console.log(indent(box(missingEnvVars.map((key) => pc.red(key)).join('\n'), {borderColor: ORANGE}))); + console.log(); + console.log( + indent( + pc.dim('Copy ') + + pc.cyan('.env.example') + + pc.dim(' to ') + + pc.cyan('.env') + + pc.dim(', fill in the client credentials for your application, then run ') + + pc.cyan('npm start') + + pc.dim(' again.'), + ), + ); + console.log(); + console.log( + indent( + pc.dim('Need more info? Take a look at the Node quickstart guide: ') + + pc.cyan('https://thunderid.dev/docs/next/getting-started/connect-your-application/node/'), + ), + ); + console.log(); +} + +export function printAuthenticated({baseUrl, clientId, scope}) { + console.log(indent(`${pc.bgGreen(pc.black(' ● AUTHENTICATED '))} ${pc.dim('client_credentials grant')}`)); + console.log(); + console.log(indent(`${pc.dim('BASE URL')} ${baseUrl}`)); + console.log(indent(`${pc.dim('CLIENT ID')} ${clientId}`)); + console.log(indent(`${pc.dim('SCOPE')} ${scope || pc.dim('(none requested)')}`)); + console.log(); +} + +export function printInventory(rows) { + const lines = rows.map(({sku, name, stock, error}) => { + const label = pc.bold(sku.padEnd(9)); + if (error) return `${label} ${pc.red(error)}`; + const stockText = stock > 0 ? pc.green(`${stock} in stock`) : pc.yellow('out of stock'); + return `${label} ${name.padEnd(20)} ${stockText}`; + }); + console.log(indent(box(lines.join('\n'), {title: 'Inventory', borderColor: BRAND}))); + console.log(); +} diff --git a/quickstarts/node/package.json b/quickstarts/node/package.json new file mode 100644 index 0000000..0b6ced2 --- /dev/null +++ b/quickstarts/node/package.json @@ -0,0 +1,16 @@ +{ + "name": "@thunderid/node-quickstart", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "prepare-dev": "node scripts/prepare-dev.cjs", + "start": "node --env-file-if-exists=.env index.mjs", + "dev": "node --env-file-if-exists=.env --watch index.mjs" + }, + "dependencies": { + "@thunderid/node": "1.3.0", + "boxen": "^8.0.1", + "picocolors": "^1.1.1" + } +} diff --git a/quickstarts/node/pnpm-lock.yaml b/quickstarts/node/pnpm-lock.yaml new file mode 100644 index 0000000..b25f74b --- /dev/null +++ b/quickstarts/node/pnpm-lock.yaml @@ -0,0 +1,315 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@thunderid/node': + specifier: 1.3.0 + version: 1.3.0 + boxen: + specifier: ^8.0.1 + version: 8.0.1 + picocolors: + specifier: ^1.1.1 + version: 1.1.1 + +packages: + + '@thunderid/javascript@1.4.0': + resolution: {integrity: sha512-qHfIFzXOQTN1nhuBT91Tr8bLPvfyEDa7gUQSL7GNcJkcyyKfJ77meIwr91lCme0ySFUnTeKl0Bk+R8iIJiKXBw==} + + '@thunderid/node@1.3.0': + resolution: {integrity: sha512-hAFf4Bv3JZTcatF7Y/iarbd3lYLbIkz6SHzGKG5HOwh/a/Ip8qpu7u4npF6/0cNzrvZzY5g6awIymsIav75Xqw==} + + ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.4.0: + resolution: {integrity: sha512-KzTVk2tCWAHtYrvvvaP8bJKJq2pVinhLcGEQdtLIYPbmNGNyYe8QwNaTUYQp2J7/vIsUKt5QCqAfUkYyG9DkOw==} + engines: {node: '>=12'} + + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} + + base64url@3.0.1: + resolution: {integrity: sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==} + engines: {node: '>=6.0.0'} + + boxen@8.0.1: + resolution: {integrity: sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==} + engines: {node: '>=18'} + + camelcase@8.0.0: + resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} + engines: {node: '>=16'} + + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + cli-boxes@3.0.0: + resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} + engines: {node: '>=10'} + + cross-fetch@4.1.0: + resolution: {integrity: sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==} + + dom-walk@0.1.2: + resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} + + emoji-regex@10.6.0: + resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + fast-sha256@1.3.0: + resolution: {integrity: sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ==} + + get-east-asian-width@1.7.0: + resolution: {integrity: sha512-XjH1AECxf0giL2V1aU8vKyRR2ppRUb5c0EvT7zuJTokQ74bNo52zOtghqdWIqrhUD79fo3x0WfKZdOqxF6LG1Q==} + engines: {node: '>=18'} + + get-random-values@3.0.0: + resolution: {integrity: sha512-mNznaBdYcpz7UAdnOtDGcLdNwAa79mXl5htEyyZ51YaeAWNf2g4x/2yCVBdNNTbi35wX0Stc2PJXM7G6rcONOA==} + engines: {node: 18 || >=20} + + global@4.4.0: + resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + jose@6.2.3: + resolution: {integrity: sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==} + + memory-cache@0.2.0: + resolution: {integrity: sha512-OcjA+jzjOYzKmKS6IQVALHLVz+rNTMPoJvCztFaZxwG14wtAW7VRZjwTQu06vKCYOxh4jVnik7ya0SXTB0W+xA==} + + min-document@2.19.2: + resolution: {integrity: sha512-8S5I8db/uZN8r9HSLFVWPdJCvYOejMcEC82VIzNUc6Zkklf/d1gg2psfE79/vyhWOj4+J8MtwmoOz3TmvaGu5A==} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + secure-random-bytes@5.0.1: + resolution: {integrity: sha512-48nvkahmdyoRbHW/x1HTGIk+i2/84MHFBB+rZ50cg1y/p2RjKG+fhTMQKZx4QD6T6/o2M2WHLPkncqQpjMMsUw==} + engines: {node: 18 || >=20} + + secure-random-octet@4.0.1: + resolution: {integrity: sha512-KEeg9wGi/96Q8Edp97gt5Z5dYCcvG7vPKdKFq6rPLCHtaaHwZKbhbC+gY74O7OjX8Fnels49wqc8IgkNhBJZfw==} + engines: {node: 18 || >=20} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} + engines: {node: '>=12'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + type-fest@4.41.0: + resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} + engines: {node: '>=16'} + + uuid@11.1.1: + resolution: {integrity: sha512-vIYxrBCC/N/K+Js3qSN88go7kIfNPssr/hHCesKCQNAjmgvYS2oqr69kIufEG+O4+PfezOH4EbIeHCfFov8ZgQ==} + hasBin: true + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + widest-line@5.0.0: + resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==} + engines: {node: '>=18'} + + wrap-ansi@9.0.2: + resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} + engines: {node: '>=18'} + +snapshots: + + '@thunderid/javascript@1.4.0': + dependencies: + jose: 6.2.3 + tslib: 2.8.1 + + '@thunderid/node@1.3.0': + dependencies: + '@thunderid/javascript': 1.4.0 + base64url: 3.0.1 + cross-fetch: 4.1.0 + fast-sha256: 1.3.0 + jose: 6.2.3 + memory-cache: 0.2.0 + secure-random-bytes: 5.0.1 + tslib: 2.8.1 + uuid: 11.1.1 + transitivePeerDependencies: + - encoding + + ansi-align@3.0.1: + dependencies: + string-width: 4.2.3 + + ansi-regex@5.0.1: {} + + ansi-regex@6.4.0: {} + + ansi-styles@6.2.3: {} + + base64url@3.0.1: {} + + boxen@8.0.1: + dependencies: + ansi-align: 3.0.1 + camelcase: 8.0.0 + chalk: 5.6.2 + cli-boxes: 3.0.0 + string-width: 7.2.0 + type-fest: 4.41.0 + widest-line: 5.0.0 + wrap-ansi: 9.0.2 + + camelcase@8.0.0: {} + + chalk@5.6.2: {} + + cli-boxes@3.0.0: {} + + cross-fetch@4.1.0: + dependencies: + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + + dom-walk@0.1.2: {} + + emoji-regex@10.6.0: {} + + emoji-regex@8.0.0: {} + + fast-sha256@1.3.0: {} + + get-east-asian-width@1.7.0: {} + + get-random-values@3.0.0: + dependencies: + global: 4.4.0 + + global@4.4.0: + dependencies: + min-document: 2.19.2 + process: 0.11.10 + + is-fullwidth-code-point@3.0.0: {} + + jose@6.2.3: {} + + memory-cache@0.2.0: {} + + min-document@2.19.2: + dependencies: + dom-walk: 0.1.2 + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + picocolors@1.1.1: {} + + process@0.11.10: {} + + secure-random-bytes@5.0.1: + dependencies: + secure-random-octet: 4.0.1 + + secure-random-octet@4.0.1: + dependencies: + get-random-values: 3.0.0 + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@7.2.0: + dependencies: + emoji-regex: 10.6.0 + get-east-asian-width: 1.7.0 + strip-ansi: 7.2.0 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.2.0: + dependencies: + ansi-regex: 6.4.0 + + tr46@0.0.3: {} + + tslib@2.8.1: {} + + type-fest@4.41.0: {} + + uuid@11.1.1: {} + + webidl-conversions@3.0.1: {} + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + widest-line@5.0.0: + dependencies: + string-width: 7.2.0 + + wrap-ansi@9.0.2: + dependencies: + ansi-styles: 6.2.3 + string-width: 7.2.0 + strip-ansi: 7.2.0 diff --git a/quickstarts/node/scripts/prepare-dev.cjs b/quickstarts/node/scripts/prepare-dev.cjs new file mode 100644 index 0000000..734e095 --- /dev/null +++ b/quickstarts/node/scripts/prepare-dev.cjs @@ -0,0 +1,19 @@ +// Copyright 2026 The ThunderID Authors +// SPDX-License-Identifier: Apache-2.0 + +const fs = require('node:fs'); +const path = require('node:path'); + +const root = path.join(__dirname, '..'); + +const envExample = path.join(root, '.env.example'); +const envTarget = path.join(root, '.env'); +if (fs.existsSync(envExample) && !fs.existsSync(envTarget)) { + // Blank placeholder values (e.g. `your-client-id-here`, the sample base URL) + // so the copied .env still trips the app's missing-env-var check until real + // values are filled in. + const envContent = fs + .readFileSync(envExample, 'utf8') + .replace(/^([A-Z0-9_]+)=(your-\S*|generate-with-\S*|https:\/\/localhost:8090)$/gm, '$1='); + fs.writeFileSync(envTarget, envContent); +} diff --git a/quickstarts/nuxt/.env.example b/quickstarts/nuxt/.env.example new file mode 100644 index 0000000..fbeed8e --- /dev/null +++ b/quickstarts/nuxt/.env.example @@ -0,0 +1,20 @@ +# Base URL of your ThunderID deployment. ex: https://localhost:8090 +NUXT_PUBLIC_THUNDERID_BASE_URL=https://localhost:8090 + +# Flow Secret for this app. Sent in the `Flow-Secret` header to authenticate this app when the +# native (embedded) flow starts. Shown once when the application is created; if lost, regenerate it +# from the app's Credentials tab (under Edit). Server-only, never expose to the browser. +THUNDERID_FLOW_SECRET=your-flow-secret-here + +# Secret used to encrypt this app's session cookie. Generate locally, not from the console. +THUNDERID_SESSION_SECRET=generate-with-openssl-rand-base64-32 + +# Application ID (spId) for this app. ThunderID Console -> your application -> Overview. +NUXT_PUBLIC_THUNDERID_APPLICATION_ID=your-application-id-here +# Local app route that renders the sign-in page. Not from the console. +NUXT_PUBLIC_THUNDERID_SIGN_IN_URL=/signin +# Local app route that renders the sign-up page. Not from the console. +NUXT_PUBLIC_THUNDERID_SIGN_UP_URL=/signup + +# DANGER: Disables ALL TLS verification. Only for local development with self-signed certs. NEVER use in production. +NODE_TLS_REJECT_UNAUTHORIZED=0 diff --git a/quickstarts/nuxt/.gitignore b/quickstarts/nuxt/.gitignore new file mode 100644 index 0000000..227706d --- /dev/null +++ b/quickstarts/nuxt/.gitignore @@ -0,0 +1,5 @@ +node_modules +.nuxt +.output +.data +.env diff --git a/quickstarts/nuxt/.stackblitzrc b/quickstarts/nuxt/.stackblitzrc new file mode 100644 index 0000000..5f0a200 --- /dev/null +++ b/quickstarts/nuxt/.stackblitzrc @@ -0,0 +1,4 @@ +{ + "installDependencies": false, + "startCommand": "npm run prepare-dev && npm install && npm run dev" +} diff --git a/quickstarts/nuxt/README.md b/quickstarts/nuxt/README.md new file mode 100644 index 0000000..b07ef57 --- /dev/null +++ b/quickstarts/nuxt/README.md @@ -0,0 +1,119 @@ +# ThunderID Nuxt Quickstart + +Open in StackBlitz + +A minimal Nuxt 3 application demonstrating ThunderID authentication with OAuth 2.0, PKCE, and JWT out of the box. + +## Prerequisites + +- Node.js 18+ +- pnpm +- A ThunderID application + +## Getting started + +1. Copy the example environment file: + + ```bash + cp .env.example .env + ``` + +2. Fill in your ThunderID credentials in `.env`. By default the file is set up for the native flow: + + ```dotenv + NUXT_PUBLIC_THUNDERID_BASE_URL=https://localhost:8090 + NUXT_PUBLIC_THUNDERID_APPLICATION_ID= + NUXT_PUBLIC_THUNDERID_SIGN_IN_URL=/signin + NUXT_PUBLIC_THUNDERID_SIGN_UP_URL=/signup + THUNDERID_FLOW_SECRET= + THUNDERID_SESSION_SECRET= + ``` + +3. Start the development server: + + ```bash + pnpm dev + ``` + + The app is now running at [http://localhost:3000](http://localhost:3000). + +
    +

    Redirect-based flow

    + +By default this quickstart uses the native (embedded) flow, where sign-in/sign-up render inline on this +app's own `/signin` and `/signup` routes with no redirect to ThunderID's hosted pages. + +To send the user to ThunderID's hosted sign-in page instead, switch to the redirect-based flow: + +1. Register a redirect URI for your application (see the app's config notice in the console for the + exact value to use). +2. Regenerate `.env` for the redirect flow: + + ```bash + npm run prepare-dev:redirect + ``` + + This comments out the native-flow vars (`NUXT_PUBLIC_THUNDERID_APPLICATION_ID`, + `NUXT_PUBLIC_THUNDERID_SIGN_IN_URL`, `NUXT_PUBLIC_THUNDERID_SIGN_UP_URL`) and adds: + + ```dotenv + NUXT_PUBLIC_THUNDERID_CLIENT_ID= + THUNDERID_CLIENT_SECRET= + ``` + + Both values come from the application's Credentials tab in the console. The redirect-based flow + doesn't use `THUNDERID_FLOW_SECRET` (that's only sent when the native flow starts), so it can stay + set in `.env` from step 2 above, unused. To switch back to the native flow, run + `node scripts/prepare-dev.cjs --flow=native` (or manually re-enable the native-flow vars and comment + out the two above). +3. Fill in `NUXT_PUBLIC_THUNDERID_CLIENT_ID` and `THUNDERID_CLIENT_SECRET` in `.env`, then restart the + dev server. + +
    + +## Back-channel logout + +ThunderID can end this app's session itself. When the user's ThunderID session ends somewhere else, +for example by signing out of another application, ThunderID posts a logout token to this app. The +module serves the route once it is turned on in `nuxt.config.ts`: + +```ts +thunderid: { + backchannelLogout: { enabled: true }, +}, +``` + +The session lives in a cookie that only the browser can delete, so the SDK records the logout and +treats every later request with that session as signed out. + +To try it, use the redirect-based flow above, since the logout token is addressed to the client ID: + +1. In the ThunderID Console, open this application, go to **Advanced Settings β†’ OAuth2 + Configuration**, and set **Back-Channel Logout URI** to + `http://localhost:3000/api/auth/backchannel-logout`. +2. ThunderID refuses localhost and private network addresses by default. For local testing only, + turn that off in the server's `deployment.yaml` and restart it: + ```yaml + oauth: + logout: + backchannel: + reject_private_addresses: false + ``` +3. Sign in at [http://localhost:3000](http://localhost:3000), then sign in to a second application + in the same browser, so both share one ThunderID session. +4. Sign out of the second application, then reload this app: you are signed out here too. + +Things to know before production: + +- The SDK records ended sessions in memory by default. If you run more than one instance, name a + [Nitro storage](https://nitro.build/guide/storage) mount point that all of them share, since + ThunderID's request reaches only one instance: + ```ts + thunderid: { + backchannelLogout: { enabled: true, store: 'redis' }, + }, + nitro: { + storage: { redis: { driver: 'redis', url: process.env.REDIS_URL } }, + }, + ``` +- An access token already handed to the browser or to another API stays valid until it expires. diff --git a/quickstarts/nuxt/app/app.vue b/quickstarts/nuxt/app/app.vue new file mode 100644 index 0000000..d463ae9 --- /dev/null +++ b/quickstarts/nuxt/app/app.vue @@ -0,0 +1,28 @@ + + + diff --git a/quickstarts/nuxt/app/assets/styles.css b/quickstarts/nuxt/app/assets/styles.css new file mode 100644 index 0000000..82719ff --- /dev/null +++ b/quickstarts/nuxt/app/assets/styles.css @@ -0,0 +1,1397 @@ +*, +::before, +::after { + box-sizing: border-box; +} + +/* ── Design tokens ── */ +.app { + --color-bg: #f7f9fc; + --color-card: #ffffff; + --color-border: #dde3ec; + --color-text: #05213f; + --color-text-muted: #5a7085; + --color-primary: #3688ff; + --color-primary-hover: #1f72f0; + --color-nav-bg: rgba(247, 249, 252, 0.92); + --color-nav-border: #dde3ec; + --shadow-card: 0 1px 3px 0 rgba(5, 33, 63, 0.06), 0 4px 12px 0 rgba(5, 33, 63, 0.08); + --font-sans: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; + --radius-card: 12px; + --radius-btn: 8px; + + font-family: var(--font-sans); + background: var(--color-bg); + color: var(--color-text); + min-height: 100vh; + display: flex; + flex-direction: column; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + transition: background 0.2s, color 0.2s; +} + +/* ── Dark mode ── */ +.app.dark, +.dark, +html.dark { + --color-bg: #080f1c; + --color-card: #0f1a2d; + --color-border: rgba(255, 255, 255, 0.09); + --color-text: #E0EAFF; + --color-text-muted: rgba(224, 234, 255, 0.48); + --color-nav-bg: rgba(8, 15, 28, 0.92); + + /* ThunderID Design Tokens for Dark Mode */ + --thunderid-color-background-surface: #0f1a2d; + --thunderid-color-background-body: #080f1c; + --thunderid-color-background-disabled: rgba(255, 255, 255, 0.06); + --thunderid-color-background-muted: rgba(255, 255, 255, 0.05); + --thunderid-color-text-primary: #E0EAFF; + --thunderid-color-text-secondary: rgba(224, 234, 255, 0.65); + --thunderid-color-border: rgba(255, 255, 255, 0.09); + --thunderid-color-border-focus: var(--color-primary); + --thunderid-input-borderColor: rgba(255, 255, 255, 0.16); + --thunderid-input-focusBorderColor: var(--color-primary); + --thunderid-input-focusRing: 0 0 0 3px rgba(54, 136, 255, 0.25); + --thunderid-card-borderColor: rgba(255, 255, 255, 0.09); + --thunderid-card-shadow: 0 4px 20px rgba(0, 0, 0, 0.4); + --thunderid-color-action-hover: rgba(255, 255, 255, 0.06); +} + +/* ── Navigation ── */ +.nav { + position: fixed; + inset-block-start: 0; + inset-inline: 0; + height: 52px; + display: flex; + align-items: center; + justify-content: space-between; + padding: 0 24px; + background: var(--color-nav-bg); + border-bottom: 1px solid var(--color-nav-border); + z-index: 100; + transition: background 0.2s, border-color 0.2s; +} + +.nav-logo { + display: flex; + align-items: center; + gap: 10px; + text-decoration: none; + color: var(--color-text); +} + +.wordmark { + display: flex; + flex-direction: column; + gap: 1px; +} + +.wordmark-name { + font-size: 14px; + font-weight: 700; + letter-spacing: -0.03em; + color: var(--color-text); + line-height: 1; +} + +.wordmark-sub { + font-size: 8.5px; + font-weight: 700; + letter-spacing: 0.1em; + text-transform: uppercase; + color: var(--color-primary); + line-height: 1; +} + +.dark-toggle { + display: inline-flex; + align-items: center; + justify-content: center; + width: 32px; + height: 32px; + padding: 0; + background: transparent; + border: none; + border-radius: var(--radius-btn); + color: var(--color-text-muted); + cursor: pointer; + transition: color 0.15s, background 0.15s; +} + +.dark-toggle:hover { + color: var(--color-text); + background: rgba(54, 136, 255, 0.06); +} + +.nav-actions { + display: flex; + align-items: center; + gap: 8px; +} + +/* ── Nav back button ── */ +.nav-back-btn { + display: inline-flex; + align-items: center; + gap: 4px; + height: 32px; + padding: 0 10px; + border-radius: 6px; + border: none; + background: transparent; + color: var(--color-text-muted); + font-size: 13px; + font-family: var(--font-sans); + letter-spacing: -0.01em; + cursor: pointer; + text-decoration: none; + transition: background 0.2s, color 0.2s; +} + +.nav-back-btn:hover { + background: var(--color-border); + color: var(--color-text); +} + +/* ── Buttons ── */ +button { + font-family: var(--font-sans); + cursor: pointer; + border: none; + border-radius: var(--radius-btn); + font-weight: 500; + transition: background 0.15s, color 0.15s, border-color 0.15s, opacity 0.15s; + line-height: 1; + white-space: nowrap; +} + +button:focus-visible { + outline: 2px solid var(--color-primary); + outline-offset: 2px; +} + +.btn-primary { + background: var(--color-primary); + color: #ffffff; + border: 1.5px solid var(--color-primary); +} + +.btn-primary:hover { + background: var(--color-primary-hover); + border-color: var(--color-primary-hover); +} + +.btn-outline { + background: transparent; + color: var(--color-text); + border: 1.5px solid rgba(54, 136, 255, 0.4); +} + +.btn-outline:hover { + border-color: var(--color-primary); + color: var(--color-primary); +} + +.btn-ghost { + background: transparent; + color: var(--color-text-muted); + border: none; +} + +.btn-ghost:hover { + color: var(--color-text); + background: rgba(54, 136, 255, 0.06); +} + +.btn-sm { + padding: 6px 14px; + font-size: 13px; + height: 32px; +} + +.btn-lg { + padding: 0 24px; + font-size: 15px; + height: 46px; +} + +/* ── Hero section ── */ +.hero { + flex: 1; + padding: 96px 32px 80px; + min-height: 100vh; +} + +.hero-inner { + display: flex; + flex-direction: column; + align-items: center; + text-align: center; + gap: 20px; + max-width: 560px; + width: 100%; + margin: 0 auto; +} + +.hero-badge { + display: inline-flex; + align-items: center; + gap: 8px; + font-size: 10px; + font-weight: 600; + letter-spacing: 0.1em; + text-transform: uppercase; + color: var(--color-text-muted); +} + +.hero-badge-line { + display: block; + width: 24px; + height: 1px; + background: var(--color-border); + flex-shrink: 0; +} + +.hero-title { + font-size: 42px; + font-weight: 700; + letter-spacing: -0.05em; + color: var(--color-text); + line-height: 1.1; + margin: 0; +} + +.hero-subtitle { + font-size: 16px; + color: var(--color-text-muted); + max-width: 420px; + line-height: 1.8; + letter-spacing: -0.01em; +} + +.hero-ctas { + display: flex; + gap: 12px; + flex-wrap: wrap; + justify-content: center; + margin-top: 4px; +} + +.hero-divider { + width: 100%; + border: none; + border-top: 1px solid var(--color-border); + margin: 8px 0; +} + +/* ── Stats row ── */ +.hero-stats { + display: grid; + grid-template-columns: repeat(3, 1fr); + width: 100%; + border: 1px solid var(--color-border); + border-radius: var(--radius-card); + overflow: hidden; +} + +.hero-stat { + display: flex; + flex-direction: column; + align-items: center; + gap: 4px; + padding: 20px 16px; + position: relative; +} + +.hero-stat + .hero-stat::before { + content: ''; + position: absolute; + left: 0; + top: 20%; + height: 60%; + width: 1px; + background: var(--color-border); +} + +.hero-stat-value { + font-size: 15px; + font-weight: 700; + color: var(--color-text); + letter-spacing: -0.02em; +} + +.hero-stat-label { + font-size: 12px; + color: var(--color-text-muted); +} + +/* ── Config notice ── */ +.config-badge { + color: #e88b3a; +} + +.config-list { + width: 100%; + max-width: 420px; + text-align: left; + list-style: none; + background: var(--color-card); + border: 1px solid var(--color-border); + border-radius: var(--radius-btn); + padding: 0 16px; + margin: 4px 0 28px; +} + +.config-list-item { + padding: 10px 0; + font-family: ui-monospace, SFMono-Regular, Menlo, monospace; + font-size: 13px; + color: var(--color-text); +} + +.config-list-item:not(:last-child) { + border-bottom: 1px solid var(--color-border); +} + +.config-hint { + font-size: 14px; + color: var(--color-text-muted); + line-height: 1.7; + max-width: 420px; + margin: 0 auto; +} + +.config-hint code { + background: rgba(54, 136, 255, 0.1); + border-radius: 4px; + padding: 2px 6px; + font-family: ui-monospace, SFMono-Regular, Menlo, monospace; + font-size: 13px; +} + +.config-step { + width: 100%; + max-width: 420px; + margin: 0 auto 28px; +} + +.config-step-label { + font-size: 11px; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.09em; + color: var(--color-text-muted); + margin-bottom: 10px; + text-align: left; +} + +.config-step .config-list, +.config-step .config-hint { + margin-left: 0; + margin-right: 0; +} + +.config-box { + text-align: left; + background: var(--color-card); + border: 1px solid var(--color-border); + border-radius: var(--radius-card); + padding: 16px; +} + +.config-box-body { + font-size: 13px; + color: var(--color-text-muted); + line-height: 1.6; + margin-bottom: 14px; +} + +.config-value-group { + display: flex; + flex-direction: column; + gap: 12px; +} + +.config-value-label { + font-size: 11px; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.06em; + color: var(--color-text-muted); + margin-bottom: 4px; +} + +.config-value { + display: block; + overflow-x: auto; + white-space: nowrap; + font-family: ui-monospace, SFMono-Regular, Menlo, monospace; + font-size: 12px; + color: var(--color-text); + background: rgba(54, 136, 255, 0.1); + border-radius: 4px; + padding: 8px 10px; +} + +.config-docs-note { + font-size: 13px; + color: var(--color-text-muted); + max-width: 420px; + margin: 0 auto; +} + +.config-docs-note a { + color: var(--color-primary); + font-weight: 600; +} + +/* ── Responsive ── */ +@media (max-width: 480px) { + .nav { + padding: 0 16px; + } + + .hero { + padding: 80px 16px 32px; + } + + .hero-title { + font-size: 2rem; + } + + .hero-stats { + grid-template-columns: 1fr; + } + + .hero-stat + .hero-stat::before { + top: 0; + left: 20%; + width: 60%; + height: 1px; + } + + .hero-ctas { + flex-direction: column; + align-items: stretch; + } +} + +/* ── Signed-in shell ── */ +.home-shell { + min-height: calc(100vh - 52px); + margin-top: 52px; +} + +/* ── Signed-in home page ── */ +.home-main { + width: 100%; + max-width: 900px; + margin: 0 auto; + padding: 52px 28px 80px; +} + +/* Greeting */ +.home-greeting { + display: flex; + align-items: flex-start; + gap: 16px; + margin-bottom: 36px; +} + +.home-greeting-text { + min-width: 0; +} + +.home-avatar { + width: 52px; + height: 52px; + border-radius: 50%; + flex-shrink: 0; + object-fit: cover; +} + +.home-avatar--fallback { + display: flex; + align-items: center; + justify-content: center; + background: rgba(54, 136, 255, 0.12); + color: var(--color-primary); + font-size: 18px; + font-weight: 700; + letter-spacing: -0.02em; +} + +.home-greeting-name { + margin: 0 0 6px; + font-size: 26px; + font-weight: 700; + color: var(--color-text); + letter-spacing: -0.04em; +} + +.home-greeting-meta { + display: flex; + align-items: center; + gap: 8px; + font-size: 13px; + color: var(--color-text-muted); + letter-spacing: -0.01em; + flex-wrap: wrap; +} + +.home-dot { + display: inline-block; + width: 3px; + height: 3px; + border-radius: 50%; + background: var(--color-border); + flex-shrink: 0; +} + +.home-session-active { + display: inline-flex; + align-items: center; + gap: 5px; + color: #2fbd6b; +} + +.home-session-dot { + display: inline-block; + width: 6px; + height: 6px; + border-radius: 50%; + background: #2fbd6b; + flex-shrink: 0; +} + +/* Session stats row */ +.home-stats { + display: flex; + gap: 0; + padding: 20px 0; + border-top: 1px solid var(--color-border); + border-bottom: 1px solid var(--color-border); + margin-bottom: 52px; +} + +.home-stat { + flex: 1; + display: flex; + align-items: center; + gap: 10px; + min-width: 0; +} + +.home-stat--bordered { + padding-left: 32px; + border-left: 1px solid var(--color-border); +} + +.home-stat-icon { + width: 32px; + height: 32px; + border-radius: 8px; + background: rgba(54, 136, 255, 0.1); + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; + color: #3688FF; +} + +.home-stat-value { + font-size: 14px; + font-weight: 700; + color: var(--color-text); + letter-spacing: -0.02em; +} + +.home-stat-value--mono { + font-family: var(--font-mono, monospace); + letter-spacing: 0.01em; +} + +.home-stat-label { + font-size: 11px; + font-weight: 600; + color: var(--color-text-muted); + text-transform: uppercase; + letter-spacing: 0.07em; + margin-top: 2px; +} + +/* What's next */ +.home-next-label { + font-size: 11px; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.09em; + color: var(--color-text-muted); + margin-bottom: 20px; +} + +.home-next-list { + display: flex; + flex-direction: column; +} + +.home-next-item { + display: grid; + grid-template-columns: 28px 1fr auto; + gap: 16px; + align-items: start; + padding: 20px 0; + border-top: 1px solid var(--color-border); + text-decoration: none; + color: inherit; + cursor: pointer; + transition: background 0.2s; + border-radius: 4px; +} + +.home-next-item:hover .home-next-cta { + opacity: 1; +} + +.home-next-n { + font-size: 11px; + font-weight: 700; + color: #3688FF; + letter-spacing: 0.05em; + padding-top: 2px; + font-variant-numeric: tabular-nums; +} + +.home-next-body { + min-width: 0; +} + +.home-next-title { + font-size: 14px; + font-weight: 600; + color: var(--color-text); + letter-spacing: -0.02em; + margin-bottom: 4px; +} + +.home-next-desc { + font-size: 13px; + color: var(--color-text-muted); + line-height: 1.6; + letter-spacing: -0.01em; +} + +.home-next-cta { + display: inline-flex; + align-items: center; + gap: 4px; + font-size: 13px; + font-weight: 600; + color: #3688FF; + white-space: nowrap; + opacity: 0.7; + transition: opacity 0.2s; + padding-top: 2px; +} + +/* ── Sign in / Sign up pages ── */ +.auth-main { + width: 100%; + min-height: calc(100vh - 52px); + margin-top: 52px; + display: flex; + align-items: center; + justify-content: center; + padding: 40px 20px; +} + +.auth-card { + display: flex; + flex-direction: column; + align-items: center; + gap: 8px; + background: var(--color-card); + border: 1px solid var(--color-border); + border-radius: var(--radius-card); + box-shadow: var(--shadow-card); + padding: 40px 32px; + max-width: 420px; + width: 100%; +} + +.auth-title { + font-size: 1.5rem; + font-weight: 700; + letter-spacing: -0.02em; + color: var(--color-text); + text-align: center; +} + +.auth-subtitle { + margin: 0 0 16px; + font-size: 13px; + color: var(--color-text-muted); + text-align: center; +} + +.auth-switch { + margin-top: 20px; + font-size: 13px; + color: var(--color-text-muted); + text-align: center; +} + +/* ── Profile page ── */ +.profile-main { + width: 100%; + max-width: 780px; + margin: 0 auto; + padding: 52px 28px 80px; +} + +/* ── Token debug page ── */ +.token-main { + width: 100%; + max-width: 780px; + margin: 0 auto; + padding: 52px 28px 80px; +} + +.token-header { + display: flex; + align-items: flex-start; + justify-content: space-between; + gap: 16px; + margin-bottom: 36px; + flex-wrap: wrap; +} + +.token-title { + margin: 0 0 5px; + font-size: 22px; + font-weight: 700; + letter-spacing: -0.04em; + color: var(--color-text); +} + +.token-subtitle { + margin: 0; + font-size: 13px; + color: var(--color-text-muted); + letter-spacing: -0.01em; +} + +.token-badge { + display: inline-flex; + align-items: center; + gap: 7px; + padding: 6px 12px; + border-radius: 6px; + font-size: 12px; + font-weight: 700; + letter-spacing: -0.01em; + flex-shrink: 0; +} + +.token-badge--expired { + background: rgba(220, 38, 38, 0.08); + border: 1px solid rgba(220, 38, 38, 0.22); + color: #dc2626; +} + +.token-badge--valid { + background: rgba(47, 189, 107, 0.08); + border: 1px solid rgba(47, 189, 107, 0.22); + color: #2fbd6b; +} + +.token-badge-dot { + display: inline-block; + width: 6px; + height: 6px; + border-radius: 50%; + background: currentColor; + flex-shrink: 0; +} + +.token-raw-section { + margin-bottom: 20px; +} + +.token-raw-label-row { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 8px; +} + +.token-section-label { + font-size: 11px; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.09em; + color: var(--color-text-muted); +} + +.token-copy-btn { + display: inline-flex; + align-items: center; + gap: 5px; + padding: 4px 10px; + border-radius: 5px; + background: transparent; + border: 1px solid var(--color-border); + font-size: 11px; + font-weight: 600; + color: var(--color-text-muted); + cursor: pointer; + font-family: var(--font-sans); + letter-spacing: -0.01em; + transition: border-color 0.2s, color 0.2s; +} + +.token-copy-btn:hover { + border-color: #3688FF; + color: #3688FF; +} + +.token-raw { + display: block; + font-size: 11px; + font-family: var(--font-mono, monospace); + word-break: break-all; + line-height: 1.8; + background: #0b1120; + padding: 14px 16px; + border-radius: 8px; + overflow-x: auto; +} + +.token-raw--loading { + color: rgba(255, 255, 255, 0.3); +} + +.token-part--header { color: #ff7b72; } +.token-part--payload { color: #79c0ff; } +.token-part--signature { color: #3fb950; } + +.token-dot { + color: rgba(255, 255, 255, 0.2); +} + +.token-decoded-grid { + display: grid; + grid-template-columns: 1fr 1.7fr; + gap: 12px; + margin-bottom: 20px; +} + +.token-code-box { + background: #0b1120; + border-radius: 10px; + overflow: hidden; +} + +.token-code-box-header { + padding: 9px 14px; + font-size: 10px; + font-weight: 700; + letter-spacing: 0.09em; + text-transform: uppercase; +} + +.token-code-box-header--header { + color: #ff7b72; + border-bottom: 1px solid rgba(255, 123, 114, 0.15); +} + +.token-code-box-header--payload { + color: #79c0ff; + border-bottom: 1px solid rgba(121, 192, 255, 0.15); +} + +.token-code-pre { + margin: 0; + padding: 14px; + font-size: 11.5px; + line-height: 1.8; + font-family: var(--font-mono, monospace); + color: #c9d1d9; + overflow-x: auto; + max-height: 220px; +} + +.token-meta-row { + display: flex; + gap: 32px; + padding-top: 20px; + border-top: 1px solid var(--color-border); + flex-wrap: wrap; +} + +.token-meta-label { + font-size: 10px; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.09em; + color: var(--color-text-muted); + margin-bottom: 5px; +} + +.token-meta-value { + font-size: 12px; + font-family: var(--font-mono, monospace); + color: var(--color-text); + letter-spacing: -0.01em; +} + +/* ─── Account page (Google Account-style left-nav layout) ─────────── */ +.account-page { + display: flex; + align-items: flex-start; + min-height: calc(100vh - 52px); + margin-top: 52px; +} + +.account-sidebar { + width: 280px; + flex-shrink: 0; + padding: 40px 24px; + position: sticky; + top: 52px; +} + +.account-sidebar-title { + font-size: 22px; + font-weight: 700; + letter-spacing: -0.03em; + color: var(--color-text); + margin: 0 0 24px 16px; +} + +.account-nav { + display: flex; + flex-direction: column; + gap: 2px; +} + +.account-nav-item { + display: flex; + align-items: center; + gap: 14px; + width: 100%; + padding: 11px 16px; + border: none; + border-radius: 20px; + background: transparent; + color: var(--color-text-muted); + font-size: 14px; + font-weight: 500; + font-family: inherit; + text-align: left; + cursor: pointer; + white-space: nowrap; + transition: background 0.2s, color 0.2s; +} + +.account-nav-item:hover { + background: var(--color-border); + color: var(--color-text); +} + +.account-nav-item--active, +.account-nav-item--active:hover { + background: rgba(54, 136, 255, 0.12); + color: var(--color-primary); +} + +.account-content { + flex: 1; + min-width: 0; + display: flex; + justify-content: center; + padding: 40px 32px 80px; + border-left: 1px solid var(--color-border); +} + +.account-content-inner { + width: 100%; + max-width: 720px; +} + +/* UserProfile's `min-width: 600px` (a floor meant to keep the field grid from getting + cramped in other contexts) fights this page's own responsive layout, refusing to shrink + below 600px even when the viewport is narrower. The Security/Home boxes have no such floor + and already shrink fluidly with their container, so match that here. */ +.account-content .thunderid-user-profile { + min-width: 0; + background: var(--color-card) !important; + border: 1px solid var(--color-border) !important; + border-radius: var(--radius-card) !important; + box-shadow: var(--shadow-card); + color: var(--color-text); + box-sizing: border-box; +} + +.account-content .thunderid-user-profile .thunderid-user-profile__hero { + border-bottom: 1px solid var(--color-border); +} + +.account-content .thunderid-user-profile .thunderid-user-profile__hero-name { + color: var(--color-text); +} + +.account-content .thunderid-user-profile .thunderid-user-profile__hero-subtitle { + color: var(--color-text-muted); +} + +.account-content .thunderid-user-profile .thunderid-user-profile__field { + border-bottom: 1px solid var(--color-border); +} + +.account-content .thunderid-user-profile .thunderid-user-profile__field-label { + color: var(--color-text-muted); +} + +.account-content .thunderid-user-profile .thunderid-user-profile__field-value { + color: var(--color-text); +} + +.account-content .thunderid-user-profile .thunderid-user-profile__field-placeholder { + color: var(--color-text-muted); +} + +.account-content .thunderid-user-profile .thunderid-user-profile__field-edit-btn { + color: var(--color-text-muted); +} + +.account-content .thunderid-user-profile .thunderid-user-profile__field-edit-btn:hover { + color: var(--color-primary); +} + +.account-content .thunderid-user-profile input, +.account-content .thunderid-user-profile select, +.account-content .thunderid-user-profile textarea { + background: rgba(255, 255, 255, 0.05); + border: 1px solid var(--color-border); + border-radius: var(--radius-btn); + color: var(--color-text); + padding: 6px 10px; +} + +.account-content-title { + font-size: 26px; + font-weight: 700; + letter-spacing: -0.03em; + color: var(--color-text); + margin: 0 0 6px; +} + +.account-content-subtitle { + font-size: 14px; + color: var(--color-text-muted); + margin: 0 0 32px; +} + +.account-tiles { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); + gap: 16px; + margin-top: 8px; +} + +.account-tile { + text-align: left; + background: var(--color-card); + border: 1px solid var(--color-border); + border-radius: var(--radius-card); + padding: 22px; + cursor: pointer; + font-family: inherit; + display: flex; + flex-direction: column; + transition: border-color 0.2s; +} + +.account-tile:hover { + border-color: rgba(54, 136, 255, 0.35); +} + +.account-tile-icon { + width: 36px; + height: 36px; + border-radius: 10px; + display: flex; + align-items: center; + justify-content: center; + margin-bottom: 14px; +} + +.account-tile-icon--blue { + background: rgba(54, 136, 255, 0.12); + color: var(--color-primary); +} + +.account-tile-icon--green { + background: rgba(16, 185, 129, 0.12); + color: #10b981; +} + +.account-tile-title { + font-size: 15px; + font-weight: 600; + color: var(--color-text); + margin-bottom: 4px; +} + +.account-tile-desc { + font-size: 12.5px; + color: var(--color-text-muted); + line-height: 1.5; +} + +.account-security-list { + display: flex; + flex-direction: column; + gap: 16px; +} + +.account-security-card { + background: var(--color-card); + border: 1px solid var(--color-border); + border-radius: var(--radius-card); + padding: 20px 22px; +} + +.account-security-card-row { + display: flex; + align-items: center; + justify-content: space-between; + gap: 16px; +} + +.account-security-card-title { + font-size: 14px; + font-weight: 600; + color: var(--color-text); + margin-bottom: 2px; +} + +.account-security-card-desc { + font-size: 12.5px; + color: var(--color-text-muted); +} + +.account-security-card-cta { + flex-shrink: 0; + display: flex; + align-items: center; + gap: 6px; + padding: 0; + background: none; + border: none; + color: var(--color-primary); + font-size: 13px; + font-weight: 500; + font-family: inherit; + cursor: pointer; + transition: opacity 0.2s; +} + +.account-security-card-cta:hover { + opacity: 0.8; +} + +.account-security-card-chevron { + display: inline-flex; + transition: transform 0.2s; +} + +.account-security-card-chevron--open { + transform: rotate(180deg); +} + +.account-security-card-form { + margin-top: 18px; + padding-top: 18px; + border-top: 1px solid var(--color-border); +} + +@media (max-width: 760px) { + .account-page { + flex-direction: column; + } + .account-sidebar { + width: 100%; + position: static; + padding: 20px 16px 8px; + } + .account-nav { + flex-direction: row; + overflow-x: auto; + } + .account-content { + max-width: 100%; + border-left: none; + border-top: 1px solid var(--color-border); + padding: 24px 20px 60px; + } +} + +/* ── ThunderID inputs & forms dark mode ── */ +.dark .thunderid-password-field__wrapper, +html.dark .thunderid-password-field__wrapper, +.app.dark .thunderid-password-field__wrapper, +.dark .thunderid-text-field__wrapper, +html.dark .thunderid-text-field__wrapper, +.app.dark .thunderid-text-field__wrapper, +.dark .thunderid-text-field__input, +html.dark .thunderid-text-field__input, +.app.dark .thunderid-text-field__input { + background-color: rgba(255, 255, 255, 0.05) !important; + border-color: rgba(255, 255, 255, 0.16) !important; + color: var(--color-text) !important; +} + +.dark .thunderid-password-field__label, +html.dark .thunderid-password-field__label, +.app.dark .thunderid-password-field__label, +.dark .thunderid-text-field__label, +html.dark .thunderid-text-field__label, +.app.dark .thunderid-text-field__label, +.dark .thunderid-input-label, +html.dark .thunderid-input-label, +.app.dark .thunderid-input-label { + color: var(--color-text) !important; +} + +.dark .thunderid-password-field__input, +html.dark .thunderid-password-field__input, +.app.dark .thunderid-password-field__input { + background: transparent !important; + color: var(--color-text) !important; +} + +.dark .thunderid-password-field__input::placeholder, +html.dark .thunderid-password-field__input::placeholder, +.app.dark .thunderid-password-field__input::placeholder, +.dark .thunderid-text-field__input::placeholder, +html.dark .thunderid-text-field__input::placeholder, +.app.dark .thunderid-text-field__input::placeholder { + color: var(--color-text-muted) !important; +} + +.dark .thunderid-password-field__toggle, +html.dark .thunderid-password-field__toggle, +.app.dark .thunderid-password-field__toggle { + color: var(--color-text-muted) !important; + background: transparent !important; +} + +.dark .thunderid-password-field__toggle:hover, +html.dark .thunderid-password-field__toggle:hover, +.app.dark .thunderid-password-field__toggle:hover { + color: var(--color-text) !important; +} + +.dark .thunderid-change-credential__requirements-heading, +html.dark .thunderid-change-credential__requirements-heading, +.app.dark .thunderid-change-credential__requirements-heading, +.dark .thunderid-change-credential__requirement, +html.dark .thunderid-change-credential__requirement, +.app.dark .thunderid-change-credential__requirement { + color: var(--color-text-muted) !important; +} + +.dark .thunderid-change-credential__requirement--passed, +html.dark .thunderid-change-credential__requirement--passed, +.app.dark .thunderid-change-credential__requirement--passed { + color: #38c172 !important; +} + +/* ── ThunderID UserDropdown dark mode ── */ +.dark .thunderid-user-dropdown__menu, +html.dark .thunderid-user-dropdown__menu, +.app.dark .thunderid-user-dropdown__menu, +.dark .thunderid-user-dropdown__content, +html.dark .thunderid-user-dropdown__content, +.app.dark .thunderid-user-dropdown__content { + background-color: var(--color-card) !important; + border: 1px solid var(--color-border) !important; + box-shadow: 0 8px 32px rgba(0, 0, 0, 0.45) !important; + color: var(--color-text) !important; +} + +.dark .thunderid-user-dropdown__menu-header, +html.dark .thunderid-user-dropdown__menu-header, +.app.dark .thunderid-user-dropdown__menu-header, +.dark .thunderid-user-dropdown__header, +html.dark .thunderid-user-dropdown__header, +.app.dark .thunderid-user-dropdown__header { + border-bottom: 1px solid var(--color-border) !important; +} + +.dark .thunderid-user-dropdown__menu-header-name, +html.dark .thunderid-user-dropdown__menu-header-name, +.app.dark .thunderid-user-dropdown__menu-header-name, +.dark .thunderid-user-dropdown__header-name, +html.dark .thunderid-user-dropdown__header-name, +.app.dark .thunderid-user-dropdown__header-name { + color: var(--color-text) !important; +} + +.dark .thunderid-user-dropdown__menu-header-subtitle, +html.dark .thunderid-user-dropdown__menu-header-subtitle, +.app.dark .thunderid-user-dropdown__menu-header-subtitle, +.dark .thunderid-user-dropdown__header-subtitle, +html.dark .thunderid-user-dropdown__header-subtitle, +.app.dark .thunderid-user-dropdown__header-subtitle { + color: var(--color-text-muted) !important; +} + +.dark .thunderid-user-dropdown__menu-divider, +html.dark .thunderid-user-dropdown__menu-divider, +.app.dark .thunderid-user-dropdown__menu-divider, +.dark .thunderid-divider, +html.dark .thunderid-divider, +.app.dark .thunderid-divider { + background-color: var(--color-border) !important; + border-color: var(--color-border) !important; +} + +.dark .thunderid-user-dropdown__item, +html.dark .thunderid-user-dropdown__item, +.app.dark .thunderid-user-dropdown__item { + color: var(--color-text) !important; +} + +.dark .thunderid-user-dropdown__item:hover, +html.dark .thunderid-user-dropdown__item:hover, +.app.dark .thunderid-user-dropdown__item:hover { + background-color: rgba(255, 255, 255, 0.06) !important; + color: var(--color-text) !important; +} + +.dark .thunderid-user-dropdown__item--danger, +html.dark .thunderid-user-dropdown__item--danger, +.app.dark .thunderid-user-dropdown__item--danger { + color: #f87171 !important; +} + +.dark .thunderid-user-dropdown__item--danger:hover, +html.dark .thunderid-user-dropdown__item--danger:hover, +.app.dark .thunderid-user-dropdown__item--danger:hover { + background-color: rgba(239, 68, 68, 0.12) !important; +} + +.dark .thunderid-card, +html.dark .thunderid-card, +.app.dark .thunderid-card { + background-color: var(--color-card) !important; + border-color: var(--color-border) !important; + color: var(--color-text) !important; +} + diff --git a/quickstarts/nuxt/app/components/AppNav.vue b/quickstarts/nuxt/app/components/AppNav.vue new file mode 100644 index 0000000..91ac758 --- /dev/null +++ b/quickstarts/nuxt/app/components/AppNav.vue @@ -0,0 +1,82 @@ + + + diff --git a/quickstarts/nuxt/app/components/ConfigNotice.vue b/quickstarts/nuxt/app/components/ConfigNotice.vue new file mode 100644 index 0000000..52d595f --- /dev/null +++ b/quickstarts/nuxt/app/components/ConfigNotice.vue @@ -0,0 +1,112 @@ + + + diff --git a/quickstarts/nuxt/app/pages/account.vue b/quickstarts/nuxt/app/pages/account.vue new file mode 100644 index 0000000..addd18b --- /dev/null +++ b/quickstarts/nuxt/app/pages/account.vue @@ -0,0 +1,162 @@ + + + diff --git a/quickstarts/nuxt/app/pages/index.vue b/quickstarts/nuxt/app/pages/index.vue new file mode 100644 index 0000000..fe0b7ab --- /dev/null +++ b/quickstarts/nuxt/app/pages/index.vue @@ -0,0 +1,234 @@ + + + diff --git a/quickstarts/nuxt/app/pages/signin.vue b/quickstarts/nuxt/app/pages/signin.vue new file mode 100644 index 0000000..adcb418 --- /dev/null +++ b/quickstarts/nuxt/app/pages/signin.vue @@ -0,0 +1,24 @@ + + + diff --git a/quickstarts/nuxt/app/pages/signup.vue b/quickstarts/nuxt/app/pages/signup.vue new file mode 100644 index 0000000..6e8405e --- /dev/null +++ b/quickstarts/nuxt/app/pages/signup.vue @@ -0,0 +1,24 @@ + + + diff --git a/quickstarts/nuxt/app/pages/token.vue b/quickstarts/nuxt/app/pages/token.vue new file mode 100644 index 0000000..b450504 --- /dev/null +++ b/quickstarts/nuxt/app/pages/token.vue @@ -0,0 +1,125 @@ + + + diff --git a/quickstarts/nuxt/nuxt.config.ts b/quickstarts/nuxt/nuxt.config.ts new file mode 100644 index 0000000..229cee9 --- /dev/null +++ b/quickstarts/nuxt/nuxt.config.ts @@ -0,0 +1,11 @@ +// https://nuxt.com/docs/api/configuration/nuxt-config +export default defineNuxtConfig({ + compatibilityDate: '2025-07-15', + devtools: { enabled: true }, + modules: ['@thunderid/nuxt'], + thunderid: { + // Serves POST /api/auth/backchannel-logout, so signing out elsewhere ends the session here. + backchannelLogout: { enabled: true }, + }, + css: ['~/assets/styles.css'], +}) diff --git a/quickstarts/nuxt/package.json b/quickstarts/nuxt/package.json new file mode 100644 index 0000000..5975875 --- /dev/null +++ b/quickstarts/nuxt/package.json @@ -0,0 +1,18 @@ +{ + "name": "@thunderid/nuxt-quickstart", + "private": true, + "version": "0.0.0", + "scripts": { + "prepare-dev": "node scripts/prepare-dev.cjs", + "prepare-dev:redirect": "node scripts/prepare-dev.cjs --flow=redirect", + "dev": "TMPDIR=/tmp/nuxt-tmp/ nuxt dev", + "build": "nuxt build", + "generate": "nuxt generate", + "preview": "nuxt preview" + }, + "dependencies": { + "@thunderid/nuxt": "1.3.0", + "nuxt": "^4.5.2", + "vue": "^3.5.13" + } +} diff --git a/quickstarts/nuxt/pnpm-lock.yaml b/quickstarts/nuxt/pnpm-lock.yaml new file mode 100644 index 0000000..ae7a14d --- /dev/null +++ b/quickstarts/nuxt/pnpm-lock.yaml @@ -0,0 +1,6358 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@thunderid/nuxt': + specifier: 1.3.0 + version: 1.3.0(magicast@0.5.5)(nuxt@4.6.2(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7))(@oxc-project/types@0.154.0)(@vue/compiler-sfc@3.5.44)(acorn@8.19.0)(confbox@0.3.1)(db0@0.3.4)(dotenv@17.4.2)(esbuild@0.28.2)(giget@3.3.1)(ioredis@5.11.1)(lightningcss@1.33.0)(mlly@1.8.2)(rolldown@1.2.14)(rollup-plugin-visualizer@7.1.1(rolldown@1.2.14)(rollup@4.64.9))(rollup@4.64.9)(srvx@1.0.6)(terser@5.51.2)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)))(vue-router@5.4.0(@vue/compiler-sfc@3.5.44)(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2))(vue@3.5.44))(vue@3.5.44) + nuxt: + specifier: ^4.5.2 + version: 4.6.2(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7))(@oxc-project/types@0.154.0)(@vue/compiler-sfc@3.5.44)(acorn@8.19.0)(confbox@0.3.1)(db0@0.3.4)(dotenv@17.4.2)(esbuild@0.28.2)(giget@3.3.1)(ioredis@5.11.1)(lightningcss@1.33.0)(mlly@1.8.2)(rolldown@1.2.14)(rollup-plugin-visualizer@7.1.1(rolldown@1.2.14)(rollup@4.64.9))(rollup@4.64.9)(srvx@1.0.6)(terser@5.51.2)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)) + vue: + specifier: ^3.5.13 + version: 3.5.44 + +packages: + + '@babel/code-frame@7.29.7': + resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.29.7': + resolution: {integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.29.7': + resolution: {integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.29.8': + resolution: {integrity: sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.29.7': + resolution: {integrity: sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.29.7': + resolution: {integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.29.7': + resolution: {integrity: sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-globals@7.29.7': + resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-member-expression-to-functions@7.29.7': + resolution: {integrity: sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.29.7': + resolution: {integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.29.7': + resolution: {integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.29.7': + resolution: {integrity: sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.29.7': + resolution: {integrity: sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-replace-supers@7.29.7': + resolution: {integrity: sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-skip-transparent-expression-wrappers@7.29.7': + resolution: {integrity: sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.29.7': + resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@8.0.6': + resolution: {integrity: sha512-+6HYEBnsDRZHJtUTAEfMQd0zMDqdFHS7C+5vAsEZqBUr3vEMWOWlHJ0Jz1gS8jJIlCvLsuA6ivmeoqzH936YcA==} + engines: {node: ^22.18.0 || >=24.11.0} + + '@babel/helper-validator-identifier@7.29.7': + resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@8.0.6': + resolution: {integrity: sha512-HYx0YmuchRxRSpnjvcNffnPS8DCauKNmnumIuHG3jnQAVewRA7kfJGwF13ayEpSZs7s4R/oBH4eppuXcAQd5JQ==} + engines: {node: ^22.18.0 || >=24.11.0} + + '@babel/helper-validator-option@7.29.7': + resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.29.10': + resolution: {integrity: sha512-EMCx3AGZ3WfAl6ht7AyQoPm2Lh+BGYEMdc4Q6Hf7uSCDOZFuLq44qNwL+iaim8VlyYhRAo4X43+weadK8ZB4Yg==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.29.9': + resolution: {integrity: sha512-CjXrNHTnvqBVqHgdBysY3vk2T8tpJHb5/RMeHJBTyVa9xgugCB0CJTx/3oO8RV2QRQP391RWpB7D6hLjm8V9uA==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/parser@8.0.7': + resolution: {integrity: sha512-UkDwEbPO1px2JQSrdh4qIgaH1JgG7GO/pFeJkpxhDxIETkT/QvGpnigXIw75ViHYPtIgKITmVUJqLjiO+JuWjA==} + engines: {node: ^22.18.0 || >=24.11.0} + hasBin: true + + '@babel/plugin-syntax-jsx@7.29.7': + resolution: {integrity: sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.29.7': + resolution: {integrity: sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.29.9': + resolution: {integrity: sha512-FFwIwzU+7SCOuxxV4YtJql6T9981ZVTm+FHO5GhVsRqCTdy0WwrEZh3l42ARpXruJUDGOptdduHW6Zr7pNPLNg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/template@7.29.7': + resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.29.10': + resolution: {integrity: sha512-B3lYAs2nkKskbgQ1nfy8Ma9ao9Q1rntTAQHrzzyDuj+TSO+X3le6PfWwqDvodsb+OumE10eMFfuMCTQSQ5iuIQ==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.29.8': + resolution: {integrity: sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==} + engines: {node: '>=6.9.0'} + + '@babel/types@8.0.6': + resolution: {integrity: sha512-c+xgSWboV2pdwXP67BUWDVRHi2BO5Q3KwxyFVs7taVTY+fsK47/L51ZXQoV9rozHJDNHvJ4v4WEsI/IlxV2l2A==} + engines: {node: ^22.18.0 || >=24.11.0} + + '@clack/core@1.5.1': + resolution: {integrity: sha512-iHTrHA8MtVuLl2TfZySmcKv1qO2PoyC9Z7pfSDozEuV5vtY3/wcOPKJXlqJ5Oq2Cx5DDGQGAMVx6HZfRRoVEbQ==} + engines: {node: '>= 20.12.0'} + + '@clack/prompts@1.8.1': + resolution: {integrity: sha512-dlT1m5e/0yUL0kRNcQn7yGLVThkgbB0Ga/1AmfDDC/8ik6AIiSf2QLQO2zPYvefsHP0aFgxO93cVLCCfDp7kzQ==} + engines: {node: '>= 20.12.0'} + + '@cloudflare/kv-asset-handler@0.4.2': + resolution: {integrity: sha512-SIOD2DxrRRwQ+jgzlXCqoEFiKOFqaPjhnNTGKXSRLvp1HiOvapLaFG2kEr9dYQTYe8rKrd9uvDUzmAITeNyaHQ==} + engines: {node: '>=18.0.0'} + + '@colordx/core@7.3.0': + resolution: {integrity: sha512-LVzTTPhX7wpy7TkGjouA9zbbCBIw92RGm7ZQqSKFE0oYE3sMx2FGXz90eVpgw7k/+wrrY+qJ86nHXifZWMS5jA==} + + '@csstools/css-tokenizer@4.0.2': + resolution: {integrity: sha512-OoKoR0f76dCY666JlcbhmVTs2drYj1GUXZTYTcbUgJjh9Nv41aFfZ21bPQTERm5+L5cBDo466NltB2lplS5GBw==} + engines: {node: '>=20.19.0'} + + '@dxup/nuxt@0.5.10': + resolution: {integrity: sha512-54Vehb7LmR7qYpC6KFwjDTSm6CB1CayBu+JXdHrPLrIjjr5xAgb43jvgOU+mnB+tsRh414fSsEy0QjBMKILQ8g==} + + '@dxup/unimport@0.1.2': + resolution: {integrity: sha512-/B8YJGPzaYq1NbsQmwgP8EZqg40NpTw4ZB3suuI0TplbxKHeK94jeaawLmVhCv+YwUnOpiWEz9U6SeThku/8JQ==} + + '@esbuild/aix-ppc64@0.28.2': + resolution: {integrity: sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.28.2': + resolution: {integrity: sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.28.2': + resolution: {integrity: sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.28.2': + resolution: {integrity: sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.28.2': + resolution: {integrity: sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.28.2': + resolution: {integrity: sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.28.2': + resolution: {integrity: sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.28.2': + resolution: {integrity: sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.28.2': + resolution: {integrity: sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.28.2': + resolution: {integrity: sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.28.2': + resolution: {integrity: sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.28.2': + resolution: {integrity: sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.28.2': + resolution: {integrity: sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.28.2': + resolution: {integrity: sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.28.2': + resolution: {integrity: sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.28.2': + resolution: {integrity: sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.28.2': + resolution: {integrity: sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.28.2': + resolution: {integrity: sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.28.2': + resolution: {integrity: sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.28.2': + resolution: {integrity: sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.28.2': + resolution: {integrity: sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.28.2': + resolution: {integrity: sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.28.2': + resolution: {integrity: sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.28.2': + resolution: {integrity: sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.28.2': + resolution: {integrity: sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.28.2': + resolution: {integrity: sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@ioredis/commands@1.10.0': + resolution: {integrity: sha512-UmeW7z4LfctwoQ5wkhVzgq8tXkreED2xZGpX+Bg+zA+WJFZCT6c062AfCK/Dfk81xZnnwdhJCUMkitihRaoC2Q==} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@isaacs/fs-minipass@4.0.1': + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.11': + resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} + + '@jridgewell/sourcemap-codec@1.6.0': + resolution: {integrity: sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@mapbox/node-pre-gyp@2.0.3': + resolution: {integrity: sha512-uwPAhccfFJlsfCxMYTwOdVfOz3xqyj8xYL3zJj8f0pb30tLohnnFPhLuqp4/qoEz8sNxe4SESZedcBojRefIzg==} + engines: {node: '>=18'} + hasBin: true + + '@napi-rs/lzma-linux-x64-gnu@1.5.1': + resolution: {integrity: sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ==} + engines: {node: ^22.20 || ^24.12 || >=25} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@nuxt/cli@4.0.1': + resolution: {integrity: sha512-vtB77CmkrYUMoIKwk+HUdNQX1vuMPpnu7ExNYB91WuIxzzGrGQLSxGUpXa360xsyUkZ4h9s+qElAQQW9ZQP4WA==} + engines: {node: ^22.21.0 || ^24.11.0 || >=26.0.0} + hasBin: true + peerDependencies: + '@nuxt/docs': ^4.0.0 + '@nuxt/schema': ^3.0.0 || ^4.0.0 + jiti: ^2.3.0 + oxc-parser: '>=0.56.3' + rolldown: ^1.0.0-rc.16 || ^1.0.0 + serve: ^14.0.0 + peerDependenciesMeta: + '@nuxt/docs': + optional: true + '@nuxt/schema': + optional: true + jiti: + optional: true + oxc-parser: + optional: true + rolldown: + optional: true + serve: + optional: true + + '@nuxt/devalue@2.0.2': + resolution: {integrity: sha512-GBzP8zOc7CGWyFQS6dv1lQz8VVpz5C2yRszbXufwG/9zhStTIH50EtD87NmWbTMwXDvZLNg8GIpb1UFdH93JCA==} + + '@nuxt/devtools-kit@3.4.3': + resolution: {integrity: sha512-mG4OT+1v6JkaRj+L9bYI6TaWLqDwu4NE+//UL/annLsrGiAOXc9FlFAnIIuQojPZ+H1gJeuc1pc968z/jXwUlA==} + peerDependencies: + vite: '>=6.0' + + '@nuxt/devtools-wizard@3.4.3': + resolution: {integrity: sha512-0F5mQmaj3rEMT5gkQeDsXea7YyyvPwp4ktT3xduZgp1G0QiSzV7AQ64gXz2LPaIc4V8ib/k++8KjmHL+/DbH4Q==} + hasBin: true + + '@nuxt/devtools@3.4.3': + resolution: {integrity: sha512-63qNER1zq1z+b+zUms2X9xKu8SV04FSab8C7yqzCy/8C/mPodNVJZsI6YsCXhz2BLAM1E9+3vIPzLT8BJjKKmA==} + hasBin: true + peerDependencies: + '@vitejs/devtools': '*' + vite: '>=6.0' + peerDependenciesMeta: + '@vitejs/devtools': + optional: true + + '@nuxt/kit@3.21.11': + resolution: {integrity: sha512-0Xi3tgwN77w43Q8GCPIrvWmF1J7Peehkts44E0uKNIml9lB8WoUn8YxyUjxBv47XtVR86NWoWALAT+/IEMHJEA==} + engines: {node: '>=18.12.0'} + + '@nuxt/kit@4.6.2': + resolution: {integrity: sha512-Vn9DJobc30WdR1vrlRcEAFSFy7NV5CWq3o6gxsfrdGb2FmCh0fuDyvbZC30rm2enyiPaOUPafKctFE/ToBjybw==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + '@nuxt/schema': ^3.0.0 || ^4.0.0 || ^5.0.0-0 + confbox: '>=0.1.0' + dotenv: '*' + giget: '>=3.1.0' + jiti: ^2.0.0 + mlly: ^1.2.0 + oxc-parser: '>=0.56.0' + rolldown: '>=1.0.0' + peerDependenciesMeta: + '@nuxt/schema': + optional: true + confbox: + optional: true + dotenv: + optional: true + giget: + optional: true + jiti: + optional: true + mlly: + optional: true + oxc-parser: + optional: true + rolldown: + optional: true + + '@nuxt/nitro-server@4.6.2': + resolution: {integrity: sha512-mOiTpoiSG26/0UI4Nxfc4AK76UaCdpjObLPCF6NTDX9wL6Ed4/95AAVZKbEq7qxtNSla/8F+s8NSY6O1wpJ5bA==} + engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0} + peerDependencies: + '@babel/plugin-proposal-decorators': ^7.25.0 || ^8.0.0 + '@babel/plugin-syntax-typescript': ^7.25.0 || ^8.0.0 + '@rollup/plugin-babel': ^6.0.0 || ^7.0.0 + nuxt: ^4.6.2 + peerDependenciesMeta: + '@babel/plugin-proposal-decorators': + optional: true + '@babel/plugin-syntax-typescript': + optional: true + '@rollup/plugin-babel': + optional: true + + '@nuxt/schema@4.6.2': + resolution: {integrity: sha512-L+0YiNDh/5C079JiHweAbOJqWD/931N+aqwtRk/wrCpRmTmYgiyIelVbnOv0sevWvGcPouBJRgTC2fxlp3mxoQ==} + engines: {node: ^14.18.0 || >=16.10.0} + + '@nuxt/telemetry@2.9.1': + resolution: {integrity: sha512-WYQs6GvebU278YXhbGlLA8pUO3ox+juHAiKCB3SEH0lq2PDRwX465tHRtpVIqsHv+lGK/n99FC7qqyBt9+p3oQ==} + engines: {node: '>=18.12.0'} + hasBin: true + peerDependencies: + '@nuxt/kit': '>=3.0.0' + + '@nuxt/vite-builder@4.6.2': + resolution: {integrity: sha512-UCEoVjguX65x2mlZ0wuTth//idqugfKkxK9RwXHUqCkxonO4YgVh9akqUUlcjw/CSWWOZUbAOFnyS1yIXNGOZw==} + engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0} + peerDependencies: + '@babel/plugin-proposal-decorators': ^7.25.0 || ^8.0.0 + '@babel/plugin-syntax-jsx': ^7.25.0 || ^8.0.0 + nuxt: 4.6.2 + rolldown: ^1.0.0 + rollup-plugin-visualizer: ^6.0.0 || ^7.0.1 + vue: ^3.3.4 + peerDependenciesMeta: + '@babel/plugin-proposal-decorators': + optional: true + '@babel/plugin-syntax-jsx': + optional: true + rolldown: + optional: true + rollup-plugin-visualizer: + optional: true + + '@nuxt/vite-server@4.6.2': + resolution: {integrity: sha512-tSlCRgrx8TFBhETV/6dFk1gKLmwj1GaIrItRJClqJesJvdGDAabA3av4Ph8wlFGD5vkxIvzAeksn8Uy1ja1DMQ==} + engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0} + peerDependencies: + nuxt: ^4.6.2 + vite: ^8.3.4 + + '@oxc-project/types@0.154.0': + resolution: {integrity: sha512-KYOUGQFlLWR+s4QMV2Q9ko38TZm7EdO87Qm7rvZLqk/webse/cDjtyxKhg/47l0byCbs/k46LT8qc4PKjAikzA==} + + '@parcel/watcher-wasm@2.6.0': + resolution: {integrity: sha512-dtjbDxKSDPQ8AmA+pS4OFaHE1FKrjtGpLGBxw85uKFkRorjNbvDM/aFPgqosu40wprbp1xw2ZSxIKqghCUHe2w==} + engines: {node: '>= 10.0.0'} + bundledDependencies: + - napi-wasm + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@polka/url@1.0.0-next.29': + resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} + + '@poppinss/colors@4.1.6': + resolution: {integrity: sha512-H9xkIdFswbS8n1d6vmRd8+c10t2Qe+rZITbbDHHkQixH5+2x1FDGmi/0K+WgWiqQFKPSlIYB7jlH6Kpfn6Fleg==} + + '@poppinss/dumper@0.7.0': + resolution: {integrity: sha512-0UTYalzk2t6S4rA2uHOz5bSSW2CHdv4vggJI6Alg90yvl0UgXs6XSXpH96OH+bRkX4J/06djv29pqXJ0lq5Kag==} + + '@poppinss/exception@1.2.3': + resolution: {integrity: sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==} + + '@rolldown/binding-android-arm-eabi@1.2.14': + resolution: {integrity: sha512-aWR+XKH9+rW7m5fWq/5360J3mHycrx/o6xZM2DQFdJnTMdyP7/WzxPjhtLbVWdKo2y612/4U1bWqb3HQhiF7vg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + + '@rolldown/binding-android-arm64@1.2.14': + resolution: {integrity: sha512-QiVxHofl6A8lQU7WAtOUY4QMVZXohxwz7WJJoeh8NBEUyKfIkMRKhYyq8az/1RypNiIXzNTtiS6KwHz0erxYRQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@rolldown/binding-darwin-arm64@1.2.14': + resolution: {integrity: sha512-lTQOzHuBIooh3jIr5XINQkjPGEuGy+Dsy0meXDr6Sjty0b99kYgGh4uBC/8mJX1T0kC8d6S0aPP1Y+bHkh6aBw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@rolldown/binding-darwin-x64@1.2.14': + resolution: {integrity: sha512-hyMKEGatjmBYCs/Q4sbIcL/GqpFEqsX3wc+HYVQ/85A4rxc1o7rPm4DUI4GV4k/h0ITddwFSGpqQunI14GXjTA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-freebsd-x64@1.2.14': + resolution: {integrity: sha512-u371GbXoVXrEgP20PwzoGNOdAOqAMhzo19JzzY+V4YmmnC+DTOoqdbMu+O+54emM59Mik/UdrtWgcuEDKWRPKA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@rolldown/binding-linux-arm-gnueabihf@1.2.14': + resolution: {integrity: sha512-BqwKsdZQf6EqVWr8fv2MrDYzAvOZ7+NYFSJESRGs87fkseEhs0TU9TXgRJTkZoRRkxTizyEg1LKUXfU3/78uqg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@rolldown/binding-linux-arm64-gnu@1.2.14': + resolution: {integrity: sha512-SD9kY8M009x/7s57Z1dgUVlP5+uYBgKQK0Tkr1WIWngrtUJmRCW1RJFMY7QDla2khXhmg2i5Io7MUjcmZNZ/KQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-arm64-musl@1.2.14': + resolution: {integrity: sha512-BJ2CL19M6uuWesMgnqJzgxoI+N+eV7b0A9O9vLV42y+gitC41fNa8KElau1tHVzuLWX5GzEuxMPhAO0tQXQMkg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rolldown/binding-linux-ppc64-gnu@1.2.14': + resolution: {integrity: sha512-4+Kl8daPV8NDHaD7mfCcc1pRM+Qg7ab8DyMm5FG5WoZgv4h2i3KFN1CybYBNbQqmuYm7ftJLvmMI1eHYJ22S/Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-s390x-gnu@1.2.14': + resolution: {integrity: sha512-V/h8ePq1fKDrmtFMz6xcCN3DKvuvMRrwwD1q0PkBeeo4DpK64biaKvqWGVxqCeYKqeRk7gE7/iKPxLCn08O97A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-x64-gnu@1.2.14': + resolution: {integrity: sha512-WxalXzgrLVpKC93xfpaJ3gCXUWzeCr+FRCbDVD2mUAy4L6Vo3lNVz0epUEUpxPWJkLNYUwM4OSIikv36OJ9mLg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-x64-musl@1.2.14': + resolution: {integrity: sha512-3G3tnAmTpdk9jO3GQtyHXqeFD2SlecfTws/Y3M2mmj9nMBwwuLT4kur8sZKeu7ENUHSpVO3cIsm5A52LEWWwlg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rolldown/binding-openharmony-arm64@1.2.14': + resolution: {integrity: sha512-qyr5XiNGxm2ytx17vvtcJ9nXn6v1gENETi503bJx3OGwZ1tSonj7BosxbMa/xeAfSl5iS9X6KjEWYXLu6v1L7Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@rolldown/binding-win32-arm64-msvc@1.2.14': + resolution: {integrity: sha512-oA4o5o0S2yB199YyYXDzKUv1Z56Rc+mgOjwm7Z/vJ9Z8igiDPYvoOuDyo6g7AK/ZaF09nPhDKVnGBcYHO11GXA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@rolldown/binding-win32-x64-msvc@1.2.14': + resolution: {integrity: sha512-9mE94bf2GZUaR/fUSXCMpBoWkctu421Mi0ORpm4zqfbkjKep7RxzPFa5etcGs5h+2KApoWBOA/hAJa/7saGgEQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@rolldown/pluginutils@1.0.1': + resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} + + '@rollup/plugin-alias@6.0.0': + resolution: {integrity: sha512-tPCzJOtS7uuVZd+xPhoy5W4vThe6KWXNmsFCNktaAh5RTqcLiSfT4huPQIXkgJ6YCOjJHvecOAzQxLFhPxKr+g==} + engines: {node: '>=20.19.0'} + peerDependencies: + rollup: '>=4.0.0' + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-commonjs@29.0.3': + resolution: {integrity: sha512-ZaOxZceP7SOUW7Lqw5IRVweSQYWaeIPnXIGLiB690EBA3FGJTO40EEr2L5yZplJWsgTCogILRSpcAe7+U0Otdg==} + engines: {node: '>=16.0.0 || 14 >= 14.17'} + peerDependencies: + rollup: ^2.68.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-inject@5.0.5': + resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-json@6.1.0': + resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-node-resolve@16.0.3': + resolution: {integrity: sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.78.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-replace@6.0.3': + resolution: {integrity: sha512-J4RZarRvQAm5IF0/LwUUg+obsm+xZhYnbMXmXROyoSE1ATJe3oXSb9L5MMppdxP2ylNSjv6zFBwKYjcKMucVfA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-terser@1.0.0': + resolution: {integrity: sha512-FnCxhTBx6bMOYQrar6C8h3scPt8/JwIzw3+AJ2K++6guogH5fYaIFia+zZuhqv0eo1RN7W1Pz630SyvLbDjhtQ==} + engines: {node: '>=20.0.0'} + peerDependencies: + rollup: ^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/pluginutils@5.4.0': + resolution: {integrity: sha512-MfPp06CjRLfXQ3wY0R8vJDYBy/MvVcc9OulEfR0B8Iv9ko+GCNaRZ+EpJYFl27LhKsZK0o420sYCRHCjfCgeUg==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/rollup-android-arm-eabi@4.64.9': + resolution: {integrity: sha512-qJmhckvOleXp8R+BaXiVW/S34/3M7pvN17/QcG90A74BDaSvKv8ffY+GYG+a/xU0vEoITzdMSiM7o9HZSQWbfA==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.64.9': + resolution: {integrity: sha512-dqQgds39BNWGB2ughJ6n2LTQFXk8RAOwnXj6m387OHpygfD93QRS1ODIfpiWyAa9gsFB9l34pSqeLmA0Xk/VBw==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.64.9': + resolution: {integrity: sha512-scrMx4SGikOSbWknLmPD0v6OeJ1Wih3kyRLdNZnlVbBeKVWp1nRTVcpM0IxDJdc3u8UjesPHTmnX649u8cQpBw==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.64.9': + resolution: {integrity: sha512-fkwi2OQR+QWoViRFt08Bsca6G0e9pk/4z+JgmqHq6jSRTT0LtI27KRVK8bu++6L/CBtQ3OZePbqC3bcrwGzTqQ==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.64.9': + resolution: {integrity: sha512-8Apr0Khn0r2MUsDtcOMbp85fDdXsX/E+iLhO17WUjG24m3O8ChArqI0isI7CAdj9Ouq177PHtVtEUpMNE1C4Gw==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.64.9': + resolution: {integrity: sha512-H+upy4DhBcBZlUsCAMyr8wR0Dg9kj8sGloVZdZ7va2heJM/5jnROxI47dtXseJjlD/VoQe6MrXhY3b5ikOq/Vw==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.64.9': + resolution: {integrity: sha512-b50NS9TbAEK/b16vBoKrkeNwy+HvGBXmtBbzX4wcodWOh9dQZvRTN9rUyElIXa36QnwXhU9PAVVkZpqRzSi2Tg==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm-musleabihf@4.64.9': + resolution: {integrity: sha512-SdqcudB/FzjLESsRMgXhV+FXGtf6usxXwlMoRW7D/XS3f9CZ4T4wycRBu2h9bVl2AOaPpunoA8ftAM/MF4altQ==} + cpu: [arm] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-arm64-gnu@4.64.9': + resolution: {integrity: sha512-dg19FFRoovN+KZ+gMHBAq4Do8PgQmBcxpuhux57OuiR0QLavfn8uPBY8CP+UO50bO+xf0tK0GlqI/jld++5E6g==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm64-musl@4.64.9': + resolution: {integrity: sha512-+jyv5ofGmpAvtrzLjSr/e4syskeikEp5L82bUzB76auwOgK1VNVwZV/F2g1Pes9bhTznbejOefAqPglHSKYmTA==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-loong64-gnu@4.64.9': + resolution: {integrity: sha512-MKFXxqmkzCbtNvx/vjiJdss44eRtVabhCtDWcCFD9NHGwP+YkqnM/slnEsv/3fsoq9ukTtudraAjGhptrUPCVg==} + cpu: [loong64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-loong64-musl@4.64.9': + resolution: {integrity: sha512-lhARcOT6n7Ni9hpQRq8LZjbuoW+G/GXaW4Jfhx2MbmjnCj9XxLMRTceJIMpiMLQVWm+qxe7oq1sYvlIGOAW34Q==} + cpu: [loong64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-ppc64-gnu@4.64.9': + resolution: {integrity: sha512-oORQzGxZ1oHghJwLdwc8Ni0SY9otILAeXsWdiImTF4F5HkWJUwh5s/269PF5tYILNC1z/3RwFsrgcHPguBcb0g==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-ppc64-musl@4.64.9': + resolution: {integrity: sha512-J2JQHQt7oR1uutd2OSwbV2Qpb2LI5gggPolbkUwDe7vn/0dnduZ0w6EIbGnZUAw7uIKaMgfVylcH6V+Aov8kRA==} + cpu: [ppc64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-riscv64-gnu@4.64.9': + resolution: {integrity: sha512-bWaKLrfzeQ9mOzJJxXbPgw2RH6VAaTJrb/60Tqf7YSMxubG8780Hzm7Us+D6qVW8QRGJYl4VUvVXxnRB0o9zvQ==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-riscv64-musl@4.64.9': + resolution: {integrity: sha512-TFJyaCB9NsvSyvVGQgTSRD9XgxsAq99ivDDkt9KAySlrNW5Obsd1kQpvoCvBCOLq+JlJTjmtroLH0wp8M8mEsA==} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-s390x-gnu@4.64.9': + resolution: {integrity: sha512-DvmOM5xz/wDnUJFVjqP32ahalxn7BDuvO25bpuFOrb50AIFCCcFPN4lWWUDD1c8Ddv9sMO9SXyqtOet8G8u9cQ==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-gnu@4.64.9': + resolution: {integrity: sha512-aFzokHK3yE00mzAvKm/PY76OsOOTjvoTGE82Vp89iBDyD2wUBlV4ZsR2tWkRECTEFk6TC4Yc3zaEWjPqq1vstQ==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-musl@4.64.9': + resolution: {integrity: sha512-t/yMdeaaQUuNNpmT7taBmH2VvHzgT4YA/IaKVE3qVr4PYQemn/kmJkL4uG4UvTLcWXQd0MSoOa/3URYSWGmUEg==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rollup/rollup-openbsd-x64@4.64.9': + resolution: {integrity: sha512-4dnxKQ8GHARyjqAU87q5UWhywZTpIbR2VWhtACdC37GD1SGszmvb3TaBFVA4n+fnDHSKMut4ZJ63hVFwgnxVtg==} + cpu: [x64] + os: [openbsd] + + '@rollup/rollup-openharmony-arm64@4.64.9': + resolution: {integrity: sha512-1qdQj6IrNoR0xFvrCQHmhBXe9HMbBGNTFi+3n4jKMt2rTx4k0aeAdraZU4WDOMfL9tAwS8/TRSuquvNuPQ+Gpw==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.64.9': + resolution: {integrity: sha512-yc1GSEHIYhKGN5WSaJc+eMy8bZvzcvAmflEgFh8L3xcy8dYxGmfrudyBnBFde9f6JzOa1kFqocF8BHaWybjQoA==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.64.9': + resolution: {integrity: sha512-VzHGvosAkLIzrwqvSgJBPDmGFTF/yE8OtMT4H5z8pM1NA0NiPpvTYnUh+9xPd+d5oy/wqF317FmJ1I8Kk8pp0Q==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.64.9': + resolution: {integrity: sha512-FB77txy1PiAcJgG72nOLA6R0S3PRZahs8Spx0z2yseDUkoMmJcrQghiebJ2JHZ74cCOVlX/MYd4dUbJtJJ8fow==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.64.9': + resolution: {integrity: sha512-IoIgQLpK1DbOcQf1vX+i5oe5LXypsCVb1j/mU6BLAbOGmXH4E+j4kMfgZRwPYUohVBurNyVMgIKVM5dR6xA0kA==} + cpu: [x64] + os: [win32] + + '@sindresorhus/is@7.2.0': + resolution: {integrity: sha512-P1Cz1dWaFfR4IR+U13mqqiGsLFf1KbayybWwdd2vfctdV6hDpUkgCY0nKOLLTMSoRd/jJNjtbqzf13K8DCCXQw==} + engines: {node: '>=18'} + + '@sindresorhus/merge-streams@4.0.0': + resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} + engines: {node: '>=18'} + + '@speed-highlight/core@1.2.24': + resolution: {integrity: sha512-qeW2e1l78afw8VhRPfPQ1Gjj+KU5XFQ/OFV5ti6eTa9bruO7mJyZtA4vw0ofqmA3tKCkROE9xLk3VZoeRc98nw==} + + '@thunderid/browser@1.3.0': + resolution: {integrity: sha512-O6DHlUyVFfBaNcJDEXACLU4NJMrNjDlqAuzesvJ+8a0Gl5g8WFK53rpx027e/rWICG0vcGe2UVZuhvZq5Z511A==} + + '@thunderid/javascript@1.4.0': + resolution: {integrity: sha512-qHfIFzXOQTN1nhuBT91Tr8bLPvfyEDa7gUQSL7GNcJkcyyKfJ77meIwr91lCme0ySFUnTeKl0Bk+R8iIJiKXBw==} + + '@thunderid/node@1.3.0': + resolution: {integrity: sha512-hAFf4Bv3JZTcatF7Y/iarbd3lYLbIkz6SHzGKG5HOwh/a/Ip8qpu7u4npF6/0cNzrvZzY5g6awIymsIav75Xqw==} + + '@thunderid/nuxt@1.3.0': + resolution: {integrity: sha512-Vx+gkFQd0xShBED6sRLOr8hCz2oqmoD+q9P5+clGM5ptVFHxJL7Qveo+7VGgvSwpjfsUsn5kGwDoLfBGX5QbBA==} + peerDependencies: + nuxt: '>=3.10.0' + vue: '>=3.5.0' + + '@thunderid/vue@1.4.0': + resolution: {integrity: sha512-a/38OLJOb7vfyTgRsrbxh1SaDpoWRok9dg0nHO0KPjy5uKSHIEFKaPgbthd879zuuC0Pfm1jcovr3E5gmjtZ0w==} + peerDependencies: + vue: '>=3.5.0' + vue-router: '>=4.0.0' + peerDependenciesMeta: + vue-router: + optional: true + + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} + + '@types/resolve@1.20.2': + resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} + + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + + '@unhead/bundler@3.4.3': + resolution: {integrity: sha512-noUTzazRB4fMgO/nluoirrZJXngNbNb3sQzIslA805tKkwakRv2fib4Xe4EdiTuNB7V5XmpUFvfQkKRdBQ9qAA==} + peerDependencies: + '@unhead/cli': ^3.4.3 + '@vitejs/devtools-kit': ^0.7.6 + esbuild: '>=0.17.0' + lightningcss: '>=1.20.0' + oxc-parser: '>=0.98.0' + rolldown: '>=1.0.0' + unhead: ^3.4.3 + vite: '>=6.4.2' + webpack: '>=5.0.0' + peerDependenciesMeta: + '@unhead/cli': + optional: true + '@vitejs/devtools-kit': + optional: true + esbuild: + optional: true + lightningcss: + optional: true + oxc-parser: + optional: true + rolldown: + optional: true + vite: + optional: true + webpack: + optional: true + + '@unhead/vue@3.4.3': + resolution: {integrity: sha512-Wrmk62oC/V1EcBSKRDuy77kVaBtBXXsj6b+vEEWvmfo9AQfpLlc2b6vvvSj9WnXr8VY1ksKHj49Ejo8J/wLSOA==} + peerDependencies: + vite: '>=6.4.2' + vue: '>=3.5.18' + webpack: '>=5.0.0' + peerDependenciesMeta: + vite: + optional: true + webpack: + optional: true + + '@vercel/nft@1.11.0': + resolution: {integrity: sha512-m1QFg+U+3yPOnP1xSYJ73UIRxLOXdts1JOhiOiyPYqEsALgrXFFINvgUaD6R6iNvaBFAjHllBCbkfx4FuOdpaA==} + engines: {node: '>=20'} + hasBin: true + + '@vitejs/plugin-vue-jsx@5.1.6': + resolution: {integrity: sha512-YXvi4as2clxt6DFw5+a0tTA97ntiQXm/raR8ofNj3aNwwdlVGTiG2gp7EvfZW17P50acL/9bP0ccF4XnqNmlgA==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + vue: ^3.0.0 + + '@vitejs/plugin-vue@6.0.10': + resolution: {integrity: sha512-b80aUQh3n+qEzzZm5oQp3rT2QImeCx58K6eFl/RkJ3d65KW0kTuv5lNsLRVAjbW9YRUpo/wzmvzMgV34bTAItA==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + vue: ^3.2.25 || ^3.6.0-rc.10 + + '@vue-macros/common@3.1.4': + resolution: {integrity: sha512-/5Fv+6DgIcM9ajY05ZmKBv+LMX1M9A0X+IUwDRVdt67ciw8OV9bvG2r34p3RiEadlsQybjhKPRKNXDC8Bp23cw==} + engines: {node: '>=20.19.0'} + peerDependencies: + vue: ^2.7.0 || ^3.2.25 + peerDependenciesMeta: + vue: + optional: true + + '@vue/babel-helper-vue-transform-on@2.0.1': + resolution: {integrity: sha512-uZ66EaFbnnZSYqYEyplWvn46GhZ1KuYSThdT68p+am7MgBNbQ3hphTL9L+xSIsWkdktwhPYLwPgVWqo96jDdRA==} + + '@vue/babel-plugin-jsx@2.0.1': + resolution: {integrity: sha512-a8CaLQjD/s4PVdhrLD/zT574ZNPnZBOY+IhdtKWRB4HRZ0I2tXBi5ne7d9eCfaYwp5gU5+4KIyFTV1W1YL9xZA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + peerDependenciesMeta: + '@babel/core': + optional: true + + '@vue/babel-plugin-resolve-type@2.0.1': + resolution: {integrity: sha512-ybwgIuRGRRBhOU37GImDoWQoz+TlSqap65qVI6iwg/J7FfLTLmMf97TS7xQH9I7Qtr/gp161kYVdhr1ZMraSYQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@vue/compiler-core@3.5.44': + resolution: {integrity: sha512-k34nCytbK8PQ1gR2mGROYOw6Pnv/mumqIdrZ3x2tbyXZDWm7ViKGLTfdB+DRrWqEQsLgGJvn0WN9jBif5zCTLQ==} + + '@vue/compiler-dom@3.5.44': + resolution: {integrity: sha512-W5AoBFWdw1lQAKiHowkfgFKFab82oSRT6sGsPfw/q1GRjsy/ZJFLHGhJyBRIFN9APLTUduDH9U2JAiPOIyKuYg==} + + '@vue/compiler-sfc@3.5.44': + resolution: {integrity: sha512-dzHmQ4jXTpdr5FjIQUeykVakN/uzqFbUo9/C5ikBFg3a3PeM6uRxeczx1ZbXBML0/zJstEh3ygYipzR5Z7b2Pw==} + + '@vue/compiler-ssr@3.5.44': + resolution: {integrity: sha512-xr5gb1JVHlfXJwSlRz1FeP6uxoazdzHuMTVLE7up+4Vrqxk219CvxLPxD9NXBt47yvZW7+p4DXfyp4O1fkByIA==} + + '@vue/devtools-api@8.2.1': + resolution: {integrity: sha512-6u4vXBlIBAC1wMplIZgpyPn7uh/s4Bf6F5bMzvLv+EdJ0aHs/+4B7Ygv864EStQSjRbsRzTko/kUG1A1IejQ3A==} + + '@vue/devtools-core@8.2.1': + resolution: {integrity: sha512-s/VfAY9oDTb/kFEWmy461jaFde2MIV1RO/gi1vwM+PAZBZ/Pc2Ndu3BNBdZUze8QDUuyYvElbEEGA83syjJfzA==} + peerDependencies: + vue: ^3.0.0 + + '@vue/devtools-kit@8.2.1': + resolution: {integrity: sha512-FIGIuq3AWReEpbAHY/cRGeHDfI0qOb8OCQ3YjbEAX04uaxIDbGc9rhkbVcG7rnfHPXE3RsU5KrWOu9V/okd8AQ==} + + '@vue/devtools-shared@8.2.1': + resolution: {integrity: sha512-Fkac7lUdGReh6pVOi3AYPRGe82LQqRmAfThW7RRligOAP0ZA/Z1z9XLHDM9dv34pV2HRc79DK8uKPeG2fLnA/g==} + + '@vue/reactivity@3.5.44': + resolution: {integrity: sha512-u+QJdKeBBEADkPdevsL+6E12QlYVfBD8Zcw5qjDQKtamI6l14KyqazJMobhCKelhWN5zpyKUiEDoTyHE93cqWw==} + + '@vue/runtime-core@3.5.44': + resolution: {integrity: sha512-uEa/ndwjhrrhnOfb2p+sZy6zeoamJOISqaLSJGk/8R6nABT1ZldpzcJoPzKj+zHVomVBPcmQYyC2r4LtvDV6CQ==} + + '@vue/runtime-dom@3.5.44': + resolution: {integrity: sha512-3fc4ARcXVhVBaJ3ujWiNZJARD6pkyRcwG+ZYhMzjKtKUp7MAY0HLwr7r3Smep3Li6ZaWT6ewdmx8XqdaD5oNZg==} + + '@vue/server-renderer@3.5.44': + resolution: {integrity: sha512-R4S1UoH4h5Frrauv8Z5XE5TxV9oBiUSgWIC4TyVK1FK+RocRnOLwFA5Xcmo2011RlgJp+AbZCnw6afrhlgRuUQ==} + + '@vue/shared@3.5.44': + resolution: {integrity: sha512-H82XLH0DjmSOdbEwO15x3QTo1f5PWEtv237eLpYKc0mqLu+B8hnq16lFWmuBmNurkeiG3wr+oM1FhOll/YVFRg==} + + abbrev@3.0.1: + resolution: {integrity: sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==} + engines: {node: ^18.17.0 || >=20.5.0} + + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + + acorn-import-attributes@1.9.5: + resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} + peerDependencies: + acorn: ^8 + + acorn@8.19.0: + resolution: {integrity: sha512-oJlA3XiRm7Cyk6qFD2Jn8ak9B7jSy0qy00ADO3+8dpT0LSjFihQYv4C02LFCSYJV3Q37xYwwRy5m+IpIiUzqWw==} + engines: {node: '>=0.4.0'} + hasBin: true + + agent-base@7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} + engines: {node: '>= 14'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.4.0: + resolution: {integrity: sha512-KzTVk2tCWAHtYrvvvaP8bJKJq2pVinhLcGEQdtLIYPbmNGNyYe8QwNaTUYQp2J7/vIsUKt5QCqAfUkYyG9DkOw==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} + + ansis@4.4.0: + resolution: {integrity: sha512-9k3v7xcHwgdO/DruxGIg4HtjvlAZlcnsX/mzqUb1t3NkYnl9kK2UJ+Gq0io+vQf7iT//BD/HB/NBkUR1LWxoeA==} + engines: {node: '>=14'} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + archiver-utils@5.0.2: + resolution: {integrity: sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==} + engines: {node: '>= 14'} + + archiver@7.0.1: + resolution: {integrity: sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==} + engines: {node: '>= 14'} + + args-tokenizer@0.3.0: + resolution: {integrity: sha512-xXAd7G2Mll5W8uo37GETpQ2VrE84M181Z7ugHFGQnJZ50M2mbOv0osSZ9VsSgPfJQ+LVG0prSi0th+ELMsno7Q==} + + ast-kit@2.2.0: + resolution: {integrity: sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw==} + engines: {node: '>=20.19.0'} + + ast-kit@3.0.0: + resolution: {integrity: sha512-8OG92q3R35qjC/4i6BLBMg8IB+fClWu/1PEwg2Z9Rn+BuNaiEgJzpzn+pxWOdHJWDCAwu2JP0wCDTozAM4QirQ==} + engines: {node: ^22.18.0 || >=24.11.0} + + ast-walker-scope@0.10.0: + resolution: {integrity: sha512-KzvoxDfXNz2Gm8KYLh47K3qcY3Zza3WKOuh2xoqa7LBu6MDKWAZLovJtU9DuAd/Er+rhQHCRn619lHS5U+qmhw==} + engines: {node: ^22.18.0 || >=24.11.0} + + async-sema@3.1.1: + resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==} + + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + + autoprefixer@10.6.1: + resolution: {integrity: sha512-cL1Qz6ADZhcEbny/8HPfe99J6HhNoYtpX2LFLIbhgGE7Q1hlQVkYFdetDN7Id3KiQxhDrHwzlHr/YQCnZ8+xSA==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + b4a@1.9.0: + resolution: {integrity: sha512-dpfcF9fDNR6++cthXR67iyhgqWy9CBouAvIWhIntzBG6cvK/cnIPiZQjBwi/ZqjjBEDGfoNDtmB0kTjroOJ3pQ==} + peerDependencies: + react-native-b4a: '*' + peerDependenciesMeta: + react-native-b4a: + optional: true + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} + + bare-events@2.9.2: + resolution: {integrity: sha512-AIPKioV7/Y/8KfZ3AAhjPJxLLbY49S64Ym5DakZlUg75qQiTgUq9hEJoEwa4eUezPUlXRy/i5NpsKvo9jgKmoA==} + peerDependencies: + bare-abort-controller: '*' + peerDependenciesMeta: + bare-abort-controller: + optional: true + + bare-fs@4.8.4: + resolution: {integrity: sha512-MPC2eyrpbk3A873sK4y6rk+Iv4o2enxTjHZ8zH3HO0mjrpm5XjnguY2XmfidIsDV6vnjpbMBKUAJpV0ISD2SsQ==} + engines: {bare: '>=1.28.0'} + peerDependencies: + bare-buffer: '*' + peerDependenciesMeta: + bare-buffer: + optional: true + + bare-path@3.1.2: + resolution: {integrity: sha512-ZyKbsuuqK6Ag0K8pX6V5Txq6XeJRvY+wXucnFGRjiyVYP9YWDpIQugk/b+enRYrEYBJaqLzghRQpXPMR7341Nw==} + + bare-stream@2.13.4: + resolution: {integrity: sha512-PcrQ8lVLbiJscNm1Kez+Yp4Gy4AHGcN1lzwjvf5NybWen7VvEgUfyfnXYJ2zNqWnzOfCb1Abq6lH8ti0syQszA==} + peerDependencies: + bare-abort-controller: '*' + bare-buffer: '*' + bare-events: '*' + peerDependenciesMeta: + bare-abort-controller: + optional: true + bare-buffer: + optional: true + bare-events: + optional: true + + bare-url@2.5.5: + resolution: {integrity: sha512-iM9qJCruvpt2rPaLsrumVDru9pogI7PHziHIa9kTNRFt8C8HuSa+kI9kFezK+NvHEFnnz71rKGZ1EAilq/3V/Q==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + base64url@3.0.1: + resolution: {integrity: sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==} + engines: {node: '>=6.0.0'} + + baseline-browser-mapping@2.11.29: + resolution: {integrity: sha512-YeesxhUmR4h5y5V8KF8iBCqJb8YFrBJ++XBTeGcWIaQOYXGN19JM0FoiOjAhwuDoln8owMgXcWBmgHtYSkky2w==} + engines: {node: '>=6.0.0'} + hasBin: true + + bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + + birpc@2.9.0: + resolution: {integrity: sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==} + + birpc@4.2.0: + resolution: {integrity: sha512-KxgKcZPfrtzJDDALHPguGpGJUrzdgpymyiQQgzFjWreHMOpWrnFNVREr5J48x2DBh8ZVioscrV1SBkDipGiX+Q==} + + brace-expansion@2.1.7: + resolution: {integrity: sha512-uZbew1NqdmPDTMJ8ah1y+b+9QEJrfkXFk3RcTQw3X0jW/xRUvFKsg1CfQdSYGdTbXZWExtU3J3ccxtnfw1Fi0g==} + + brace-expansion@5.0.12: + resolution: {integrity: sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==} + engines: {node: 20 || >=22} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.29.3: + resolution: {integrity: sha512-1R4kiYKXGViqEN0CnoDrXc1StD9niAwu+j2dukWzrD4bJgsD4lDmEp0CRbc6E/vYJIfTHwPmwyaKtVSudICdPA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer-crc32@1.0.0: + resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} + engines: {node: '>=8.0.0'} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + bundle-name@4.1.1: + resolution: {integrity: sha512-DdH81/zPLVS11EUgWq3tEu/xn+EzljlMYooDNdzWEnFha3R3NBMpMV1UqYIpjYHV/SgpFKMIX1Oh7o06SjM/oA==} + engines: {node: '>=18'} + + c12@3.3.4: + resolution: {integrity: sha512-cM0ApFQSBXuourJejzwv/AuPRvAxordTyParRVcHjjtXirtkzM0uK2L9TTn9s0cXZbG7E55jCivRQzoxYmRAlA==} + peerDependencies: + magicast: '*' + peerDependenciesMeta: + magicast: + optional: true + + cac@7.1.0: + resolution: {integrity: sha512-LMDU/U2yA4IPIY8KT0NsNPWEYZvAMkbgyspxJ6btJaYV+WMDOHAZCmB0lsTObiHaRS1V/ztKAl7+TSkTqXyeoA==} + engines: {node: '>=20.19.0'} + + caniuse-api@4.0.0: + resolution: {integrity: sha512-B0hQ1OLyJuHTQSOWXvwibWqM6DCoqJdvBA6X1S/53bd4XU7LJ1yurIPlrsouol3mw1jh9pGI4ivubSpmJeIqCA==} + + caniuse-lite@1.0.30001816: + resolution: {integrity: sha512-+8Yx7BXCoqk6IF8yTicjfUR6D/ldJzdlsodlEOiOSPmhK844WIgk67/zIQaGAOxNkZyyvBlrRFnLvqKIoqbAFw==} + + chokidar@5.0.0: + resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} + engines: {node: '>= 20.19.0'} + + chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} + + citty@0.1.6: + resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} + + citty@0.2.2: + resolution: {integrity: sha512-+6vJA3L98yv+IdfKGZHBNiGW5KHn22e/JwID0Strsz8h4S/csAu/OuICwxrg44k5MRiZHWIo8XXuJgQTriRP4w==} + + clickable-path@0.1.1: + resolution: {integrity: sha512-ROn/mdV2pR8WFdpJjFDCSouLRg9myf95xacO1iy8G/AVO/x5y124pjF3EaoWrTBRWC3vh0DPqa/MhKyx3mMeKg==} + engines: {node: '>=22.1.0'} + + cliui@9.0.1: + resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==} + engines: {node: '>=20'} + + cluster-key-slot@1.1.1: + resolution: {integrity: sha512-rwHwUfXL40Chm1r08yrhU3qpUvdVlgkKNeyeGPOxnW8/SyVDvgRaed/Uz54AqWNaTCAThlj6QAs3TZcKI0xDEw==} + engines: {node: '>=0.10.0'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + + compatx@0.2.0: + resolution: {integrity: sha512-6gLRNt4ygsi5NyMVhceOCFv14CIdDFN7fQjX1U4+47qVE/+kjPoXMK65KWK+dWxmFzMTuKazoQ9sch6pM0p5oA==} + + compress-commons@6.0.2: + resolution: {integrity: sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==} + engines: {node: '>= 14'} + + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + + confbox@0.2.4: + resolution: {integrity: sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==} + + confbox@0.3.1: + resolution: {integrity: sha512-cKUSoKa8YxFZZSmraVi7onONx3amu77ngK3kGpsYHDH7drPwCRkQE1RYMPlLRrMtnciRj274XNRxcHxnKmDSnA==} + + consola@3.4.2: + resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} + engines: {node: ^14.18.0 || >=16.10.0} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie-es@1.2.3: + resolution: {integrity: sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw==} + + cookie-es@2.0.1: + resolution: {integrity: sha512-aVf4A4hI2w70LnF7GG+7xDQUkliwiXWXFvTjkip4+b64ygDQ2sJPRSKFDHbxn8o0xu9QzPkMuuiWIXyFSE2slA==} + + cookie-es@3.1.1: + resolution: {integrity: sha512-UaXxwISYJPTr9hwQxMFYZ7kNhSXboMXP+Z3TRX6f1/NyaGPfuNUZOWP1pUEb75B2HjfklIYLVRfWiFZJyC6Npg==} + + core-js@3.42.0: + resolution: {integrity: sha512-Sz4PP4ZA+Rq4II21qkNqOEDTDrCvcANId3xpIgB34NDkWc3UduWj2dqEtN9yZIq8Dk3HyPI33x9sqqU5C8sr0g==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + crc-32@1.2.2: + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} + engines: {node: '>=0.8'} + hasBin: true + + crc32-stream@6.0.0: + resolution: {integrity: sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==} + engines: {node: '>= 14'} + + croner@10.0.1: + resolution: {integrity: sha512-ixNtAJndqh173VQ4KodSdJEI6nuioBWI0V1ITNKhZZsO0pEMoDxz539T4FTTbSZ/xIOSuDnzxLVRqBVSvPNE2g==} + engines: {node: '>=18.0'} + + cross-fetch@4.1.0: + resolution: {integrity: sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + crossws@0.3.5: + resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==} + + crossws@0.4.15: + resolution: {integrity: sha512-NsUOpDZosz7nyI+qEIl05yaiXOWaXH2oTeM+XBWtiSWZtb5rzcIsl1AST/HzM2jzUn76eFuyrkn83E6iSBRUvw==} + peerDependencies: + srvx: '>=0.11.5' + peerDependenciesMeta: + srvx: + optional: true + + cssnano@9.9.0: + resolution: {integrity: sha512-JS914Th2NRk2979JHJvbE3UjPtLmyXtPnr23NNul9BOQwEt9r/A2aM1STrKtKHAPc3XRaUDwMoqkXnjEpgHkAw==} + engines: {node: ^22.22.3 || ^24.15.0 || >=26.0} + peerDependencies: + postcss: ^8.5.29 + + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + + db0@0.3.4: + resolution: {integrity: sha512-RiXXi4WaNzPTHEOu8UPQKMooIbqOEyqA1t7Z6MsdxSCeb8iUC9ko3LcmsLmeUt2SM5bctfArZKkRQggKZz7JNw==} + peerDependencies: + '@electric-sql/pglite': '*' + '@libsql/client': '*' + better-sqlite3: '*' + drizzle-orm: '*' + mysql2: '*' + sqlite3: '*' + peerDependenciesMeta: + '@electric-sql/pglite': + optional: true + '@libsql/client': + optional: true + better-sqlite3: + optional: true + drizzle-orm: + optional: true + mysql2: + optional: true + sqlite3: + optional: true + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + default-browser-id@5.0.1: + resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} + engines: {node: '>=18'} + + default-browser@5.5.1: + resolution: {integrity: sha512-m1pAzaJgZ/gssEqlOhJkPJp8Xly7QyW6xcrkUa2KKcDeDSEMP7X8xipU3snUcfisTQx0w1AGae+9UtJSfVnXGw==} + engines: {node: '>=18'} + + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + + defu@6.1.5: + resolution: {integrity: sha512-pwdBJxJuJXmqrLO6s0VBmfbRz+G7FUzkjldAsdi9Yrv86mPyzq0ll1o8+8gB4Gsr6GJHbK1Lh3ngllgTInDCjA==} + + defu@6.1.7: + resolution: {integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==} + + denque@2.1.0: + resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} + engines: {node: '>=0.10'} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + destr@2.0.5: + resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} + + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + + devalue@6.0.3: + resolution: {integrity: sha512-3woMEITftG1wKeO/4d/QXH1DVKctTSZg3jNGPpjp9hNr5Hos8MCFF5McTML5ZtgKDObm2R591B0spRp2IVernA==} + engines: {node: '>=18'} + + diff@8.0.4: + resolution: {integrity: sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==} + engines: {node: '>=0.3.1'} + + dom-walk@0.1.2: + resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} + + dompurify@3.4.13: + resolution: {integrity: sha512-2vmYIoqjze2d+kakP8S/nS5shfsl587kzwEjcGlTdiksUVgFHnFCsLYDVj/JNqJVOQZGSYBTmuycv0PodwmnMQ==} + + dot-prop@10.2.0: + resolution: {integrity: sha512-BTJ9aZYL3vCfZlZOBLy9v8TUqWGQ0pzFnygKwFZt5udj6viBoFIBviKPUoZLDCPn1FoXffv6McQFDenrm5Krfw==} + engines: {node: '>=20'} + + dotenv@17.4.2: + resolution: {integrity: sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==} + engines: {node: '>=12'} + + duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + electron-to-chromium@1.5.459: + resolution: {integrity: sha512-4SC9HHSFjO/liAhifpdOL5hG9b4BP7/5G3y3UPZVO8trlAXr1CaUEEJL0gWK3kOcYcZrOA5rkwG45Gra/lTIgg==} + + emoji-regex@10.6.0: + resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + + entities@7.0.1: + resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} + engines: {node: '>=0.12'} + + error-stack-parser-es@1.0.5: + resolution: {integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==} + + error-stack-parser-es@2.0.1: + resolution: {integrity: sha512-J36ntO+rMQVRuR/umlmxmfLi4TpWwtmTnHoJoXTiC2xDNazs0VDPKcX6pbhZMDd2HFtH9isMBJXMdbki+A++Pg==} + + errx@0.1.2: + resolution: {integrity: sha512-chfpPHmCerdo/rXr/nNvPZRkV4WwDRwzwnsJ0Uzz3tVi8Z41tDctRjduYy1138ii77AFlts1qvWtX3g/Acg91Q==} + + errx@0.2.2: + resolution: {integrity: sha512-HaPN6cxm6iZ9bIbQQ5orChcw7SY5smUzM08ZMc6OtV4UQhrrc3Ms1G8Ww2n/9lXkWqiioNTssF8bCvchrSbFEQ==} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-module-lexer@2.3.2: + resolution: {integrity: sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==} + + esbuild@0.28.2: + resolution: {integrity: sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + + events-universal@1.0.1: + resolution: {integrity: sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + + exsolve@1.1.3: + resolution: {integrity: sha512-kuzL9zherLQoqDeQaS55AiiIg1kb4KYXaSusTtgZTPlvKP2gGCI82LNmBNh5RjDVUXIcmgx+/Mx7vPwRzBbhJA==} + + fast-fifo@1.3.2: + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-npm-meta@2.2.0: + resolution: {integrity: sha512-99jPl8JkCSCa4VlboNU1XuL98ijm74Pm9CGo6H4BoMVoVh1uhguQcvwLgXDT8Vkl2qj/UEQ0J9gD8beHjTFk1w==} + hasBin: true + + fast-sha256@1.3.0: + resolution: {integrity: sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ==} + + fast-string-truncated-width@3.0.3: + resolution: {integrity: sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==} + + fast-string-width@3.0.2: + resolution: {integrity: sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==} + + fast-wrap-ansi@0.2.2: + resolution: {integrity: sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==} + + fastq@1.20.3: + resolution: {integrity: sha512-XKv5nnLs6nLF71NgiKJLIZFLkPyIEuOselLG7ujZnGrRfQK8HpvY+WqKhAJUAdLomwVHErVS4LfxFlPq0/FTAw==} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + fetchdts@0.2.0: + resolution: {integrity: sha512-PJb4ZTGT2/wK78RmVrxZITStWabhZlKBsL52VOgq+c7clEkdHdEB+0rtzrXCbZJqeYJj+IwNWYqB5/G6vouA6A==} + + file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + flru@1.0.2: + resolution: {integrity: sha512-kWyh8ADvHBFz6ua5xYOPnUroZTT/bwWfrCeL0Wj1dzG4/YOmOcfJ99W8dOVyyynJN35rZ9aCOtHChqQovV7yog==} + engines: {node: '>=6'} + + fnv1a-64@0.1.2: + resolution: {integrity: sha512-mJbcILTPybAR1jdOwt/lVv8N2cffeJFFP+gVbSAwLEx1ujXH27RpPd8Rokec/KX9c76UYIB6Co+H4lQzxPnJfA==} + + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + + fraction.js@5.3.4: + resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} + + fresh@2.0.0: + resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} + engines: {node: '>= 0.8'} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + fuzzysort@4.0.2: + resolution: {integrity: sha512-3c7yD6rK1EXIsqpcu1ZVzXJugODWNMzvUij6yTiziaAHrpNS8kzFOI9mJLE8pmG4K9JOaVgzQRgklfOEk8f4Tg==} + + generic-names@4.0.0: + resolution: {integrity: sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-east-asian-width@1.7.0: + resolution: {integrity: sha512-XjH1AECxf0giL2V1aU8vKyRR2ppRUb5c0EvT7zuJTokQ74bNo52zOtghqdWIqrhUD79fo3x0WfKZdOqxF6LG1Q==} + engines: {node: '>=18'} + + get-port-please@3.2.0: + resolution: {integrity: sha512-I9QVvBw5U/hw3RmWpYKRumUeaDgxTPd401x364rLmWBJcOQ753eov1eTgzDqRG9bqFIfDc7gfzcQEWrUri3o1A==} + + get-random-values@3.0.0: + resolution: {integrity: sha512-mNznaBdYcpz7UAdnOtDGcLdNwAa79mXl5htEyyZ51YaeAWNf2g4x/2yCVBdNNTbi35wX0Stc2PJXM7G6rcONOA==} + engines: {node: 18 || >=20} + + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + + giget@3.3.1: + resolution: {integrity: sha512-r+mvuDjrjMpsdw46Kmeydb8bdHm7wOKw8wNBtTndkjbPjgAp5oUJUxRE76wZFknxIPokfWvep2qSXK37aXE6zg==} + hasBin: true + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob@10.5.0: + resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} + 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 + hasBin: true + + glob@13.0.6: + resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==} + engines: {node: 18 || 20 || >=22} + + global-directory@4.0.1: + resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} + engines: {node: '>=18'} + + global@4.4.0: + resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==} + + globby@16.2.4: + resolution: {integrity: sha512-c8B/VNLmxRcmqqenRA9t+9IyOjf9+V6lTxPaUJLqOCONdQkWZ0ETYgX0qbtJqPsgCNusT9MZ5Jeidw8Eb9tn2g==} + engines: {node: '>=20'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + gzip-size@7.0.0: + resolution: {integrity: sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + h3@1.15.11: + resolution: {integrity: sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg==} + + hasown@2.0.4: + resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} + engines: {node: '>= 0.4'} + + hookable@5.5.3: + resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} + + hookable@6.1.2: + resolution: {integrity: sha512-+abwxtiEA52GCVIsQqut3S/uKTbUwYIp4Pe/vv+6py5XiXBCqMZHg6pA6Y5qhgLSEys0/cYuPbO0z1QFj5ZCmg==} + + http-errors@2.0.1: + resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} + engines: {node: '>= 0.8'} + + http-shutdown@1.2.2: + resolution: {integrity: sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + + httpxy@0.5.5: + resolution: {integrity: sha512-uDjmnPyp1q4Sgzf3w+J/Fc6UqcCEj0x4Wjp7OqK5dGhNeDgpyrAmnS6ey8QWrX3SWDon2DMKf9sBa5X9+CVyMA==} + + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@7.0.12: + resolution: {integrity: sha512-/8UvqAPU9DGTI9k4mxtf49U37Isfwr8Uts96+SBHIkFxPJnHS0Ew4f00sM4Scd8V8EjM0jUNtVDdv1kPdt35lg==} + engines: {node: '>= 4'} + + image-meta@0.2.2: + resolution: {integrity: sha512-3MOLanc3sb3LNGWQl1RlQlNWURE5g32aUphrDyFeCsxBTk08iE3VNe4CwsUZ0Qs1X+EfX0+r29Sxdpza4B+yRA==} + + impound@1.2.0: + resolution: {integrity: sha512-hbFh2WURN+XQ364SbblzubhEEj/B3qZCe80l/EHXPWM6/kZP2mvOllxwRBBWNxe4gLbqXZL0fxOZwoDCSlJZQw==} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@4.1.1: + resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + ioredis@5.11.1: + resolution: {integrity: sha512-ehuGcf94bQXhfagULNXrJdfnWO38v070jxSx/qE87Kjzmu2fU7ro5EFAb+OPituLqgfyuQaym5DlrNydW2sJ9A==} + engines: {node: '>=12.22.0'} + + iron-webcrypto@1.2.1: + resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} + + iron-webcrypto@2.0.0: + resolution: {integrity: sha512-rtffZKDUHciZElM8mjFCufBC7nVhCxHYyWHESqs89OioEDz4parOofd8/uhrejh/INhQFfYQfByS22LlezR9sQ==} + + is-core-module@2.17.0: + resolution: {integrity: sha512-J/vG0zBCbIKOQFfufSwyXdMrsohyJIUNkrnmo6WZGzoM7tr/lsbfW5b2BvisL6zsyMzK9UxV9L6c7AoFbyXHOA==} + engines: {node: '>= 0.4'} + + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-in-ssh@1.0.0: + resolution: {integrity: sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==} + engines: {node: '>=20'} + + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + + is-installed-globally@1.0.1: + resolution: {integrity: sha512-li88H4QGRoNMX27jEmY8nR515oJVspAgC/WFMlhHfFV8RJ4QyGpHhXnwAe9gH5RIgKmdYRUmrOhQobcgEjIdSw==} + engines: {node: '>=18'} + + is-module@1.0.0: + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-path-inside@4.0.0: + resolution: {integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==} + engines: {node: '>=12'} + + is-reference@1.2.1: + resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-wsl@3.1.1: + resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==} + engines: {node: '>=16'} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isexe@4.0.0: + resolution: {integrity: sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==} + engines: {node: '>=20'} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + jiti@2.7.0: + resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} + hasBin: true + + jose@6.2.3: + resolution: {integrity: sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==} + + js-tokens@10.0.0: + resolution: {integrity: sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + + klona@2.0.6: + resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} + engines: {node: '>= 8'} + + knitwork@1.3.0: + resolution: {integrity: sha512-4LqMNoONzR43B1W0ek0fhXMsDNW/zxa1NdFAVMY+k28pgZLovR4G3PB5MrpTxCy1QaZCqNoiaKPr5w5qZHfSNw==} + + launch-editor@2.14.2: + resolution: {integrity: sha512-NHJEb30MGBCkmZXLZwz25t37QR4aY03ZzPYUJXOJaOa92uWwExI9SBQUuIznBYc1xkD7cJNGX7oc3Nl3sq2kQQ==} + + lazystream@1.0.1: + resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} + engines: {node: '>= 0.6.3'} + + lightningcss-android-arm64@1.33.0: + resolution: {integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.33.0: + resolution: {integrity: sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.33.0: + resolution: {integrity: sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.33.0: + resolution: {integrity: sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.33.0: + resolution: {integrity: sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.33.0: + resolution: {integrity: sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + lightningcss-linux-arm64-musl@1.33.0: + resolution: {integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + lightningcss-linux-x64-gnu@1.33.0: + resolution: {integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + lightningcss-linux-x64-musl@1.33.0: + resolution: {integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + lightningcss-win32-arm64-msvc@1.33.0: + resolution: {integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.33.0: + resolution: {integrity: sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.33.0: + resolution: {integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==} + engines: {node: '>= 12.0.0'} + + listhen@1.10.1: + resolution: {integrity: sha512-6nt/86SkqUQSLW1ofz8MxC6RhRMqOl3ONISe6qqvJ3xj09aJWQx6DhgSZpugs3PX4PXdOas/WD6A9jx6J2N19A==} + hasBin: true + peerDependencies: + '@parcel/watcher': ^2.5.6 + peerDependenciesMeta: + '@parcel/watcher': + optional: true + + loader-utils@3.3.1: + resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==} + engines: {node: '>= 12.13.0'} + + local-pkg@1.2.1: + resolution: {integrity: sha512-++gUqRDEvcnN6Zhqrr+y/CkVEHhlrR96vZn3nZZPYzMcBUyBtTKzB9NadClFIsIVSsu+3i9tfk/erqy9kAmt7Q==} + engines: {node: '>=14'} + + lodash@4.18.1: + resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@11.5.3: + resolution: {integrity: sha512-U4N8FgzmWxc8k1VH8Kr6lQg18U7Fjvby6wXHVRX/ZZ7IwWbRMgrRbP0Wrb5q5NVinryp4SQampHKdvtecItxUg==} + engines: {node: 20 || >=22} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + magic-string-ast@1.0.3: + resolution: {integrity: sha512-CvkkH1i81zl7mmb94DsRiFeG9V2fR2JeuK8yDgS8oiZSFa++wWLEgZ5ufEOyLHbvSbD1gTRKv9NdX69Rnvr9JA==} + engines: {node: '>=20.19.0'} + + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + + magic-string@1.4.3: + resolution: {integrity: sha512-z12OxmaPGE0F4xlpGdjuAUckipLpQlTAuAmyGhNoD7ODpYUzvDfvtxUbjM/jwznyP178oju/KDdyi220wNJ0RQ==} + + magicast@0.5.5: + resolution: {integrity: sha512-UicdXN8zQ3JHlxVq+28afMXPr1z7WNY6+7EJnzTdQWkTAlMLF5fNCCKxJHBQwGaNGR11581EiQmQzx73+MvszA==} + + memory-cache@0.2.0: + resolution: {integrity: sha512-OcjA+jzjOYzKmKS6IQVALHLVz+rNTMPoJvCztFaZxwG14wtAW7VRZjwTQu06vKCYOxh4jVnik7ya0SXTB0W+xA==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + microdiff@1.6.0: + resolution: {integrity: sha512-w7JWt8Bno6I8h0rEqlxr4lNG4UbT1FVtWo42wWosIiaJ+rP3pXh7shCYDnyqBrYx36LJ1CZ64p8A62aVp0sJpQ==} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} + + mime-types@3.0.2: + resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} + engines: {node: '>=18'} + + mime@4.1.1: + resolution: {integrity: sha512-YAApRsTpM2+gnUFHhRNGfkX8NK0V5xj1nyQLufGlwEI+eX4xRsTcel2IXDuMEGSGjBvzykNW4VuoEACgwYe7BQ==} + engines: {node: '>=16'} + hasBin: true + + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + min-document@2.19.2: + resolution: {integrity: sha512-8S5I8db/uZN8r9HSLFVWPdJCvYOejMcEC82VIzNUc6Zkklf/d1gg2psfE79/vyhWOj4+J8MtwmoOz3TmvaGu5A==} + + minimatch@10.2.6: + resolution: {integrity: sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==} + engines: {node: 18 || 20 || >=22} + + minimatch@5.1.9: + resolution: {integrity: sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==} + engines: {node: '>=10'} + + minimatch@9.0.9: + resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} + engines: {node: '>=16 || 14 >=14.17'} + + minipass@7.1.3: + resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} + engines: {node: '>=16 || 14 >=14.17'} + + minizlib@3.1.0: + resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} + engines: {node: '>= 18'} + + mlly@1.8.2: + resolution: {integrity: sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==} + + mocked-exports@0.1.1: + resolution: {integrity: sha512-aF7yRQr/Q0O2/4pIXm6PZ5G+jAd7QS4Yu8m+WEeEHGnbo+7mE36CbLSDQiXYV8bVL3NfmdeqPJct0tUlnjVSnA==} + + mrmime@2.0.1: + resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} + engines: {node: '>=10'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + muggle-string@0.4.1: + resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} + + my-bad@0.2.11: + resolution: {integrity: sha512-K1R6DRz31BR7YYaDDLRr97XWKWku3SQhHKpDgz7i/VS3O3pvphIzbJIrrEXupSEmPtZElY9UzCrDc0nWvG4HyA==} + engines: {node: '>=22.12.0'} + peerDependencies: + vite: '>=6' + peerDependenciesMeta: + vite: + optional: true + + nanoid@3.3.20: + resolution: {integrity: sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + nanotar@0.3.0: + resolution: {integrity: sha512-Kv2JYYiCzt16Kt5QwAc9BFG89xfPNBx+oQL4GQXD9nLqPkZBiNaqaCWtwnbk/q7UVsTYevvM1b0UF8zmEI4pCg==} + + nitropack@2.13.4: + resolution: {integrity: sha512-tX7bT6zxNeMwkc6hxHiZeUoTOjVrcjoh1Z3cmxOlodIqjl4HISgqfGOmkWSayky3Nv9Z5+KQH52F8nmXJY5AAA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + xml2js: ^0.6.2 + peerDependenciesMeta: + xml2js: + optional: true + + node-fetch-native@1.6.7: + resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-forge@1.4.0: + resolution: {integrity: sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==} + engines: {node: '>= 6.13.0'} + + node-gyp-build@4.8.4: + resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} + hasBin: true + + node-mock-http@1.0.5: + resolution: {integrity: sha512-KQyt/wLjG3TAc7DOUhpqWzgd4ERxR80JOlTK5VE5R1S12IaPVN5qkj4klBce9HPG1Njuup4Sb5bljaT34lIyjw==} + + node-releases@2.0.59: + resolution: {integrity: sha512-5qr2okC4ItAI0hG5SaV0HoYMpnM/Y6+Oqr7AmPYy/2uEoGvS+GbSKLeRxSS1uAdu59yz0ouzcuXievSgg///WA==} + engines: {node: '>=18'} + + nopt@8.1.0: + resolution: {integrity: sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==} + engines: {node: ^18.17.0 || >=20.5.0} + hasBin: true + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + nostics@1.3.0: + resolution: {integrity: sha512-wzRsrJwNlFbqIRQt8aCeL2WE8USip/uuvGSOZV1D02CxX8ABTMbw8IywKjH7yWHETMXbWJI4OBpihg9rmz2Vyg==} + + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + npm-run-path@6.0.0: + resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} + engines: {node: '>=18'} + + nuxt@4.6.2: + resolution: {integrity: sha512-KfhAIuHQpxKbTN0ItGpkK0jgzjcOCSOf6FZB3wHk/aZ1OiAMsDvbqua1OGfxuEk3bSlK3X49WyFEL5TwEKm36w==} + engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0} + hasBin: true + peerDependencies: + '@parcel/watcher': ^2.1.0 + '@types/node': '>=18.12.0' + rolldown: ~1.2.1 + peerDependenciesMeta: + '@parcel/watcher': + optional: true + '@types/node': + optional: true + + object-identity@0.2.3: + resolution: {integrity: sha512-2J8Joz2Tf7aaylhqFvIUJHNgpuGR38Hh75Voq9GzTbStBxJUaOtN0K1aOd3cV5qp+ij1pMqRbPrGCGMOyX303w==} + + obug@2.2.1: + resolution: {integrity: sha512-XrsrhT5sybtKI6wakr2SPOlGZWWYbUXZ7a0jT8/QOeAPau+1X/bSegNe5YR75oJmEZQbKningirmGOEJCIk61Q==} + engines: {node: '>=12.20.0'} + + obug@3.0.0: + resolution: {integrity: sha512-5vvB5+W7ePv+p3uqxi+RcW1XAzLW0/hxt3/4X4Lc4qHudzOhmBiBwOY6DRob4WnanAEGvNcLjF+KNOufrUoEQw==} + engines: {node: '>=12.20.0'} + + ofetch@1.5.1: + resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==} + + ohash@2.0.12: + resolution: {integrity: sha512-65S/5gk9YSsaRjcyf7Nfa6h/d3E8/1gslpXfI4W7Dxn/oap8IKRuNT5VXkLQ1YFKIEg4apRY4Pj6aiwFzrDdmw==} + + on-change@6.0.2: + resolution: {integrity: sha512-08+12qcOVEA0fS9g/VxKS27HaT94nRutUT77J2dr8zv/unzXopvhBuF8tNLWsoLQ5IgrQ6eptGeGqUYat82U1w==} + engines: {node: '>=20'} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + open@11.0.4: + resolution: {integrity: sha512-++Zlftm0kVLPmzC06t6epuWmcRMDbI4z5P3NNX979WA/k23+NtSOynEGzsVfZwguKw2mi5umVgnBlJQMwRz4Pg==} + engines: {node: '>=20'} + + oxc-walker@1.1.1: + resolution: {integrity: sha512-Hwd7dq28zu/Er99+bpWp16CGwFrhyalJh0W3JOB7XpPvgWo3MqMi2ksWGKuzzA9zt50mJ2pIUwR5lpAdZ9ACNQ==} + peerDependencies: + '@oxc-project/types': '>=0.98.0' + oxc-parser: '>=0.98.0' + rolldown: '>=1.0.0' + peerDependenciesMeta: + '@oxc-project/types': + optional: true + oxc-parser: + optional: true + rolldown: + optional: true + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + package-manager-detector@1.9.0: + resolution: {integrity: sha512-zAMfbta9nPA8AKkA4WdmNAT8R8s6Dk0/xwPsqNnRidMFcLo1YkLuPDTgs2f64XdzS8vbLNnoJ+uUIkgbz7oRHA==} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + path-scurry@2.0.2: + resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==} + engines: {node: 18 || 20 || >=22} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + perfect-debounce@2.1.0: + resolution: {integrity: sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} + engines: {node: '>=8.6'} + + picomatch@4.0.7: + resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==} + engines: {node: '>=12'} + + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + + pkg-types@2.3.3: + resolution: {integrity: sha512-j/lCFdcppV0JxWpCEITdbDltBxPP6cHT+yNJ6Go2OgoSA9518X847X9z0p6LtA4Nc16+eQzCZjRrWanTGvHJ5w==} + + postcss-calc@11.2.3: + resolution: {integrity: sha512-pFW3MR2a4W7uHcSGUiyQGGXZWHon83ljbNwnUJ1mRKublWQbv+3o9NiqhlV4TJfNby+U+zLY2OgiywzhA5eFqw==} + engines: {node: ^22.22.3 || ^24.15 || >=26.0} + peerDependencies: + postcss: ^8.5.29 + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.5.30: + resolution: {integrity: sha512-zkd+e9S1AQHhmaBKye9zlFHWjOwVgqXl1q3ECYy8561K7qxR2cREf/STLskulBFd78k6AOFeA+ff1TtEzk9bAA==} + engines: {node: ^10 || ^12 || >=14} + + powershell-utils@0.2.1: + resolution: {integrity: sha512-C+y9x90UElAddDZmV4qOx9W53B61PO7cIqWz2dQsWlwswuq4mr8NEwytdGKboYbQlGZ3awrkTeNvcZiZNHnQ8A==} + engines: {node: '>=20'} + + pretty-bytes@7.2.0: + resolution: {integrity: sha512-T2kroepGB5DRVbkN/nOpW03+VRWqdtJhZNuCW3wYk3chdPjgi4GcTBOaxWfHq1MIM0ypidxsSWbQaAiRpxnXmg==} + engines: {node: '>=20'} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + proper-lockfile@4.1.2: + resolution: {integrity: sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==} + + quansync@0.2.11: + resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + radix3@1.1.2: + resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + range-parser@1.3.0: + resolution: {integrity: sha512-hek2mFQpPuI4E1BBKrSto+BU3e3x4xuarsbiwr3+lf7p44juvFMV0XFWQAP3xUyqXA4RrXLIoaSUGbSt056ZMw==} + engines: {node: '>= 0.6'} + + rc9@3.1.0: + resolution: {integrity: sha512-ufjkNVzbRHKcCOmTahZkmVsyc3W+MSk3jY03m+a7tGHkIsdVMG9l10/3HvFbWkkKzY5VFp3pkRsIo/UYgmFL7Q==} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readable-stream@4.8.0: + resolution: {integrity: sha512-2jhTTU3Eilp/2DMT71gbcoqC35eQHasMJH0RHkYxwlxIv3+FR6Y5xAFZIwEGLxKkjZYEFlsiMNIdwUqjK2lLHQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + readdir-glob@1.1.3: + resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} + + readdirp@5.1.1: + resolution: {integrity: sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==} + engines: {node: '>= 20.19.0'} + + redis-errors@1.2.0: + resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==} + engines: {node: '>=4'} + + redis-parser@3.0.0: + resolution: {integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve@1.22.13: + resolution: {integrity: sha512-Dj/cW9zBV2aRj6XzCxuGIs3ESZKv02jixne3q6jFZYZ3/Tg09gHHviSMDL4kObh9pqSahdRHEnDoaP2gn8YLhA==} + engines: {node: '>= 0.4'} + hasBin: true + + retry@0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rolldown-string@0.3.1: + resolution: {integrity: sha512-dv8GOXkYqUQdI0rsXB8hmzO95pKWSuX2eg5/JSJa9czfEVIFuKNR7ZJDfat8LlmD35RAhWY+evS7/wXXqFDfSg==} + engines: {node: '>=20.19.0'} + peerDependencies: + rolldown: '*' + peerDependenciesMeta: + rolldown: + optional: true + + rolldown@1.2.14: + resolution: {integrity: sha512-eTBTTqMR6uHKLgcUqpJP8ntzDI6V4LYA8negAMBEI7gkgVvOdrx6VsvS2Ym+83KhOPdLCHWJu0w7UQFJZhHKNw==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + + rollup-plugin-visualizer@7.1.1: + resolution: {integrity: sha512-ThaGiHTU8XW02OkK80TrTHATraJmM9OAduU4otal+7gyXLpYEtmGBLfx5kW+EHvvLwn03YGW2NnwKUIqsYlJAA==} + engines: {node: '>=22'} + hasBin: true + peerDependencies: + rolldown: 1.x || ^1.0.0-beta || ^1.0.0-rc + rollup: 2.x || 3.x || 4.x + peerDependenciesMeta: + rolldown: + optional: true + rollup: + optional: true + + rollup@4.64.9: + resolution: {integrity: sha512-mnPSQINChN7PpT+a5CI0/+87hm/+6zxSKBK1XonrzQ0zFnglaTjhkTP2Br4yNCTcLHUEvrAfZffH57jGf+8xBQ==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + rou3@0.9.2: + resolution: {integrity: sha512-3SOzvaAg8rkHrXtRjpCvCvbyO5to9oOO27Z/XqHEYXfMRVSw/qMIVdmaOk9W2lcRLtR6dlqTjo9hDeJk70QBYQ==} + + run-applescript@7.1.0: + resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} + engines: {node: '>=18'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + scule@1.3.0: + resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} + + secure-random-bytes@5.0.1: + resolution: {integrity: sha512-48nvkahmdyoRbHW/x1HTGIk+i2/84MHFBB+rZ50cg1y/p2RjKG+fhTMQKZx4QD6T6/o2M2WHLPkncqQpjMMsUw==} + engines: {node: 18 || >=20} + + secure-random-octet@4.0.1: + resolution: {integrity: sha512-KEeg9wGi/96Q8Edp97gt5Z5dYCcvG7vPKdKFq6rPLCHtaaHwZKbhbC+gY74O7OjX8Fnels49wqc8IgkNhBJZfw==} + engines: {node: 18 || >=20} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.8.5: + resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} + engines: {node: '>=10'} + hasBin: true + + send@1.2.1: + resolution: {integrity: sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==} + engines: {node: '>= 18'} + + serialize-javascript@7.1.2: + resolution: {integrity: sha512-GL2BWwVa6JydKO6l/ljVgjAZF4QJ3S7dWDWi53s5GZT8PJzD2fNxi67HANQGKAqPrwEpL5ba7gUBGi0Ls/sEoQ==} + engines: {node: '>=20.0.0'} + + seroval@1.6.11: + resolution: {integrity: sha512-hpb6XnMCGN/A+79Uf8V7/iTGkyyyazNn5X0CoCAp7Uy9vT3RT8jZ9GLcnxGoVjg3P8AArbe4ZVHq6C8oT2a0kA==} + engines: {node: '>=10'} + + serve-placeholder@2.0.2: + resolution: {integrity: sha512-/TMG8SboeiQbZJWRlfTCqMs2DD3SZgWp0kDQePz9yUuCnDfDh/92gf7/PxGhzXTKBIPASIHxFcZndoNbp6QOLQ==} + + serve-static@2.2.1: + resolution: {integrity: sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==} + engines: {node: '>= 18'} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shell-quote@1.12.0: + resolution: {integrity: sha512-PcByqNyT/38F2kDNi006HAMRJaULuBzq/FOsw3qdZvX/GA9W/jamDaRskgHjubHiftXK5sIFxLNkvrXUwcof6Q==} + engines: {node: '>= 0.4'} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + sirv@3.0.2: + resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} + engines: {node: '>=18'} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slash@5.1.0: + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} + engines: {node: '>=14.16'} + + smob@1.6.2: + resolution: {integrity: sha512-RQsvleCbF8cVHEv+xuDGaA4pOizFqJ0GgjtMSRo6oP8pnN7WsigHgVGey6aILRBKv4W2YOMHLqbKdnB6hpB9fw==} + engines: {node: '>=20.0.0'} + + source-map-js@1.2.2: + resolution: {integrity: sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.6: + resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} + engines: {node: '>= 12'} + + source-map@0.8.0: + resolution: {integrity: sha512-d8EqvL+k/SOXCreS/SUzg2ciyHqBBLcN/yuRjFsbvVhHTE2pgei7oAhmPM7kWFbkX6OSMQfUq4KbkF3au9lhYQ==} + engines: {node: '>= 12'} + + srvx@1.0.5: + resolution: {integrity: sha512-KvSKRpgPG/oaq3cyT614OQ2bAa7DynuGamivCZeoZzIUULOdbQz6wUtnnVuC4+DCx2Zglzo8v5gBYmWIWYhDxA==} + engines: {node: '>=20.16.0'} + hasBin: true + + srvx@1.0.6: + resolution: {integrity: sha512-QeTKgAhk8OSsfeq60bl3wuVs9PmBftzmk7owBInA/F1YQne+TRw0UcPymNpURldAmx8hfmM2PNNGH/zgo3GpLA==} + engines: {node: '>=20.16.0'} + hasBin: true + + standard-as-callback@2.1.0: + resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} + + statuses@2.0.2: + resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} + engines: {node: '>= 0.8'} + + std-env@4.3.0: + resolution: {integrity: sha512-OtU/EgQ1kIm5KwqQpBC6ZEMXrZRui11w8zgfTWp8cdO9B8OaPsbA8bTHO2P+HNo1VlUTGMVBwPhydu6poeXiag==} + + stream-browserify@3.0.0: + resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} + + streamx@2.28.1: + resolution: {integrity: sha512-zEzXb0s5Cds7tqMH6rhZ05lcJydCWiQPEwiNngVqzsxCc962vLY4Uw+mW7od8kDH258k2Uz/JrOkdIAAhSh9VA==} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + + string-width@8.3.0: + resolution: {integrity: sha512-ZbmZM0JCihQN91dWnxoipT2KOEyHqEyfRXUyjuRhW8b/xnqPDoq4gWEVApTVa9db2wN8mmoikgFBbjh71+cGeQ==} + engines: {node: '>=20'} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} + engines: {node: '>=12'} + + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-literal@4.0.0: + resolution: {integrity: sha512-PaqAvfUZKBwc/SLmNZtHmzK+v19Z4O4eS3cKPeGvbIv/U3pnyEq4Tuw3/4v/FwfM8VQaEawsyCcOQ0P+kpwWWw==} + + structured-clone-es@2.0.1: + resolution: {integrity: sha512-10ZL5r77LhknxlP1FBiCW+VdnuWOEFLdSS2SKtjyEV+L4qP1hUEIMIZW94LC3jKxRmT/Dj7KkD1mqh/IY6lhKQ==} + + supports-color@10.2.2: + resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} + engines: {node: '>=18'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + tagged-tag@1.0.0: + resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} + engines: {node: '>=20'} + + tar-stream@3.2.2: + resolution: {integrity: sha512-+8NeqHRjQWH9nYlwo2gamAMImZCVzI4UoEgDpWorBt9OEfppiZn+uSkskzQKPWIZyji/C8fpWO7u69G0DX0tbg==} + + tar@7.5.22: + resolution: {integrity: sha512-MFO/QzvtAOmJbkhOaCTvbGcFN9L9b+JunIsDwaKljSOdcLMea3NJ1k9Usz/rjdfSXTq4dfzfeS7W4p4YOAAHeA==} + engines: {node: '>=18'} + + teex@1.0.1: + resolution: {integrity: sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==} + + terser@5.51.2: + resolution: {integrity: sha512-bWnjSNscmuI+GJze6ZupnHP8G/cTcsJF+bXCeQknk2SHQsgbNJnLrqiH9jZ2W4STPVXH2mDKKRX3iwPhc9Cn/Q==} + engines: {node: '>=10'} + hasBin: true + + text-decoder@1.2.7: + resolution: {integrity: sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==} + + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + + tinyclip@0.1.15: + resolution: {integrity: sha512-uo33abH+Ays0xYaDysoBt494Hb3hsEczMpcC0MwFl773pazORx4fmvKhclhR1wonUbB6vvpRsvVMwnhfqeMc+A==} + engines: {node: ^16.14.0 || >= 17.3.0} + + tinyclip@1.0.3: + resolution: {integrity: sha512-nTv2raKFMzGG6JJp0lpNDsRPdfFE6UHlu2rVEjXo8vkx1ZS3LW2CVXqIaLu8xZlu+6tbFs9V58Qc/Jmk/Ii7wA==} + engines: {node: ^16.14.0 || >= 17.3.0} + + tinyexec@1.3.1: + resolution: {integrity: sha512-GCvB3aoys96IuDFBMcTB46JOR6mdMtAToqwiW8JlWhsoh1mhHi/xn9ss/Dg7N555GiJyEt2qzoG/NHCwM6h1EA==} + engines: {node: '>=18'} + + tinyglobby@0.2.17: + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} + engines: {node: '>=12.0.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + type-fest@5.10.0: + resolution: {integrity: sha512-NoSdpq/WEiAg5sjmBkmV/hfxv6HJH4NqPNrqjtSO5CwRmpsDfaf4begxW34KdJykH/l1yHtwBWQkCRdoXO8mPA==} + engines: {node: '>=20'} + + ufo@1.6.4: + resolution: {integrity: sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==} + + uint8array-extras@1.6.0: + resolution: {integrity: sha512-8iAasVS4wUx0gPLjH8Xtz2PeDzTSiy8QiLGu2DT3X5GU+egFEQhpnbtkehbAwjvDcxIERmCYcysiODFmE3Ud0Q==} + engines: {node: '>=18'} + + ultrahtml@1.7.0: + resolution: {integrity: sha512-2xRd0VHoAQE4M+vF/DvFFB7pUV0ZxTW1TLi7lHQWnF/Sb5TPeEUV/l+hxcNnGO00ZXGnR0voCMmYRKQf+rvJ2g==} + + uncrypto@0.1.3: + resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} + + unctx@2.5.0: + resolution: {integrity: sha512-p+Rz9x0R7X+CYDkT+Xg8/GhpcShTlU8n+cf9OtOEf7zEQsNcCZO1dPKNRDqvUTaq+P32PMMkxWHwfrxkqfqAYg==} + + unctx@3.0.1: + resolution: {integrity: sha512-5RAt2etv7g362RXyd33R82gm9u/kbtQlpoaOs9Bgm4E32GRMJ0xjbZyvdxUTmiuHk3V1IQb1aUNrp5IWY+JaWw==} + peerDependencies: + magic-string: '>=0.30.21' + oxc-parser: '>=0.140.0' + rolldown: ^1.1.5 + unplugin: ^3.3.0 + peerDependenciesMeta: + magic-string: + optional: true + oxc-parser: + optional: true + rolldown: + optional: true + unplugin: + optional: true + + undici@8.12.2: + resolution: {integrity: sha512-XtuDWVdqTLr3NAxm2ly9/hU6kUsJOgGh1RASzMBbsw6aWCOaQzHdW+QQDfdERjfJ2V5vL5pRPa4RetO9UfivDg==} + engines: {node: '>=22.19.0'} + + unenv@2.0.0-rc.24: + resolution: {integrity: sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==} + + unhead@3.4.3: + resolution: {integrity: sha512-0FZI/qCCyIey14CKlGMFpiQumWSatlthJy7Xvro7H3nmi/V2owkcCXG03k0GXDc2/TV1K6bvrbAwhzTRe5Nhdw==} + peerDependencies: + vite: '>=6.4.2' + peerDependenciesMeta: + vite: + optional: true + + unicorn-magic@0.3.0: + resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} + engines: {node: '>=18'} + + unicorn-magic@0.4.1: + resolution: {integrity: sha512-lzlXPoVB0Uy/FvTaUgX39RbixYiSKoc3JSoSf01+0c2B6FR3qdYIPN7Qjo/AV7n6sqLCk0509cT3LRj1oSZ1+A==} + engines: {node: '>=20'} + + unimport@6.5.0: + resolution: {integrity: sha512-t0KLJLRbebz3f7NrQe+vy2ObeugVeM1XqI2oeYnauddmHSglYj3U6bxOJ65IbXmOFkcAGFJK2OyGH7aqHPM6Ug==} + engines: {node: '>=18.12.0'} + peerDependencies: + oxc-parser: '*' + rolldown: ^1.0.0 + peerDependenciesMeta: + oxc-parser: + optional: true + rolldown: + optional: true + + unimport@7.0.2: + resolution: {integrity: sha512-5yrZs6kHyx5h1ZgeLxK0EgS/JL7Uhwv9HgzQImW8JccGmbYWyXx7Jc4YhU5+sd1Yk31PlfLQhfbZ1oigXipo3A==} + engines: {node: '>=18.12.0'} + peerDependencies: + acorn: ^8.0.0 + oxc-parser: '*' + rolldown: ^1.0.0 + peerDependenciesMeta: + acorn: + optional: true + oxc-parser: + optional: true + rolldown: + optional: true + + unplugin-utils@0.3.2: + resolution: {integrity: sha512-xVToRh2CTmLk2HnEG7ac4rl1MJTT3RFkpS8B++/SnB0kXvuaavD+n3m/vrzyWQOdJNSZQACnbz01pnppbwV5BA==} + engines: {node: '>=20.19.0'} + + unplugin@2.3.11: + resolution: {integrity: sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==} + engines: {node: '>=18.12.0'} + + unplugin@3.4.0: + resolution: {integrity: sha512-9skdIFlCsPdFV7wUfZxNsFInlW+7nJmGu2gkTu0OUhF56aXGsHab9x52/QhdJ4lC7ZDPWTxbiC4ANqVlsuaW3w==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + '@farmfe/core': '*' + '@rsbuild/core': '*' + '@rspack/core': '*' + bun-types-no-globals: '*' + esbuild: '*' + rolldown: '*' + rollup: '*' + unloader: '*' + vite: '*' + webpack: '*' + peerDependenciesMeta: + '@farmfe/core': + optional: true + '@rsbuild/core': + optional: true + '@rspack/core': + optional: true + bun-types-no-globals: + optional: true + esbuild: + optional: true + rolldown: + optional: true + rollup: + optional: true + unloader: + optional: true + vite: + optional: true + webpack: + optional: true + + unrouting@0.2.3: + resolution: {integrity: sha512-8wOFT/fBh8YeeDr1aVmkXCqYVTMbQ6vzfNzwzybKmSfXdRhGCq1Y2B1e9YeB0JEf85gbvSwJHAMu3D2IEcLGKA==} + + unstorage@1.17.6: + resolution: {integrity: sha512-gjKtcmn/KwZuJZO9o2sc0esAQnhmTw0LviDHwevTXbJMYs0dRTp8ZEEWXHU0vTpzbN3cA0yxlTeyXssMp3zDqw==} + peerDependencies: + '@azure/app-configuration': ^1.8.0 + '@azure/cosmos': ^4.2.0 + '@azure/data-tables': ^13.3.0 + '@azure/identity': ^4.6.0 + '@azure/keyvault-secrets': ^4.9.0 + '@azure/storage-blob': ^12.26.0 + '@capacitor/preferences': ^6 || ^7 || ^8 + '@deno/kv': '>=0.9.0' + '@netlify/blobs': ^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 + '@planetscale/database': ^1.19.0 + '@upstash/redis': ^1.34.3 + '@vercel/blob': '>=0.27.1' + '@vercel/functions': ^2.2.12 || ^3.0.0 + '@vercel/kv': ^1 || ^2 || ^3 + aws4fetch: ^1.0.20 + db0: '>=0.2.1' + idb-keyval: ^6.2.1 + ioredis: ^5.4.2 + uploadthing: ^7.4.4 + peerDependenciesMeta: + '@azure/app-configuration': + optional: true + '@azure/cosmos': + optional: true + '@azure/data-tables': + optional: true + '@azure/identity': + optional: true + '@azure/keyvault-secrets': + optional: true + '@azure/storage-blob': + optional: true + '@capacitor/preferences': + optional: true + '@deno/kv': + optional: true + '@netlify/blobs': + optional: true + '@planetscale/database': + optional: true + '@upstash/redis': + optional: true + '@vercel/blob': + optional: true + '@vercel/functions': + optional: true + '@vercel/kv': + optional: true + aws4fetch: + optional: true + db0: + optional: true + idb-keyval: + optional: true + ioredis: + optional: true + uploadthing: + optional: true + + untun@0.2.2: + resolution: {integrity: sha512-+NnOJcSiEtYsVgJmXUzQbJeRAFXJC4yPJYuh6kF9B0Rm6zunXcs/3GZOTllyocSbUDIxD6Bj7e/4ATw7sph1Sw==} + hasBin: true + + untyped@2.0.0: + resolution: {integrity: sha512-nwNCjxJTjNuLCgFr42fEak5OcLuB3ecca+9ksPFNvtfYSLpjf+iJqSIaSnIile6ZPbKYxI5k2AfXqeopGudK/g==} + hasBin: true + + unwasm@0.5.3: + resolution: {integrity: sha512-keBgTSfp3r6+s9ZcSma+0chwxQdmLbB5+dAD9vjtB21UTMYuKAxHXCU1K2CbCtnP09EaWeRvACnXk0EJtUx+hw==} + + update-browserslist-db@1.3.4: + resolution: {integrity: sha512-t8wonIOdQyOjtPd2VktlBu6QjTVTks6v8bSi7kd0r2Vll8TK1JYDZtRRdbmCHOAMphkZgrzK+L+vXK4pyZ8t4A==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uqr@0.1.3: + resolution: {integrity: sha512-0rjE8iEJe4YmT9TOhwsZtqCMRLc5DXZUI2UEYUUg63ikBkqqE5EYWaI0etFe/5KUcmcYwLih2RND1kq+hrUJXA==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + uuid@11.1.1: + resolution: {integrity: sha512-vIYxrBCC/N/K+Js3qSN88go7kIfNPssr/hHCesKCQNAjmgvYS2oqr69kIufEG+O4+PfezOH4EbIeHCfFov8ZgQ==} + hasBin: true + + verkit@0.5.0: + resolution: {integrity: sha512-u4J1hr6Y+C/hit34GwL3eIcUf3wngT8TlYUjK7tk0jxydKLAq3sYvifjdTDA6U3KCKRcQCQDGf/srjxfZF3l7g==} + engines: {node: '>=18.12.0'} + + vite-dev-rpc@2.0.0: + resolution: {integrity: sha512-yKwbTwdHKSD2k/aGqyWpPHepo45OQc8lH3/6IfT4ZqeKE26ooKvi4WIEKzqWav8v+9Is8u1k8q54hvOmqASazA==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.1 || ^7.0.0-0 || ^8.0.0 + + vite-hot-client@2.2.0: + resolution: {integrity: sha512-76Zs9zrHbH7M7wqeyooGQKdX+yg0pQ0xuQ1PbFp4z5a0Lzn2e5IPFoCswnmqZ4GiwqB4Jo3WcDAMO9jARTJl8w==} + peerDependencies: + vite: ^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 || ^8.0.0 + + vite-node@6.0.0: + resolution: {integrity: sha512-oj4PVrT+pDh6GYf5wfUXkcZyekYS8kKPfLPXVl8qe324Ec6l4K2DUKNadRbZ3LQl0qGcDz+PyOo7ZAh00Y+JjQ==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + + vite-plugin-checker@0.14.5: + resolution: {integrity: sha512-c9lQ92eisUO+F7Fd93aelojmiOS+NQpPgQ1XR2LTQHox1/laZf4yAoQj+L3RA9Vgh10e2nFd9b8r2LLyYZsbpA==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@biomejs/biome': '>=2.4.12' + eslint: '>=9.39.4' + meow: ^13.2.0 || ^14.0.0 + optionator: ^0.9.4 + oxlint: '>=1' + stylelint: '>=16.26.1' + typescript: '*' + vite: '>=5.4.21' + vue-tsc: ~2.2.10 || ^3.0.0 + peerDependenciesMeta: + '@biomejs/biome': + optional: true + eslint: + optional: true + meow: + optional: true + optionator: + optional: true + oxlint: + optional: true + stylelint: + optional: true + typescript: + optional: true + vue-tsc: + optional: true + + vite-plugin-inspect@11.4.1: + resolution: {integrity: sha512-ShOFe2PURXGvRS5OrgmOLZOCwDTD7dEBVt0tMpFPKb9AsvqXKCRGM8QgKrUbRbJYFXScHvDPpGRd28rYidC0tA==} + engines: {node: '>=14'} + peerDependencies: + '@nuxt/kit': '*' + vite: ^6.0.0 || ^7.0.0-0 || ^8.0.0-0 + peerDependenciesMeta: + '@nuxt/kit': + optional: true + + vite-plugin-vue-tracer@1.6.0: + resolution: {integrity: sha512-G07az+X68rtz9ngfBxZH8vVhZ7DOnZvJABnT9nFp/TBV+qfKtGqA00djblqvvbf3VYfwLmJtoqZhFDAx8mLpNw==} + peerDependencies: + vite: ^6.0.0 || ^7.0.0 || ^8.0.0-0 + vue: ^3.5.0 + + vite@8.3.4: + resolution: {integrity: sha512-IftLE8phJhdNRIGNEV4JCCvfNScoZQVfcXaN8TQropWGJtOHcu+iAB9pHcuGvmEb/kddw0LBe/jS8ztdC6xdiQ==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.7.1 + esbuild: ^0.27.0 || ^0.28.0 + jiti: '>=1.21.0' + less: ^4.0.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + '@vitejs/devtools': + optional: true + esbuild: + optional: true + jiti: + optional: true + less: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vue-bundle-renderer@2.4.0: + resolution: {integrity: sha512-IxHopQZgzTGBiuGERrQrAS7Lr3dCv+qxvgirEgCUFGAD4gYNfiaGYzC1DDojeZmJAmehp9gG8+17PGuVP6Ab2Q==} + + vue-component-type-helpers@3.3.13: + resolution: {integrity: sha512-02KCxSmKDhIITjKyJ4QT5csP6L0WoRborLqY/34a40+S9uvMvdNgMV0yVjO3p2Gkz3ZoPmFz/0JsGHacwJYTxw==} + + vue-devtools-stub@0.1.0: + resolution: {integrity: sha512-RutnB7X8c5hjq39NceArgXg28WZtZpGc3+J16ljMiYnFhKvd8hITxSWQSQ5bvldxMDU6gG5mkxl1MTQLXckVSQ==} + + vue-router@5.4.0: + resolution: {integrity: sha512-pFvcYcxinDHjZUlf7AzFBrT8r8Xqvv4uMHoJnjc+EqPawXQvHTkF8S4tfSmQLpriVHUGfkaKlI7Et0KRjTMTdw==} + peerDependencies: + '@pinia/colada': '>=0.21.2' + '@vue/compiler-sfc': ^3.5.34 || ^4.0.0 + pinia: ^3.0.4 || ^4.0.2 + vite: ^7.3.0 || ^8.0.0 + vue: ^3.5.34 || ^4.0.0 + peerDependenciesMeta: + '@pinia/colada': + optional: true + '@vue/compiler-sfc': + optional: true + pinia: + optional: true + vite: + optional: true + + vue@3.5.44: + resolution: {integrity: sha512-dvvmaOCG7lAMkJTPqPwWeGMsPS6DIsFsfZDUgBp9V6mHf9b3+/wyVwYR4Es+WV6uJC0FKRxp81Obcq0ZwUcGFQ==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + which@6.0.1: + resolution: {integrity: sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==} + engines: {node: ^20.17.0 || >=22.9.0} + hasBin: true + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrap-ansi@9.0.2: + resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} + engines: {node: '>=18'} + + ws@8.22.0: + resolution: {integrity: sha512-Ydggc987+RO0AnWtZ/7Wq9FtNvcrL1b/RO0ud9mWjUPgDrsAAwQSF51sm2hm1XofbU/4jkpGEsLFsZZxU+1DOg==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + wsl-utils@1.0.1: + resolution: {integrity: sha512-c16PKLIRxBYpR3jSWsdS7SFp0COm5SOQdiFjY818dYFHJbMGuLBszpF07LBWmOS1uzrHa9VGdynsEgoeKy0oOQ==} + engines: {node: '>=20'} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} + + yargs-parser@22.0.0: + resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} + + yargs@18.2.0: + resolution: {integrity: sha512-9OpKOLeaoNFecEp7P6iYbzze/5CqWoH7N3SMs/6y1XF4nMvFMspEGZzJ6uFi9MmQwXhyzqYoSEKO3tvA3Z/o2w==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} + + youch-core@0.3.3: + resolution: {integrity: sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==} + + youch@4.1.1: + resolution: {integrity: sha512-mxW3qiSnl+GRxXsaUMzv2Mbada1Y8CDltET9UxejDQe6DBYlSekghl5U5K0ReAikcHDi0G1vKZEmmo/NWAGKLA==} + + zip-stream@6.0.1: + resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} + engines: {node: '>= 14'} + +snapshots: + + '@babel/code-frame@7.29.7': + dependencies: + '@babel/helper-validator-identifier': 7.29.7 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.29.7': {} + + '@babel/core@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/generator': 7.29.8 + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) + '@babel/helpers': 7.29.10 + '@babel/parser': 7.29.9 + '@babel/template': 7.29.7 + '@babel/traverse': 7.29.10 + '@babel/types': 7.29.8 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.29.8': + dependencies: + '@babel/parser': 7.29.9 + '@babel/types': 7.29.8 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/helper-annotate-as-pure@7.29.7': + dependencies: + '@babel/types': 7.29.8 + + '@babel/helper-compilation-targets@7.29.7': + dependencies: + '@babel/compat-data': 7.29.7 + '@babel/helper-validator-option': 7.29.7 + browserslist: 4.29.3 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-annotate-as-pure': 7.29.7 + '@babel/helper-member-expression-to-functions': 7.29.7 + '@babel/helper-optimise-call-expression': 7.29.7 + '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7) + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 + '@babel/traverse': 7.29.10 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-globals@7.29.7': {} + + '@babel/helper-member-expression-to-functions@7.29.7': + dependencies: + '@babel/traverse': 7.29.10 + '@babel/types': 7.29.8 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.29.7': + dependencies: + '@babel/traverse': 7.29.10 + '@babel/types': 7.29.8 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-module-imports': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + '@babel/traverse': 7.29.10 + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.29.7': + dependencies: + '@babel/types': 7.29.8 + + '@babel/helper-plugin-utils@7.29.7': {} + + '@babel/helper-replace-supers@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-member-expression-to-functions': 7.29.7 + '@babel/helper-optimise-call-expression': 7.29.7 + '@babel/traverse': 7.29.10 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.29.7': + dependencies: + '@babel/traverse': 7.29.10 + '@babel/types': 7.29.8 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.29.7': {} + + '@babel/helper-string-parser@8.0.6': {} + + '@babel/helper-validator-identifier@7.29.7': {} + + '@babel/helper-validator-identifier@8.0.6': {} + + '@babel/helper-validator-option@7.29.7': {} + + '@babel/helpers@7.29.10': + dependencies: + '@babel/template': 7.29.7 + '@babel/types': 7.29.8 + + '@babel/parser@7.29.9': + dependencies: + '@babel/types': 7.29.8 + + '@babel/parser@8.0.7': + dependencies: + '@babel/types': 8.0.6 + + '@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-typescript@7.29.9(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-annotate-as-pure': 7.29.7 + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 + '@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.7) + transitivePeerDependencies: + - supports-color + + '@babel/template@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/parser': 7.29.9 + '@babel/types': 7.29.8 + + '@babel/traverse@7.29.10': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/generator': 7.29.8 + '@babel/helper-globals': 7.29.7 + '@babel/parser': 7.29.9 + '@babel/template': 7.29.7 + '@babel/types': 7.29.8 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.29.8': + dependencies: + '@babel/helper-string-parser': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + + '@babel/types@8.0.6': + dependencies: + '@babel/helper-string-parser': 8.0.6 + '@babel/helper-validator-identifier': 8.0.6 + + '@clack/core@1.5.1': + dependencies: + fast-wrap-ansi: 0.2.2 + sisteransi: 1.0.5 + + '@clack/prompts@1.8.1': + dependencies: + '@clack/core': 1.5.1 + fast-string-width: 3.0.2 + fast-wrap-ansi: 0.2.2 + sisteransi: 1.0.5 + + '@cloudflare/kv-asset-handler@0.4.2': {} + + '@colordx/core@7.3.0': {} + + '@csstools/css-tokenizer@4.0.2': {} + + '@dxup/nuxt@0.5.10(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(esbuild@0.28.2)(giget@3.3.1)(jiti@2.7.0)(mlly@1.8.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2))': + dependencies: + '@dxup/unimport': 0.1.2 + '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(rolldown@1.2.14)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2))) + '@vue/compiler-dom': 3.5.44 + chokidar: 5.0.0 + knitwork: 1.3.0 + magic-string: 1.4.3 + pathe: 2.0.3 + tinyglobby: 0.2.17 + unplugin: 3.4.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)) + transitivePeerDependencies: + - '@farmfe/core' + - '@nuxt/schema' + - '@rsbuild/core' + - '@rspack/core' + - bun-types-no-globals + - confbox + - dotenv + - esbuild + - giget + - jiti + - mlly + - oxc-parser + - rolldown + - rollup + - unloader + - vite + - webpack + + '@dxup/unimport@0.1.2': {} + + '@esbuild/aix-ppc64@0.28.2': + optional: true + + '@esbuild/android-arm64@0.28.2': + optional: true + + '@esbuild/android-arm@0.28.2': + optional: true + + '@esbuild/android-x64@0.28.2': + optional: true + + '@esbuild/darwin-arm64@0.28.2': + optional: true + + '@esbuild/darwin-x64@0.28.2': + optional: true + + '@esbuild/freebsd-arm64@0.28.2': + optional: true + + '@esbuild/freebsd-x64@0.28.2': + optional: true + + '@esbuild/linux-arm64@0.28.2': + optional: true + + '@esbuild/linux-arm@0.28.2': + optional: true + + '@esbuild/linux-ia32@0.28.2': + optional: true + + '@esbuild/linux-loong64@0.28.2': + optional: true + + '@esbuild/linux-mips64el@0.28.2': + optional: true + + '@esbuild/linux-ppc64@0.28.2': + optional: true + + '@esbuild/linux-riscv64@0.28.2': + optional: true + + '@esbuild/linux-s390x@0.28.2': + optional: true + + '@esbuild/linux-x64@0.28.2': + optional: true + + '@esbuild/netbsd-arm64@0.28.2': + optional: true + + '@esbuild/netbsd-x64@0.28.2': + optional: true + + '@esbuild/openbsd-arm64@0.28.2': + optional: true + + '@esbuild/openbsd-x64@0.28.2': + optional: true + + '@esbuild/openharmony-arm64@0.28.2': + optional: true + + '@esbuild/sunos-x64@0.28.2': + optional: true + + '@esbuild/win32-arm64@0.28.2': + optional: true + + '@esbuild/win32-ia32@0.28.2': + optional: true + + '@esbuild/win32-x64@0.28.2': + optional: true + + '@ioredis/commands@1.10.0': {} + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.2.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@isaacs/fs-minipass@4.0.1': + dependencies: + minipass: 7.1.3 + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.6.0 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/source-map@0.3.11': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/sourcemap-codec@1.6.0': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.6.0 + + '@mapbox/node-pre-gyp@2.0.3': + dependencies: + consola: 3.4.2 + detect-libc: 2.1.2 + https-proxy-agent: 7.0.6 + node-fetch: 2.7.0 + nopt: 8.1.0 + semver: 7.8.5 + tar: 7.5.22 + transitivePeerDependencies: + - encoding + - supports-color + + '@napi-rs/lzma-linux-x64-gnu@1.5.1': + optional: true + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.20.3 + + '@nuxt/cli@4.0.1(@nuxt/schema@4.6.2)(jiti@2.7.0)(rolldown@1.2.14)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2))': + dependencies: + '@clack/prompts': 1.8.1 + args-tokenizer: 0.3.0 + clickable-path: 0.1.1 + confbox: 0.3.1 + consola: 3.4.2 + defu: 6.1.7 + exsolve: 1.1.3 + fuzzysort: 4.0.2 + get-port-please: 3.2.0 + my-bad: 0.2.11(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)) + obug: 3.0.0 + package-manager-detector: 1.9.0 + pathe: 2.0.3 + perfect-debounce: 2.1.0 + pkg-types: 2.3.3 + rc9: 3.1.0 + scule: 1.3.0 + srvx: 1.0.6 + std-env: 4.3.0 + tinyclip: 1.0.3 + tinyexec: 1.3.1 + uqr: 0.1.3 + verkit: 0.5.0 + optionalDependencies: + '@nuxt/schema': 4.6.2 + jiti: 2.7.0 + rolldown: 1.2.14 + transitivePeerDependencies: + - vite + + '@nuxt/devalue@2.0.2': {} + + '@nuxt/devtools-kit@3.4.3(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(rolldown@1.2.14)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)))(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2))': + dependencies: + '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(rolldown@1.2.14)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2))) + execa: 8.0.1 + vite: 8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2) + transitivePeerDependencies: + - '@nuxt/schema' + - confbox + - dotenv + - giget + - jiti + - magic-string + - mlly + - oxc-parser + - rolldown + - unplugin + + '@nuxt/devtools-wizard@3.4.3': + dependencies: + '@clack/prompts': 1.8.1 + consola: 3.4.2 + diff: 8.0.4 + execa: 8.0.1 + magicast: 0.5.5 + pathe: 2.0.3 + pkg-types: 2.3.3 + semver: 7.8.5 + + '@nuxt/devtools@3.4.3(@nuxt/schema@4.6.2)(confbox@0.3.1)(db0@0.3.4)(dotenv@17.4.2)(giget@3.3.1)(ioredis@5.11.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(rolldown@1.2.14)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)))(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2))(vue@3.5.44)': + dependencies: + '@nuxt/devtools-kit': 3.4.3(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(rolldown@1.2.14)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)))(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)) + '@nuxt/devtools-wizard': 3.4.3 + '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(rolldown@1.2.14)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2))) + '@vue/devtools-core': 8.2.1(vue@3.5.44) + '@vue/devtools-kit': 8.2.1 + birpc: 4.2.0 + consola: 3.4.2 + destr: 2.0.5 + error-stack-parser-es: 2.0.1 + execa: 8.0.1 + fast-npm-meta: 2.2.0 + get-port-please: 3.2.0 + hookable: 6.1.2 + image-meta: 0.2.2 + is-installed-globally: 1.0.1 + launch-editor: 2.14.2 + local-pkg: 1.2.1 + magicast: 0.5.5 + ohash: 2.0.12 + package-manager-detector: 1.9.0 + pathe: 2.0.3 + perfect-debounce: 2.1.0 + pkg-types: 2.3.3 + semver: 7.8.5 + sirv: 3.0.2 + structured-clone-es: 2.0.1 + tinyexec: 1.3.1 + tinyglobby: 0.2.17 + unstorage: 1.17.6(db0@0.3.4)(ioredis@5.11.1) + vite: 8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2) + vite-plugin-inspect: 11.4.1(@nuxt/kit@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(rolldown@1.2.14)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2))))(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)) + vite-plugin-vue-tracer: 1.6.0(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2))(vue@3.5.44) + which: 6.0.1 + ws: 8.22.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@nuxt/schema' + - '@planetscale/database' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - confbox + - db0 + - dotenv + - giget + - idb-keyval + - ioredis + - jiti + - magic-string + - mlly + - oxc-parser + - rolldown + - unplugin + - uploadthing + - utf-8-validate + - vue + + '@nuxt/kit@3.21.11(magicast@0.5.5)': + dependencies: + c12: 3.3.4(magicast@0.5.5) + consola: 3.4.2 + defu: 6.1.7 + destr: 2.0.5 + errx: 0.1.2 + exsolve: 1.1.3 + ignore: 7.0.12 + jiti: 2.7.0 + klona: 2.0.6 + knitwork: 1.3.0 + mlly: 1.8.2 + ohash: 2.0.12 + pathe: 2.0.3 + pkg-types: 2.3.3 + rc9: 3.1.0 + scule: 1.3.0 + semver: 7.8.5 + tinyglobby: 0.2.17 + ufo: 1.6.4 + unctx: 2.5.0 + untyped: 2.0.0 + transitivePeerDependencies: + - magicast + + '@nuxt/kit@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(rolldown@1.2.14)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)))': + dependencies: + consola: 3.4.2 + defu: 6.1.7 + destr: 2.0.5 + errx: 0.2.2 + exsolve: 1.1.3 + ignore: 7.0.12 + klona: 2.0.6 + microdiff: 1.6.0 + nostics: 1.3.0 + package-manager-detector: 1.9.0 + pathe: 2.0.3 + rc9: 3.1.0 + scule: 1.3.0 + std-env: 4.3.0 + tinyexec: 1.3.1 + tinyglobby: 0.2.17 + unctx: 3.0.1(magic-string@1.4.3)(rolldown@1.2.14)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2))) + verkit: 0.5.0 + optionalDependencies: + '@nuxt/schema': 4.6.2 + confbox: 0.3.1 + dotenv: 17.4.2 + giget: 3.3.1 + jiti: 2.7.0 + mlly: 1.8.2 + rolldown: 1.2.14 + transitivePeerDependencies: + - magic-string + - unplugin + + '@nuxt/nitro-server@4.6.2(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7))(@nuxt/schema@4.6.2)(@oxc-project/types@0.154.0)(confbox@0.3.1)(db0@0.3.4)(dotenv@17.4.2)(esbuild@0.28.2)(giget@3.3.1)(ioredis@5.11.1)(jiti@2.7.0)(lightningcss@1.33.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7))(@oxc-project/types@0.154.0)(@vue/compiler-sfc@3.5.44)(acorn@8.19.0)(confbox@0.3.1)(db0@0.3.4)(dotenv@17.4.2)(esbuild@0.28.2)(giget@3.3.1)(ioredis@5.11.1)(lightningcss@1.33.0)(mlly@1.8.2)(rolldown@1.2.14)(rollup-plugin-visualizer@7.1.1(rolldown@1.2.14)(rollup@4.64.9))(rollup@4.64.9)(srvx@1.0.6)(terser@5.51.2)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)))(rolldown@1.2.14)(rollup@4.64.9)(srvx@1.0.6)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)))(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2))': + dependencies: + '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(rolldown@1.2.14)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2))) + '@unhead/vue': 3.4.3(@oxc-project/types@0.154.0)(esbuild@0.28.2)(lightningcss@1.33.0)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2))(vue@3.5.44) + consola: 3.4.2 + defu: 6.1.7 + destr: 2.0.5 + devalue: 6.0.3 + errx: 0.2.2 + escape-string-regexp: 5.0.0 + exsolve: 1.1.3 + flru: 1.0.2 + h3: 1.15.11 + impound: 1.2.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)) + klona: 2.0.6 + mocked-exports: 0.1.1 + my-bad: 0.2.11(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)) + nitropack: 2.13.4(rolldown@1.2.14)(srvx@1.0.6)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)) + nostics: 1.3.0 + nuxt: 4.6.2(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7))(@oxc-project/types@0.154.0)(@vue/compiler-sfc@3.5.44)(acorn@8.19.0)(confbox@0.3.1)(db0@0.3.4)(dotenv@17.4.2)(esbuild@0.28.2)(giget@3.3.1)(ioredis@5.11.1)(lightningcss@1.33.0)(mlly@1.8.2)(rolldown@1.2.14)(rollup-plugin-visualizer@7.1.1(rolldown@1.2.14)(rollup@4.64.9))(rollup@4.64.9)(srvx@1.0.6)(terser@5.51.2)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)) + ohash: 2.0.12 + pathe: 2.0.3 + radix3: 1.1.2 + rou3: 0.9.2 + std-env: 4.3.0 + ufo: 1.6.4 + unctx: 3.0.1(magic-string@1.4.3)(rolldown@1.2.14)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2))) + unrouting: 0.2.3 + unstorage: 1.17.6(db0@0.3.4)(ioredis@5.11.1) + vue: 3.5.44 + vue-bundle-renderer: 2.4.0 + vue-devtools-stub: 0.1.0 + optionalDependencies: + '@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.7) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@electric-sql/pglite' + - '@farmfe/core' + - '@libsql/client' + - '@netlify/blobs' + - '@nuxt/schema' + - '@oxc-project/types' + - '@parcel/watcher' + - '@planetscale/database' + - '@rsbuild/core' + - '@rspack/core' + - '@unhead/cli' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - '@vitejs/devtools-kit' + - aws4fetch + - bare-abort-controller + - bare-buffer + - better-sqlite3 + - bun-types-no-globals + - confbox + - db0 + - dotenv + - drizzle-orm + - encoding + - esbuild + - giget + - idb-keyval + - ioredis + - jiti + - lightningcss + - magic-string + - mlly + - mysql2 + - oxc-parser + - react-native-b4a + - rolldown + - rollup + - sqlite3 + - srvx + - supports-color + - typescript + - unloader + - unplugin + - uploadthing + - vite + - webpack + - xml2js + + '@nuxt/schema@4.6.2': + dependencies: + '@vue/shared': 3.5.44 + defu: 6.1.7 + nostics: 1.3.0 + pathe: 2.0.3 + pkg-types: 2.3.3 + std-env: 4.3.0 + + '@nuxt/telemetry@2.9.1(@nuxt/kit@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(rolldown@1.2.14)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2))))': + dependencies: + '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(rolldown@1.2.14)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2))) + citty: 0.2.2 + consola: 3.4.2 + rc9: 3.1.0 + std-env: 4.3.0 + + '@nuxt/vite-builder@4.6.2(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7))(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(esbuild@0.28.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7))(@oxc-project/types@0.154.0)(@vue/compiler-sfc@3.5.44)(acorn@8.19.0)(confbox@0.3.1)(db0@0.3.4)(dotenv@17.4.2)(esbuild@0.28.2)(giget@3.3.1)(ioredis@5.11.1)(lightningcss@1.33.0)(mlly@1.8.2)(rolldown@1.2.14)(rollup-plugin-visualizer@7.1.1(rolldown@1.2.14)(rollup@4.64.9))(rollup@4.64.9)(srvx@1.0.6)(terser@5.51.2)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)))(rolldown@1.2.14)(rollup-plugin-visualizer@7.1.1(rolldown@1.2.14)(rollup@4.64.9))(terser@5.51.2)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)))(vue@3.5.44)': + dependencies: + '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(rolldown@1.2.14)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2))) + '@vitejs/plugin-vue': 6.0.10(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2))(vue@3.5.44) + '@vitejs/plugin-vue-jsx': 5.1.6(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2))(vue@3.5.44) + autoprefixer: 10.6.1(postcss@8.5.30) + clickable-path: 0.1.1 + consola: 3.4.2 + cssnano: 9.9.0(postcss@8.5.30) + defu: 6.1.7 + escape-string-regexp: 5.0.0 + exsolve: 1.1.3 + generic-names: 4.0.0 + get-port-please: 3.2.0 + js-tokens: 10.0.0 + knitwork: 1.3.0 + mocked-exports: 0.1.1 + my-bad: 0.2.11(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)) + nuxt: 4.6.2(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7))(@oxc-project/types@0.154.0)(@vue/compiler-sfc@3.5.44)(acorn@8.19.0)(confbox@0.3.1)(db0@0.3.4)(dotenv@17.4.2)(esbuild@0.28.2)(giget@3.3.1)(ioredis@5.11.1)(lightningcss@1.33.0)(mlly@1.8.2)(rolldown@1.2.14)(rollup-plugin-visualizer@7.1.1(rolldown@1.2.14)(rollup@4.64.9))(rollup@4.64.9)(srvx@1.0.6)(terser@5.51.2)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)) + pathe: 2.0.3 + pkg-types: 2.3.3 + postcss: 8.5.30 + rolldown-string: 0.3.1(rolldown@1.2.14) + seroval: 1.6.11 + std-env: 4.3.0 + ufo: 1.6.4 + unenv: 2.0.0-rc.24 + vite: 8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2) + vite-node: 6.0.0(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2) + vite-plugin-checker: 0.14.5(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)) + vue: 3.5.44 + vue-bundle-renderer: 2.4.0 + optionalDependencies: + '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7) + rolldown: 1.2.14 + rollup-plugin-visualizer: 7.1.1(rolldown@1.2.14)(rollup@4.64.9) + transitivePeerDependencies: + - '@biomejs/biome' + - '@nuxt/schema' + - '@types/node' + - '@vitejs/devtools' + - confbox + - dotenv + - esbuild + - eslint + - giget + - jiti + - less + - magic-string + - meow + - mlly + - optionator + - oxc-parser + - oxlint + - sass + - sass-embedded + - stylelint + - stylus + - sugarss + - supports-color + - terser + - tsx + - typescript + - unplugin + - vue-tsc + - yaml + + '@nuxt/vite-server@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7))(@oxc-project/types@0.154.0)(@vue/compiler-sfc@3.5.44)(acorn@8.19.0)(confbox@0.3.1)(db0@0.3.4)(dotenv@17.4.2)(esbuild@0.28.2)(giget@3.3.1)(ioredis@5.11.1)(lightningcss@1.33.0)(mlly@1.8.2)(rolldown@1.2.14)(rollup-plugin-visualizer@7.1.1(rolldown@1.2.14)(rollup@4.64.9))(rollup@4.64.9)(srvx@1.0.6)(terser@5.51.2)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)))(rolldown@1.2.14)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)))(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2))': + dependencies: + '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(rolldown@1.2.14)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2))) + clickable-path: 0.1.1 + defu: 6.1.7 + exsolve: 1.1.3 + mocked-exports: 0.1.1 + my-bad: 0.2.11(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)) + nuxt: 4.6.2(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7))(@oxc-project/types@0.154.0)(@vue/compiler-sfc@3.5.44)(acorn@8.19.0)(confbox@0.3.1)(db0@0.3.4)(dotenv@17.4.2)(esbuild@0.28.2)(giget@3.3.1)(ioredis@5.11.1)(lightningcss@1.33.0)(mlly@1.8.2)(rolldown@1.2.14)(rollup-plugin-visualizer@7.1.1(rolldown@1.2.14)(rollup@4.64.9))(rollup@4.64.9)(srvx@1.0.6)(terser@5.51.2)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)) + pathe: 2.0.3 + rou3: 0.9.2 + srvx: 1.0.5 + ufo: 1.6.4 + ultrahtml: 1.7.0 + vite: 8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2) + transitivePeerDependencies: + - '@nuxt/schema' + - confbox + - dotenv + - giget + - jiti + - magic-string + - mlly + - oxc-parser + - rolldown + - unplugin + + '@oxc-project/types@0.154.0': {} + + '@parcel/watcher-wasm@2.6.0': + dependencies: + is-glob: 4.0.3 + picomatch: 4.0.7 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@polka/url@1.0.0-next.29': {} + + '@poppinss/colors@4.1.6': + dependencies: + kleur: 4.1.5 + + '@poppinss/dumper@0.7.0': + dependencies: + '@poppinss/colors': 4.1.6 + '@sindresorhus/is': 7.2.0 + supports-color: 10.2.2 + + '@poppinss/exception@1.2.3': {} + + '@rolldown/binding-android-arm-eabi@1.2.14': + optional: true + + '@rolldown/binding-android-arm64@1.2.14': + optional: true + + '@rolldown/binding-darwin-arm64@1.2.14': + optional: true + + '@rolldown/binding-darwin-x64@1.2.14': + optional: true + + '@rolldown/binding-freebsd-x64@1.2.14': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.2.14': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.2.14': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.2.14': + optional: true + + '@rolldown/binding-linux-ppc64-gnu@1.2.14': + optional: true + + '@rolldown/binding-linux-s390x-gnu@1.2.14': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.2.14': + optional: true + + '@rolldown/binding-linux-x64-musl@1.2.14': + optional: true + + '@rolldown/binding-openharmony-arm64@1.2.14': + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.2.14': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.2.14': + optional: true + + '@rolldown/pluginutils@1.0.1': {} + + '@rollup/plugin-alias@6.0.0(rollup@4.64.9)': + optionalDependencies: + rollup: 4.64.9 + + '@rollup/plugin-commonjs@29.0.3(rollup@4.64.9)': + dependencies: + '@rollup/pluginutils': 5.4.0(rollup@4.64.9) + commondir: 1.0.1 + estree-walker: 2.0.2 + fdir: 6.5.0(picomatch@4.0.7) + is-reference: 1.2.1 + magic-string: 0.30.21 + picomatch: 4.0.7 + optionalDependencies: + rollup: 4.64.9 + + '@rollup/plugin-inject@5.0.5(rollup@4.64.9)': + dependencies: + '@rollup/pluginutils': 5.4.0(rollup@4.64.9) + estree-walker: 2.0.2 + magic-string: 0.30.21 + optionalDependencies: + rollup: 4.64.9 + + '@rollup/plugin-json@6.1.0(rollup@4.64.9)': + dependencies: + '@rollup/pluginutils': 5.4.0(rollup@4.64.9) + optionalDependencies: + rollup: 4.64.9 + + '@rollup/plugin-node-resolve@16.0.3(rollup@4.64.9)': + dependencies: + '@rollup/pluginutils': 5.4.0(rollup@4.64.9) + '@types/resolve': 1.20.2 + deepmerge: 4.3.1 + is-module: 1.0.0 + resolve: 1.22.13 + optionalDependencies: + rollup: 4.64.9 + + '@rollup/plugin-replace@6.0.3(rollup@4.64.9)': + dependencies: + '@rollup/pluginutils': 5.4.0(rollup@4.64.9) + magic-string: 0.30.21 + optionalDependencies: + rollup: 4.64.9 + + '@rollup/plugin-terser@1.0.0(rollup@4.64.9)': + dependencies: + serialize-javascript: 7.1.2 + smob: 1.6.2 + terser: 5.51.2 + optionalDependencies: + rollup: 4.64.9 + + '@rollup/pluginutils@5.4.0(rollup@4.64.9)': + dependencies: + '@types/estree': 1.0.9 + estree-walker: 2.0.2 + picomatch: 4.0.7 + optionalDependencies: + rollup: 4.64.9 + + '@rollup/rollup-android-arm-eabi@4.64.9': + optional: true + + '@rollup/rollup-android-arm64@4.64.9': + optional: true + + '@rollup/rollup-darwin-arm64@4.64.9': + optional: true + + '@rollup/rollup-darwin-x64@4.64.9': + optional: true + + '@rollup/rollup-freebsd-arm64@4.64.9': + optional: true + + '@rollup/rollup-freebsd-x64@4.64.9': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.64.9': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.64.9': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.64.9': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.64.9': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.64.9': + optional: true + + '@rollup/rollup-linux-loong64-musl@4.64.9': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.64.9': + optional: true + + '@rollup/rollup-linux-ppc64-musl@4.64.9': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.64.9': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.64.9': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.64.9': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.64.9': + optional: true + + '@rollup/rollup-linux-x64-musl@4.64.9': + optional: true + + '@rollup/rollup-openbsd-x64@4.64.9': + optional: true + + '@rollup/rollup-openharmony-arm64@4.64.9': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.64.9': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.64.9': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.64.9': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.64.9': + optional: true + + '@sindresorhus/is@7.2.0': {} + + '@sindresorhus/merge-streams@4.0.0': {} + + '@speed-highlight/core@1.2.24': {} + + '@thunderid/browser@1.3.0': + dependencies: + '@thunderid/javascript': 1.4.0 + base64url: 3.0.1 + buffer: 6.0.3 + core-js: 3.42.0 + fast-sha256: 1.3.0 + jose: 6.2.3 + process: 0.11.10 + randombytes: 2.1.0 + stream-browserify: 3.0.0 + tslib: 2.8.1 + + '@thunderid/javascript@1.4.0': + dependencies: + jose: 6.2.3 + tslib: 2.8.1 + + '@thunderid/node@1.3.0': + dependencies: + '@thunderid/javascript': 1.4.0 + base64url: 3.0.1 + cross-fetch: 4.1.0 + fast-sha256: 1.3.0 + jose: 6.2.3 + memory-cache: 0.2.0 + secure-random-bytes: 5.0.1 + tslib: 2.8.1 + uuid: 11.1.1 + transitivePeerDependencies: + - encoding + + '@thunderid/nuxt@1.3.0(magicast@0.5.5)(nuxt@4.6.2(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7))(@oxc-project/types@0.154.0)(@vue/compiler-sfc@3.5.44)(acorn@8.19.0)(confbox@0.3.1)(db0@0.3.4)(dotenv@17.4.2)(esbuild@0.28.2)(giget@3.3.1)(ioredis@5.11.1)(lightningcss@1.33.0)(mlly@1.8.2)(rolldown@1.2.14)(rollup-plugin-visualizer@7.1.1(rolldown@1.2.14)(rollup@4.64.9))(rollup@4.64.9)(srvx@1.0.6)(terser@5.51.2)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)))(vue-router@5.4.0(@vue/compiler-sfc@3.5.44)(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2))(vue@3.5.44))(vue@3.5.44)': + dependencies: + '@nuxt/kit': 3.21.11(magicast@0.5.5) + '@thunderid/browser': 1.3.0 + '@thunderid/node': 1.3.0 + '@thunderid/vue': 1.4.0(vue-router@5.4.0(@vue/compiler-sfc@3.5.44)(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2))(vue@3.5.44))(vue@3.5.44) + defu: 6.1.5 + jose: 6.2.3 + nuxt: 4.6.2(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7))(@oxc-project/types@0.154.0)(@vue/compiler-sfc@3.5.44)(acorn@8.19.0)(confbox@0.3.1)(db0@0.3.4)(dotenv@17.4.2)(esbuild@0.28.2)(giget@3.3.1)(ioredis@5.11.1)(lightningcss@1.33.0)(mlly@1.8.2)(rolldown@1.2.14)(rollup-plugin-visualizer@7.1.1(rolldown@1.2.14)(rollup@4.64.9))(rollup@4.64.9)(srvx@1.0.6)(terser@5.51.2)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)) + vue: 3.5.44 + transitivePeerDependencies: + - encoding + - magicast + - vue-router + + '@thunderid/vue@1.4.0(vue-router@5.4.0(@vue/compiler-sfc@3.5.44)(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2))(vue@3.5.44))(vue@3.5.44)': + dependencies: + '@thunderid/browser': 1.3.0 + dompurify: 3.4.13 + tslib: 2.8.1 + vue: 3.5.44 + optionalDependencies: + vue-router: 5.4.0(@vue/compiler-sfc@3.5.44)(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2))(vue@3.5.44) + + '@types/estree@1.0.9': {} + + '@types/resolve@1.20.2': {} + + '@types/trusted-types@2.0.7': + optional: true + + '@unhead/bundler@3.4.3(@oxc-project/types@0.154.0)(esbuild@0.28.2)(lightningcss@1.33.0)(rolldown@1.2.14)(rollup@4.64.9)(unhead@3.4.3(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)))(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2))': + dependencies: + magic-string: 1.4.3 + oxc-walker: 1.1.1(@oxc-project/types@0.154.0)(rolldown@1.2.14) + unhead: 3.4.3(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)) + unplugin: 3.4.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)) + optionalDependencies: + esbuild: 0.28.2 + lightningcss: 1.33.0 + rolldown: 1.2.14 + vite: 8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2) + transitivePeerDependencies: + - '@farmfe/core' + - '@oxc-project/types' + - '@rsbuild/core' + - '@rspack/core' + - bun-types-no-globals + - rollup + - unloader + + '@unhead/vue@3.4.3(@oxc-project/types@0.154.0)(esbuild@0.28.2)(lightningcss@1.33.0)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2))(vue@3.5.44)': + dependencies: + '@unhead/bundler': 3.4.3(@oxc-project/types@0.154.0)(esbuild@0.28.2)(lightningcss@1.33.0)(rolldown@1.2.14)(rollup@4.64.9)(unhead@3.4.3(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)))(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)) + hookable: 6.1.2 + unhead: 3.4.3(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)) + unplugin: 3.4.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)) + vue: 3.5.44 + optionalDependencies: + vite: 8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2) + transitivePeerDependencies: + - '@farmfe/core' + - '@oxc-project/types' + - '@rsbuild/core' + - '@rspack/core' + - '@unhead/cli' + - '@vitejs/devtools-kit' + - bun-types-no-globals + - esbuild + - lightningcss + - oxc-parser + - rolldown + - rollup + - unloader + + '@vercel/nft@1.11.0(rollup@4.64.9)': + dependencies: + '@mapbox/node-pre-gyp': 2.0.3 + '@rollup/pluginutils': 5.4.0(rollup@4.64.9) + acorn: 8.19.0 + acorn-import-attributes: 1.9.5(acorn@8.19.0) + async-sema: 3.1.1 + bindings: 1.5.0 + estree-walker: 2.0.2 + glob: 13.0.6 + graceful-fs: 4.2.11 + node-gyp-build: 4.8.4 + picomatch: 4.0.7 + resolve-from: 5.0.0 + transitivePeerDependencies: + - encoding + - rollup + - supports-color + + '@vitejs/plugin-vue-jsx@5.1.6(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2))(vue@3.5.44)': + dependencies: + '@babel/core': 7.29.7 + '@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-typescript': 7.29.9(@babel/core@7.29.7) + '@rolldown/pluginutils': 1.0.1 + '@vue/babel-plugin-jsx': 2.0.1(@babel/core@7.29.7) + vite: 8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2) + vue: 3.5.44 + transitivePeerDependencies: + - supports-color + + '@vitejs/plugin-vue@6.0.10(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2))(vue@3.5.44)': + dependencies: + '@rolldown/pluginutils': 1.0.1 + vite: 8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2) + vue: 3.5.44 + + '@vue-macros/common@3.1.4(vue@3.5.44)': + dependencies: + '@vue/compiler-sfc': 3.5.44 + ast-kit: 2.2.0 + local-pkg: 1.2.1 + magic-string-ast: 1.0.3 + unplugin-utils: 0.3.2 + optionalDependencies: + vue: 3.5.44 + + '@vue/babel-helper-vue-transform-on@2.0.1': {} + + '@vue/babel-plugin-jsx@2.0.1(@babel/core@7.29.7)': + dependencies: + '@babel/helper-module-imports': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7) + '@babel/template': 7.29.7 + '@babel/traverse': 7.29.10 + '@babel/types': 7.29.8 + '@vue/babel-helper-vue-transform-on': 2.0.1 + '@vue/babel-plugin-resolve-type': 2.0.1(@babel/core@7.29.7) + '@vue/shared': 3.5.44 + optionalDependencies: + '@babel/core': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@vue/babel-plugin-resolve-type@2.0.1(@babel/core@7.29.7)': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/core': 7.29.7 + '@babel/helper-module-imports': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/parser': 7.29.9 + '@vue/compiler-sfc': 3.5.44 + transitivePeerDependencies: + - supports-color + + '@vue/compiler-core@3.5.44': + dependencies: + '@babel/parser': 7.29.9 + '@vue/shared': 3.5.44 + entities: 7.0.1 + estree-walker: 2.0.2 + source-map-js: 1.2.2 + + '@vue/compiler-dom@3.5.44': + dependencies: + '@vue/compiler-core': 3.5.44 + '@vue/shared': 3.5.44 + + '@vue/compiler-sfc@3.5.44': + dependencies: + '@babel/parser': 7.29.9 + '@vue/compiler-core': 3.5.44 + '@vue/compiler-dom': 3.5.44 + '@vue/compiler-ssr': 3.5.44 + '@vue/shared': 3.5.44 + estree-walker: 2.0.2 + magic-string: 0.30.21 + postcss: 8.5.30 + source-map-js: 1.2.2 + + '@vue/compiler-ssr@3.5.44': + dependencies: + '@vue/compiler-dom': 3.5.44 + '@vue/shared': 3.5.44 + + '@vue/devtools-api@8.2.1': + dependencies: + '@vue/devtools-kit': 8.2.1 + + '@vue/devtools-core@8.2.1(vue@3.5.44)': + dependencies: + '@vue/devtools-kit': 8.2.1 + '@vue/devtools-shared': 8.2.1 + vue: 3.5.44 + + '@vue/devtools-kit@8.2.1': + dependencies: + '@vue/devtools-shared': 8.2.1 + birpc: 2.9.0 + hookable: 5.5.3 + perfect-debounce: 2.1.0 + + '@vue/devtools-shared@8.2.1': {} + + '@vue/reactivity@3.5.44': + dependencies: + '@vue/shared': 3.5.44 + + '@vue/runtime-core@3.5.44': + dependencies: + '@vue/reactivity': 3.5.44 + '@vue/shared': 3.5.44 + + '@vue/runtime-dom@3.5.44': + dependencies: + '@vue/reactivity': 3.5.44 + '@vue/runtime-core': 3.5.44 + '@vue/shared': 3.5.44 + csstype: 3.2.3 + + '@vue/server-renderer@3.5.44': + dependencies: + '@vue/compiler-ssr': 3.5.44 + '@vue/runtime-dom': 3.5.44 + '@vue/shared': 3.5.44 + + '@vue/shared@3.5.44': {} + + abbrev@3.0.1: {} + + abort-controller@3.0.0: + dependencies: + event-target-shim: 5.0.1 + + acorn-import-attributes@1.9.5(acorn@8.19.0): + dependencies: + acorn: 8.19.0 + + acorn@8.19.0: {} + + agent-base@7.1.4: {} + + ansi-regex@5.0.1: {} + + ansi-regex@6.4.0: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.3: {} + + ansis@4.4.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.2 + + archiver-utils@5.0.2: + dependencies: + glob: 10.5.0 + graceful-fs: 4.2.11 + is-stream: 2.0.1 + lazystream: 1.0.1 + lodash: 4.18.1 + normalize-path: 3.0.0 + readable-stream: 4.8.0 + + archiver@7.0.1: + dependencies: + archiver-utils: 5.0.2 + async: 3.2.6 + buffer-crc32: 1.0.0 + readable-stream: 4.8.0 + readdir-glob: 1.1.3 + tar-stream: 3.2.2 + zip-stream: 6.0.1 + transitivePeerDependencies: + - bare-abort-controller + - bare-buffer + - react-native-b4a + + args-tokenizer@0.3.0: {} + + ast-kit@2.2.0: + dependencies: + '@babel/parser': 7.29.9 + pathe: 2.0.3 + + ast-kit@3.0.0: + dependencies: + '@babel/parser': 8.0.7 + estree-walker: 3.0.3 + pathe: 2.0.3 + + ast-walker-scope@0.10.0: + dependencies: + '@babel/parser': 8.0.7 + '@babel/types': 8.0.6 + ast-kit: 3.0.0 + + async-sema@3.1.1: {} + + async@3.2.6: {} + + autoprefixer@10.6.1(postcss@8.5.30): + dependencies: + browserslist: 4.29.3 + caniuse-lite: 1.0.30001816 + fraction.js: 5.3.4 + picocolors: 1.1.1 + postcss: 8.5.30 + postcss-value-parser: 4.2.0 + + b4a@1.9.0: {} + + balanced-match@1.0.2: {} + + balanced-match@4.0.4: {} + + bare-events@2.9.2: {} + + bare-fs@4.8.4: + dependencies: + bare-events: 2.9.2 + bare-path: 3.1.2 + bare-stream: 2.13.4(bare-events@2.9.2) + bare-url: 2.5.5 + fast-fifo: 1.3.2 + transitivePeerDependencies: + - bare-abort-controller + - react-native-b4a + + bare-path@3.1.2: {} + + bare-stream@2.13.4(bare-events@2.9.2): + dependencies: + b4a: 1.9.0 + streamx: 2.28.1 + teex: 1.0.1 + optionalDependencies: + bare-events: 2.9.2 + transitivePeerDependencies: + - react-native-b4a + + bare-url@2.5.5: + dependencies: + bare-path: 3.1.2 + + base64-js@1.5.1: {} + + base64url@3.0.1: {} + + baseline-browser-mapping@2.11.29: {} + + bindings@1.5.0: + dependencies: + file-uri-to-path: 1.0.0 + + birpc@2.9.0: {} + + birpc@4.2.0: {} + + brace-expansion@2.1.7: + dependencies: + balanced-match: 1.0.2 + + brace-expansion@5.0.12: + dependencies: + balanced-match: 4.0.4 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.29.3: + dependencies: + baseline-browser-mapping: 2.11.29 + caniuse-lite: 1.0.30001816 + electron-to-chromium: 1.5.459 + node-releases: 2.0.59 + update-browserslist-db: 1.3.4(browserslist@4.29.3) + + buffer-crc32@1.0.0: {} + + buffer-from@1.1.2: {} + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + bundle-name@4.1.1: + dependencies: + run-applescript: 7.1.0 + + c12@3.3.4(magicast@0.5.5): + dependencies: + chokidar: 5.0.0 + confbox: 0.2.4 + defu: 6.1.7 + dotenv: 17.4.2 + exsolve: 1.1.3 + giget: 3.3.1 + jiti: 2.7.0 + ohash: 2.0.12 + pathe: 2.0.3 + perfect-debounce: 2.1.0 + pkg-types: 2.3.3 + rc9: 3.1.0 + optionalDependencies: + magicast: 0.5.5 + + cac@7.1.0: {} + + caniuse-api@4.0.0: + dependencies: + browserslist: 4.29.3 + caniuse-lite: 1.0.30001816 + + caniuse-lite@1.0.30001816: {} + + chokidar@5.0.0: + dependencies: + readdirp: 5.1.1 + + chownr@3.0.0: {} + + citty@0.1.6: + dependencies: + consola: 3.4.2 + + citty@0.2.2: {} + + clickable-path@0.1.1: {} + + cliui@9.0.1: + dependencies: + string-width: 7.2.0 + strip-ansi: 7.2.0 + wrap-ansi: 9.0.2 + + cluster-key-slot@1.1.1: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + commander@2.20.3: {} + + commondir@1.0.1: {} + + compatx@0.2.0: {} + + compress-commons@6.0.2: + dependencies: + crc-32: 1.2.2 + crc32-stream: 6.0.0 + is-stream: 2.0.1 + normalize-path: 3.0.0 + readable-stream: 4.8.0 + + confbox@0.1.8: {} + + confbox@0.2.4: {} + + confbox@0.3.1: {} + + consola@3.4.2: {} + + convert-source-map@2.0.0: {} + + cookie-es@1.2.3: {} + + cookie-es@2.0.1: {} + + cookie-es@3.1.1: {} + + core-js@3.42.0: {} + + core-util-is@1.0.3: {} + + crc-32@1.2.2: {} + + crc32-stream@6.0.0: + dependencies: + crc-32: 1.2.2 + readable-stream: 4.8.0 + + croner@10.0.1: {} + + cross-fetch@4.1.0: + dependencies: + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + crossws@0.3.5: + dependencies: + uncrypto: 0.1.3 + + crossws@0.4.15(srvx@1.0.6): + optionalDependencies: + srvx: 1.0.6 + + cssnano@9.9.0(postcss@8.5.30): + dependencies: + '@colordx/core': 7.3.0 + '@csstools/css-tokenizer': 4.0.2 + browserslist: 4.29.3 + caniuse-api: 4.0.0 + postcss: 8.5.30 + postcss-calc: 11.2.3(postcss@8.5.30) + + csstype@3.2.3: {} + + db0@0.3.4: {} + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + deepmerge@4.3.1: {} + + default-browser-id@5.0.1: {} + + default-browser@5.5.1: + dependencies: + bundle-name: 4.1.1 + default-browser-id: 5.0.1 + + define-lazy-prop@3.0.0: {} + + defu@6.1.5: {} + + defu@6.1.7: {} + + denque@2.1.0: {} + + depd@2.0.0: {} + + destr@2.0.5: {} + + detect-libc@2.1.2: {} + + devalue@6.0.3: {} + + diff@8.0.4: {} + + dom-walk@0.1.2: {} + + dompurify@3.4.13: + optionalDependencies: + '@types/trusted-types': 2.0.7 + + dot-prop@10.2.0: + dependencies: + type-fest: 5.10.0 + + dotenv@17.4.2: {} + + duplexer@0.1.2: {} + + eastasianwidth@0.2.0: {} + + ee-first@1.1.1: {} + + electron-to-chromium@1.5.459: {} + + emoji-regex@10.6.0: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + encodeurl@2.0.0: {} + + entities@7.0.1: {} + + error-stack-parser-es@1.0.5: {} + + error-stack-parser-es@2.0.1: {} + + errx@0.1.2: {} + + errx@0.2.2: {} + + es-errors@1.3.0: {} + + es-module-lexer@2.3.2: {} + + esbuild@0.28.2: + optionalDependencies: + '@esbuild/aix-ppc64': 0.28.2 + '@esbuild/android-arm': 0.28.2 + '@esbuild/android-arm64': 0.28.2 + '@esbuild/android-x64': 0.28.2 + '@esbuild/darwin-arm64': 0.28.2 + '@esbuild/darwin-x64': 0.28.2 + '@esbuild/freebsd-arm64': 0.28.2 + '@esbuild/freebsd-x64': 0.28.2 + '@esbuild/linux-arm': 0.28.2 + '@esbuild/linux-arm64': 0.28.2 + '@esbuild/linux-ia32': 0.28.2 + '@esbuild/linux-loong64': 0.28.2 + '@esbuild/linux-mips64el': 0.28.2 + '@esbuild/linux-ppc64': 0.28.2 + '@esbuild/linux-riscv64': 0.28.2 + '@esbuild/linux-s390x': 0.28.2 + '@esbuild/linux-x64': 0.28.2 + '@esbuild/netbsd-arm64': 0.28.2 + '@esbuild/netbsd-x64': 0.28.2 + '@esbuild/openbsd-arm64': 0.28.2 + '@esbuild/openbsd-x64': 0.28.2 + '@esbuild/openharmony-arm64': 0.28.2 + '@esbuild/sunos-x64': 0.28.2 + '@esbuild/win32-arm64': 0.28.2 + '@esbuild/win32-ia32': 0.28.2 + '@esbuild/win32-x64': 0.28.2 + + escalade@3.2.0: {} + + escape-html@1.0.3: {} + + escape-string-regexp@5.0.0: {} + + estree-walker@2.0.2: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.9 + + etag@1.8.1: {} + + event-target-shim@5.0.1: {} + + events-universal@1.0.1: + dependencies: + bare-events: 2.9.2 + transitivePeerDependencies: + - bare-abort-controller + + events@3.3.0: {} + + execa@8.0.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + + exsolve@1.1.3: {} + + fast-fifo@1.3.2: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-npm-meta@2.2.0: + dependencies: + cac: 7.1.0 + + fast-sha256@1.3.0: {} + + fast-string-truncated-width@3.0.3: {} + + fast-string-width@3.0.2: + dependencies: + fast-string-truncated-width: 3.0.3 + + fast-wrap-ansi@0.2.2: + dependencies: + fast-string-width: 3.0.2 + + fastq@1.20.3: + dependencies: + reusify: 1.1.0 + + fdir@6.5.0(picomatch@4.0.7): + optionalDependencies: + picomatch: 4.0.7 + + fetchdts@0.2.0: {} + + file-uri-to-path@1.0.0: {} + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + flru@1.0.2: {} + + fnv1a-64@0.1.2: {} + + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + fraction.js@5.3.4: {} + + fresh@2.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + fuzzysort@4.0.2: {} + + generic-names@4.0.0: + dependencies: + loader-utils: 3.3.1 + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-east-asian-width@1.7.0: {} + + get-port-please@3.2.0: {} + + get-random-values@3.0.0: + dependencies: + global: 4.4.0 + + get-stream@8.0.1: {} + + giget@3.3.1: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob@10.5.0: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.9 + minipass: 7.1.3 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + + glob@13.0.6: + dependencies: + minimatch: 10.2.6 + minipass: 7.1.3 + path-scurry: 2.0.2 + + global-directory@4.0.1: + dependencies: + ini: 4.1.1 + + global@4.4.0: + dependencies: + min-document: 2.19.2 + process: 0.11.10 + + globby@16.2.4: + dependencies: + '@sindresorhus/merge-streams': 4.0.0 + fast-glob: 3.3.3 + ignore: 7.0.12 + is-path-inside: 4.0.0 + micromatch: 4.0.8 + slash: 5.1.0 + unicorn-magic: 0.4.1 + + graceful-fs@4.2.11: {} + + gzip-size@7.0.0: + dependencies: + duplexer: 0.1.2 + + h3@1.15.11: + dependencies: + cookie-es: 1.2.3 + crossws: 0.3.5 + defu: 6.1.7 + destr: 2.0.5 + iron-webcrypto: 1.2.1 + node-mock-http: 1.0.5 + radix3: 1.1.2 + ufo: 1.6.4 + uncrypto: 0.1.3 + + hasown@2.0.4: + dependencies: + function-bind: 1.1.2 + + hookable@5.5.3: {} + + hookable@6.1.2: {} + + http-errors@2.0.1: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.2 + toidentifier: 1.0.1 + + http-shutdown@1.2.2: {} + + https-proxy-agent@7.0.6: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + httpxy@0.5.5: {} + + human-signals@5.0.0: {} + + ieee754@1.2.1: {} + + ignore@7.0.12: {} + + image-meta@0.2.2: {} + + impound@1.2.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)): + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + es-module-lexer: 2.3.2 + pathe: 2.0.3 + unplugin: 3.4.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)) + unplugin-utils: 0.3.2 + transitivePeerDependencies: + - '@farmfe/core' + - '@rsbuild/core' + - '@rspack/core' + - bun-types-no-globals + - esbuild + - rolldown + - rollup + - unloader + - vite + - webpack + + inherits@2.0.4: {} + + ini@4.1.1: {} + + ioredis@5.11.1: + dependencies: + '@ioredis/commands': 1.10.0 + cluster-key-slot: 1.1.1 + debug: 4.4.3 + denque: 2.1.0 + redis-errors: 1.2.0 + redis-parser: 3.0.0 + standard-as-callback: 2.1.0 + transitivePeerDependencies: + - supports-color + + iron-webcrypto@1.2.1: {} + + iron-webcrypto@2.0.0: + dependencies: + uint8array-extras: 1.6.0 + + is-core-module@2.17.0: + dependencies: + hasown: 2.0.4 + + is-docker@3.0.0: {} + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-in-ssh@1.0.0: {} + + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + + is-installed-globally@1.0.1: + dependencies: + global-directory: 4.0.1 + is-path-inside: 4.0.0 + + is-module@1.0.0: {} + + is-number@7.0.0: {} + + is-path-inside@4.0.0: {} + + is-reference@1.2.1: + dependencies: + '@types/estree': 1.0.9 + + is-stream@2.0.1: {} + + is-stream@3.0.0: {} + + is-wsl@3.1.1: + dependencies: + is-inside-container: 1.0.0 + + isarray@1.0.0: {} + + isexe@2.0.0: {} + + isexe@4.0.0: {} + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jiti@2.7.0: {} + + jose@6.2.3: {} + + js-tokens@10.0.0: {} + + js-tokens@4.0.0: {} + + jsesc@3.1.0: {} + + json5@2.2.3: {} + + kleur@4.1.5: {} + + klona@2.0.6: {} + + knitwork@1.3.0: {} + + launch-editor@2.14.2: + dependencies: + picocolors: 1.1.1 + shell-quote: 1.12.0 + + lazystream@1.0.1: + dependencies: + readable-stream: 2.3.8 + + lightningcss-android-arm64@1.33.0: + optional: true + + lightningcss-darwin-arm64@1.33.0: + optional: true + + lightningcss-darwin-x64@1.33.0: + optional: true + + lightningcss-freebsd-x64@1.33.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.33.0: + optional: true + + lightningcss-linux-arm64-gnu@1.33.0: + optional: true + + lightningcss-linux-arm64-musl@1.33.0: + optional: true + + lightningcss-linux-x64-gnu@1.33.0: + optional: true + + lightningcss-linux-x64-musl@1.33.0: + optional: true + + lightningcss-win32-arm64-msvc@1.33.0: + optional: true + + lightningcss-win32-x64-msvc@1.33.0: + optional: true + + lightningcss@1.33.0: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.33.0 + lightningcss-darwin-arm64: 1.33.0 + lightningcss-darwin-x64: 1.33.0 + lightningcss-freebsd-x64: 1.33.0 + lightningcss-linux-arm-gnueabihf: 1.33.0 + lightningcss-linux-arm64-gnu: 1.33.0 + lightningcss-linux-arm64-musl: 1.33.0 + lightningcss-linux-x64-gnu: 1.33.0 + lightningcss-linux-x64-musl: 1.33.0 + lightningcss-win32-arm64-msvc: 1.33.0 + lightningcss-win32-x64-msvc: 1.33.0 + + listhen@1.10.1(srvx@1.0.6): + dependencies: + '@parcel/watcher-wasm': 2.6.0 + citty: 0.2.2 + consola: 3.4.2 + crossws: 0.4.15(srvx@1.0.6) + defu: 6.1.7 + get-port-please: 3.2.0 + h3: 1.15.11 + http-shutdown: 1.2.2 + jiti: 2.7.0 + node-forge: 1.4.0 + pathe: 2.0.3 + std-env: 4.3.0 + tinyclip: 0.1.15 + ufo: 1.6.4 + untun: 0.2.2 + uqr: 0.1.3 + transitivePeerDependencies: + - srvx + + loader-utils@3.3.1: {} + + local-pkg@1.2.1: + dependencies: + mlly: 1.8.2 + pkg-types: 2.3.3 + quansync: 0.2.11 + + lodash@4.18.1: {} + + lru-cache@10.4.3: {} + + lru-cache@11.5.3: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + magic-string-ast@1.0.3: + dependencies: + magic-string: 0.30.21 + + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.6.0 + + magic-string@1.4.3: + dependencies: + '@jridgewell/sourcemap-codec': 1.6.0 + + magicast@0.5.5: + dependencies: + '@babel/parser': 7.29.9 + '@babel/types': 7.29.8 + source-map-js: 1.2.2 + + memory-cache@0.2.0: {} + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + microdiff@1.6.0: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.2 + + mime-db@1.54.0: {} + + mime-types@3.0.2: + dependencies: + mime-db: 1.54.0 + + mime@4.1.1: {} + + mimic-fn@4.0.0: {} + + min-document@2.19.2: + dependencies: + dom-walk: 0.1.2 + + minimatch@10.2.6: + dependencies: + brace-expansion: 5.0.12 + + minimatch@5.1.9: + dependencies: + brace-expansion: 2.1.7 + + minimatch@9.0.9: + dependencies: + brace-expansion: 2.1.7 + + minipass@7.1.3: {} + + minizlib@3.1.0: + dependencies: + minipass: 7.1.3 + + mlly@1.8.2: + dependencies: + acorn: 8.19.0 + pathe: 2.0.3 + pkg-types: 1.3.1 + ufo: 1.6.4 + + mocked-exports@0.1.1: {} + + mrmime@2.0.1: {} + + ms@2.1.3: {} + + muggle-string@0.4.1: {} + + my-bad@0.2.11(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)): + dependencies: + clickable-path: 0.1.1 + errx: 0.2.2 + fnv1a-64: 0.1.2 + optionalDependencies: + vite: 8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2) + + nanoid@3.3.20: {} + + nanotar@0.3.0: {} + + nitropack@2.13.4(rolldown@1.2.14)(srvx@1.0.6)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)): + dependencies: + '@cloudflare/kv-asset-handler': 0.4.2 + '@rollup/plugin-alias': 6.0.0(rollup@4.64.9) + '@rollup/plugin-commonjs': 29.0.3(rollup@4.64.9) + '@rollup/plugin-inject': 5.0.5(rollup@4.64.9) + '@rollup/plugin-json': 6.1.0(rollup@4.64.9) + '@rollup/plugin-node-resolve': 16.0.3(rollup@4.64.9) + '@rollup/plugin-replace': 6.0.3(rollup@4.64.9) + '@rollup/plugin-terser': 1.0.0(rollup@4.64.9) + '@vercel/nft': 1.11.0(rollup@4.64.9) + archiver: 7.0.1 + c12: 3.3.4(magicast@0.5.5) + chokidar: 5.0.0 + citty: 0.2.2 + compatx: 0.2.0 + confbox: 0.2.4 + consola: 3.4.2 + cookie-es: 2.0.1 + croner: 10.0.1 + crossws: 0.3.5 + db0: 0.3.4 + defu: 6.1.7 + destr: 2.0.5 + dot-prop: 10.2.0 + esbuild: 0.28.2 + escape-string-regexp: 5.0.0 + etag: 1.8.1 + exsolve: 1.1.3 + globby: 16.2.4 + gzip-size: 7.0.0 + h3: 1.15.11 + hookable: 5.5.3 + httpxy: 0.5.5 + ioredis: 5.11.1 + jiti: 2.7.0 + klona: 2.0.6 + knitwork: 1.3.0 + listhen: 1.10.1(srvx@1.0.6) + magic-string: 0.30.21 + magicast: 0.5.5 + mime: 4.1.1 + mlly: 1.8.2 + node-fetch-native: 1.6.7 + node-mock-http: 1.0.5 + ofetch: 1.5.1 + ohash: 2.0.12 + pathe: 2.0.3 + perfect-debounce: 2.1.0 + pkg-types: 2.3.3 + pretty-bytes: 7.2.0 + radix3: 1.1.2 + rollup: 4.64.9 + rollup-plugin-visualizer: 7.1.1(rolldown@1.2.14)(rollup@4.64.9) + scule: 1.3.0 + semver: 7.8.5 + serve-placeholder: 2.0.2 + serve-static: 2.2.1 + source-map: 0.7.6 + std-env: 4.3.0 + ufo: 1.6.4 + ultrahtml: 1.7.0 + uncrypto: 0.1.3 + unctx: 2.5.0 + unenv: 2.0.0-rc.24 + unimport: 6.5.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)) + unplugin-utils: 0.3.2 + unstorage: 1.17.6(db0@0.3.4)(ioredis@5.11.1) + untyped: 2.0.0 + unwasm: 0.5.3 + youch: 4.1.1 + youch-core: 0.3.3 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@electric-sql/pglite' + - '@farmfe/core' + - '@libsql/client' + - '@netlify/blobs' + - '@parcel/watcher' + - '@planetscale/database' + - '@rsbuild/core' + - '@rspack/core' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bare-abort-controller + - bare-buffer + - better-sqlite3 + - bun-types-no-globals + - drizzle-orm + - encoding + - idb-keyval + - mysql2 + - oxc-parser + - react-native-b4a + - rolldown + - sqlite3 + - srvx + - supports-color + - unloader + - uploadthing + - vite + - webpack + + node-fetch-native@1.6.7: {} + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + node-forge@1.4.0: {} + + node-gyp-build@4.8.4: {} + + node-mock-http@1.0.5: {} + + node-releases@2.0.59: {} + + nopt@8.1.0: + dependencies: + abbrev: 3.0.1 + + normalize-path@3.0.0: {} + + nostics@1.3.0: {} + + npm-run-path@5.3.0: + dependencies: + path-key: 4.0.0 + + npm-run-path@6.0.0: + dependencies: + path-key: 4.0.0 + unicorn-magic: 0.3.0 + + nuxt@4.6.2(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7))(@oxc-project/types@0.154.0)(@vue/compiler-sfc@3.5.44)(acorn@8.19.0)(confbox@0.3.1)(db0@0.3.4)(dotenv@17.4.2)(esbuild@0.28.2)(giget@3.3.1)(ioredis@5.11.1)(lightningcss@1.33.0)(mlly@1.8.2)(rolldown@1.2.14)(rollup-plugin-visualizer@7.1.1(rolldown@1.2.14)(rollup@4.64.9))(rollup@4.64.9)(srvx@1.0.6)(terser@5.51.2)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)): + dependencies: + '@dxup/nuxt': 0.5.10(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(esbuild@0.28.2)(giget@3.3.1)(jiti@2.7.0)(mlly@1.8.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)) + '@jridgewell/trace-mapping': 0.3.31 + '@nuxt/cli': 4.0.1(@nuxt/schema@4.6.2)(jiti@2.7.0)(rolldown@1.2.14)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)) + '@nuxt/devalue': 2.0.2 + '@nuxt/devtools': 3.4.3(@nuxt/schema@4.6.2)(confbox@0.3.1)(db0@0.3.4)(dotenv@17.4.2)(giget@3.3.1)(ioredis@5.11.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(rolldown@1.2.14)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)))(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2))(vue@3.5.44) + '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(rolldown@1.2.14)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2))) + '@nuxt/nitro-server': 4.6.2(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7))(@nuxt/schema@4.6.2)(@oxc-project/types@0.154.0)(confbox@0.3.1)(db0@0.3.4)(dotenv@17.4.2)(esbuild@0.28.2)(giget@3.3.1)(ioredis@5.11.1)(jiti@2.7.0)(lightningcss@1.33.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7))(@oxc-project/types@0.154.0)(@vue/compiler-sfc@3.5.44)(acorn@8.19.0)(confbox@0.3.1)(db0@0.3.4)(dotenv@17.4.2)(esbuild@0.28.2)(giget@3.3.1)(ioredis@5.11.1)(lightningcss@1.33.0)(mlly@1.8.2)(rolldown@1.2.14)(rollup-plugin-visualizer@7.1.1(rolldown@1.2.14)(rollup@4.64.9))(rollup@4.64.9)(srvx@1.0.6)(terser@5.51.2)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)))(rolldown@1.2.14)(rollup@4.64.9)(srvx@1.0.6)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)))(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)) + '@nuxt/schema': 4.6.2 + '@nuxt/telemetry': 2.9.1(@nuxt/kit@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(rolldown@1.2.14)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)))) + '@nuxt/vite-builder': 4.6.2(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7))(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(esbuild@0.28.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7))(@oxc-project/types@0.154.0)(@vue/compiler-sfc@3.5.44)(acorn@8.19.0)(confbox@0.3.1)(db0@0.3.4)(dotenv@17.4.2)(esbuild@0.28.2)(giget@3.3.1)(ioredis@5.11.1)(lightningcss@1.33.0)(mlly@1.8.2)(rolldown@1.2.14)(rollup-plugin-visualizer@7.1.1(rolldown@1.2.14)(rollup@4.64.9))(rollup@4.64.9)(srvx@1.0.6)(terser@5.51.2)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)))(rolldown@1.2.14)(rollup-plugin-visualizer@7.1.1(rolldown@1.2.14)(rollup@4.64.9))(terser@5.51.2)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)))(vue@3.5.44) + '@nuxt/vite-server': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7))(@oxc-project/types@0.154.0)(@vue/compiler-sfc@3.5.44)(acorn@8.19.0)(confbox@0.3.1)(db0@0.3.4)(dotenv@17.4.2)(esbuild@0.28.2)(giget@3.3.1)(ioredis@5.11.1)(lightningcss@1.33.0)(mlly@1.8.2)(rolldown@1.2.14)(rollup-plugin-visualizer@7.1.1(rolldown@1.2.14)(rollup@4.64.9))(rollup@4.64.9)(srvx@1.0.6)(terser@5.51.2)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)))(rolldown@1.2.14)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)))(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)) + '@unhead/vue': 3.4.3(@oxc-project/types@0.154.0)(esbuild@0.28.2)(lightningcss@1.33.0)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2))(vue@3.5.44) + '@vue/shared': 3.5.44 + chokidar: 5.0.0 + clickable-path: 0.1.1 + compatx: 0.2.0 + consola: 3.4.2 + cookie-es: 3.1.1 + defu: 6.1.7 + destr: 2.0.5 + devalue: 6.0.3 + errx: 0.2.2 + escape-string-regexp: 5.0.0 + exsolve: 1.1.3 + fetchdts: 0.2.0 + fnv1a-64: 0.1.2 + hookable: 6.1.2 + ignore: 7.0.12 + impound: 1.2.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)) + iron-webcrypto: 2.0.0 + jiti: 2.7.0 + klona: 2.0.6 + knitwork: 1.3.0 + magic-string: 1.4.3 + my-bad: 0.2.11(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)) + nanotar: 0.3.0 + nostics: 1.3.0 + object-identity: 0.2.3 + ofetch: 1.5.1 + ohash: 2.0.12 + on-change: 6.0.2 + oxc-walker: 1.1.1(@oxc-project/types@0.154.0)(rolldown@1.2.14) + pathe: 2.0.3 + perfect-debounce: 2.1.0 + picomatch: 4.0.7 + pkg-types: 2.3.3 + rolldown: 1.2.14 + rolldown-string: 0.3.1(rolldown@1.2.14) + rou3: 0.9.2 + scule: 1.3.0 + std-env: 4.3.0 + tinyglobby: 0.2.17 + ufo: 1.6.4 + ultrahtml: 1.7.0 + uncrypto: 0.1.3 + unctx: 3.0.1(magic-string@1.4.3)(rolldown@1.2.14)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2))) + undici: 8.12.2 + unhead: 3.4.3(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)) + unimport: 7.0.2(acorn@8.19.0)(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)) + unplugin: 3.4.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)) + unrouting: 0.2.3 + untyped: 2.0.0 + verkit: 0.5.0 + vue: 3.5.44 + vue-bundle-renderer: 2.4.0 + vue-component-type-helpers: 3.3.13 + vue-router: 5.4.0(@vue/compiler-sfc@3.5.44)(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2))(vue@3.5.44) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@babel/plugin-proposal-decorators' + - '@babel/plugin-syntax-jsx' + - '@babel/plugin-syntax-typescript' + - '@biomejs/biome' + - '@capacitor/preferences' + - '@deno/kv' + - '@electric-sql/pglite' + - '@farmfe/core' + - '@libsql/client' + - '@netlify/blobs' + - '@nuxt/docs' + - '@oxc-project/types' + - '@pinia/colada' + - '@planetscale/database' + - '@rollup/plugin-babel' + - '@rsbuild/core' + - '@rspack/core' + - '@unhead/cli' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - '@vitejs/devtools' + - '@vitejs/devtools-kit' + - '@vue/compiler-sfc' + - acorn + - aws4fetch + - bare-abort-controller + - bare-buffer + - better-sqlite3 + - bufferutil + - bun-types-no-globals + - confbox + - db0 + - dotenv + - drizzle-orm + - encoding + - esbuild + - eslint + - giget + - idb-keyval + - ioredis + - less + - lightningcss + - meow + - mlly + - mysql2 + - optionator + - oxc-parser + - oxlint + - pinia + - react-native-b4a + - rollup + - rollup-plugin-visualizer + - sass + - sass-embedded + - serve + - sqlite3 + - srvx + - stylelint + - stylus + - sugarss + - supports-color + - terser + - tsx + - typescript + - unloader + - uploadthing + - utf-8-validate + - vite + - vue-tsc + - webpack + - xml2js + - yaml + + object-identity@0.2.3: {} + + obug@2.2.1: {} + + obug@3.0.0: {} + + ofetch@1.5.1: + dependencies: + destr: 2.0.5 + node-fetch-native: 1.6.7 + ufo: 1.6.4 + + ohash@2.0.12: {} + + on-change@6.0.2: {} + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + + open@11.0.4: + dependencies: + default-browser: 5.5.1 + define-lazy-prop: 3.0.0 + is-in-ssh: 1.0.0 + is-inside-container: 1.0.0 + powershell-utils: 0.2.1 + wsl-utils: 1.0.1 + + oxc-walker@1.1.1(@oxc-project/types@0.154.0)(rolldown@1.2.14): + optionalDependencies: + '@oxc-project/types': 0.154.0 + rolldown: 1.2.14 + + package-json-from-dist@1.0.1: {} + + package-manager-detector@1.9.0: {} + + parseurl@1.3.3: {} + + path-key@3.1.1: {} + + path-key@4.0.0: {} + + path-parse@1.0.7: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.3 + + path-scurry@2.0.2: + dependencies: + lru-cache: 11.5.3 + minipass: 7.1.3 + + pathe@2.0.3: {} + + perfect-debounce@2.1.0: {} + + picocolors@1.1.1: {} + + picomatch@2.3.2: {} + + picomatch@4.0.7: {} + + pkg-types@1.3.1: + dependencies: + confbox: 0.1.8 + mlly: 1.8.2 + pathe: 2.0.3 + + pkg-types@2.3.3: + dependencies: + confbox: 0.3.1 + exsolve: 1.1.3 + pathe: 2.0.3 + + postcss-calc@11.2.3(postcss@8.5.30): + dependencies: + '@csstools/css-tokenizer': 4.0.2 + postcss: 8.5.30 + + postcss-value-parser@4.2.0: {} + + postcss@8.5.30: + dependencies: + nanoid: 3.3.20 + picocolors: 1.1.1 + source-map-js: 1.2.2 + + powershell-utils@0.2.1: {} + + pretty-bytes@7.2.0: {} + + process-nextick-args@2.0.1: {} + + process@0.11.10: {} + + proper-lockfile@4.1.2: + dependencies: + graceful-fs: 4.2.11 + retry: 0.12.0 + signal-exit: 3.0.7 + + quansync@0.2.11: {} + + queue-microtask@1.2.3: {} + + radix3@1.1.2: {} + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + range-parser@1.3.0: {} + + rc9@3.1.0: + dependencies: + defu: 6.1.7 + destr: 2.0.5 + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readable-stream@4.8.0: + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + string_decoder: 1.3.0 + + readdir-glob@1.1.3: + dependencies: + minimatch: 5.1.9 + + readdirp@5.1.1: {} + + redis-errors@1.2.0: {} + + redis-parser@3.0.0: + dependencies: + redis-errors: 1.2.0 + + resolve-from@5.0.0: {} + + resolve@1.22.13: + dependencies: + es-errors: 1.3.0 + is-core-module: 2.17.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + retry@0.12.0: {} + + reusify@1.1.0: {} + + rolldown-string@0.3.1(rolldown@1.2.14): + dependencies: + magic-string: 1.4.3 + optionalDependencies: + rolldown: 1.2.14 + + rolldown@1.2.14: + dependencies: + '@oxc-project/types': 0.154.0 + '@rolldown/pluginutils': 1.0.1 + optionalDependencies: + '@rolldown/binding-android-arm-eabi': 1.2.14 + '@rolldown/binding-android-arm64': 1.2.14 + '@rolldown/binding-darwin-arm64': 1.2.14 + '@rolldown/binding-darwin-x64': 1.2.14 + '@rolldown/binding-freebsd-x64': 1.2.14 + '@rolldown/binding-linux-arm-gnueabihf': 1.2.14 + '@rolldown/binding-linux-arm64-gnu': 1.2.14 + '@rolldown/binding-linux-arm64-musl': 1.2.14 + '@rolldown/binding-linux-ppc64-gnu': 1.2.14 + '@rolldown/binding-linux-s390x-gnu': 1.2.14 + '@rolldown/binding-linux-x64-gnu': 1.2.14 + '@rolldown/binding-linux-x64-musl': 1.2.14 + '@rolldown/binding-openharmony-arm64': 1.2.14 + '@rolldown/binding-win32-arm64-msvc': 1.2.14 + '@rolldown/binding-win32-x64-msvc': 1.2.14 + + rollup-plugin-visualizer@7.1.1(rolldown@1.2.14)(rollup@4.64.9): + dependencies: + open: 11.0.4 + picomatch: 4.0.7 + source-map: 0.8.0 + yargs: 18.2.0 + optionalDependencies: + rolldown: 1.2.14 + rollup: 4.64.9 + + rollup@4.64.9: + dependencies: + '@types/estree': 1.0.9 + optionalDependencies: + '@napi-rs/lzma-linux-x64-gnu': 1.5.1 + '@rollup/rollup-android-arm-eabi': 4.64.9 + '@rollup/rollup-android-arm64': 4.64.9 + '@rollup/rollup-darwin-arm64': 4.64.9 + '@rollup/rollup-darwin-x64': 4.64.9 + '@rollup/rollup-freebsd-arm64': 4.64.9 + '@rollup/rollup-freebsd-x64': 4.64.9 + '@rollup/rollup-linux-arm-gnueabihf': 4.64.9 + '@rollup/rollup-linux-arm-musleabihf': 4.64.9 + '@rollup/rollup-linux-arm64-gnu': 4.64.9 + '@rollup/rollup-linux-arm64-musl': 4.64.9 + '@rollup/rollup-linux-loong64-gnu': 4.64.9 + '@rollup/rollup-linux-loong64-musl': 4.64.9 + '@rollup/rollup-linux-ppc64-gnu': 4.64.9 + '@rollup/rollup-linux-ppc64-musl': 4.64.9 + '@rollup/rollup-linux-riscv64-gnu': 4.64.9 + '@rollup/rollup-linux-riscv64-musl': 4.64.9 + '@rollup/rollup-linux-s390x-gnu': 4.64.9 + '@rollup/rollup-linux-x64-gnu': 4.64.9 + '@rollup/rollup-linux-x64-musl': 4.64.9 + '@rollup/rollup-openbsd-x64': 4.64.9 + '@rollup/rollup-openharmony-arm64': 4.64.9 + '@rollup/rollup-win32-arm64-msvc': 4.64.9 + '@rollup/rollup-win32-ia32-msvc': 4.64.9 + '@rollup/rollup-win32-x64-gnu': 4.64.9 + '@rollup/rollup-win32-x64-msvc': 4.64.9 + fsevents: 2.3.3 + + rou3@0.9.2: {} + + run-applescript@7.1.0: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + scule@1.3.0: {} + + secure-random-bytes@5.0.1: + dependencies: + secure-random-octet: 4.0.1 + + secure-random-octet@4.0.1: + dependencies: + get-random-values: 3.0.0 + + semver@6.3.1: {} + + semver@7.8.5: {} + + send@1.2.1: + dependencies: + debug: 4.4.3 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 2.0.0 + http-errors: 2.0.1 + mime-types: 3.0.2 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.3.0 + statuses: 2.0.2 + transitivePeerDependencies: + - supports-color + + serialize-javascript@7.1.2: {} + + seroval@1.6.11: {} + + serve-placeholder@2.0.2: + dependencies: + defu: 6.1.7 + + serve-static@2.2.1: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 1.2.1 + transitivePeerDependencies: + - supports-color + + setprototypeof@1.2.0: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + shell-quote@1.12.0: {} + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + sirv@3.0.2: + dependencies: + '@polka/url': 1.0.0-next.29 + mrmime: 2.0.1 + totalist: 3.0.1 + + sisteransi@1.0.5: {} + + slash@5.1.0: {} + + smob@1.6.2: {} + + source-map-js@1.2.2: {} + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + + source-map@0.7.6: {} + + source-map@0.8.0: {} + + srvx@1.0.5: {} + + srvx@1.0.6: {} + + standard-as-callback@2.1.0: {} + + statuses@2.0.2: {} + + std-env@4.3.0: {} + + stream-browserify@3.0.0: + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + + streamx@2.28.1: + dependencies: + events-universal: 1.0.1 + fast-fifo: 1.3.2 + text-decoder: 1.2.7 + transitivePeerDependencies: + - bare-abort-controller + - react-native-b4a + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.2.0 + + string-width@7.2.0: + dependencies: + emoji-regex: 10.6.0 + get-east-asian-width: 1.7.0 + strip-ansi: 7.2.0 + + string-width@8.3.0: + dependencies: + get-east-asian-width: 1.7.0 + strip-ansi: 7.2.0 + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.2.0: + dependencies: + ansi-regex: 6.4.0 + + strip-final-newline@3.0.0: {} + + strip-literal@4.0.0: + dependencies: + js-tokens: 10.0.0 + + structured-clone-es@2.0.1: {} + + supports-color@10.2.2: {} + + supports-preserve-symlinks-flag@1.0.0: {} + + tagged-tag@1.0.0: {} + + tar-stream@3.2.2: + dependencies: + b4a: 1.9.0 + bare-fs: 4.8.4 + fast-fifo: 1.3.2 + streamx: 2.28.1 + transitivePeerDependencies: + - bare-abort-controller + - bare-buffer + - react-native-b4a + + tar@7.5.22: + dependencies: + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.3 + minizlib: 3.1.0 + yallist: 5.0.0 + + teex@1.0.1: + dependencies: + streamx: 2.28.1 + transitivePeerDependencies: + - bare-abort-controller + - react-native-b4a + + terser@5.51.2: + dependencies: + '@jridgewell/source-map': 0.3.11 + acorn: 8.19.0 + commander: 2.20.3 + source-map-support: 0.5.21 + + text-decoder@1.2.7: + dependencies: + b4a: 1.9.0 + transitivePeerDependencies: + - react-native-b4a + + tiny-invariant@1.3.3: {} + + tinyclip@0.1.15: {} + + tinyclip@1.0.3: {} + + tinyexec@1.3.1: {} + + tinyglobby@0.2.17: + dependencies: + fdir: 6.5.0(picomatch@4.0.7) + picomatch: 4.0.7 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toidentifier@1.0.1: {} + + totalist@3.0.1: {} + + tr46@0.0.3: {} + + tslib@2.8.1: {} + + type-fest@5.10.0: + dependencies: + tagged-tag: 1.0.0 + + ufo@1.6.4: {} + + uint8array-extras@1.6.0: {} + + ultrahtml@1.7.0: {} + + uncrypto@0.1.3: {} + + unctx@2.5.0: + dependencies: + acorn: 8.19.0 + estree-walker: 3.0.3 + magic-string: 0.30.21 + unplugin: 2.3.11 + + unctx@3.0.1(magic-string@1.4.3)(rolldown@1.2.14)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2))): + optionalDependencies: + magic-string: 1.4.3 + rolldown: 1.2.14 + unplugin: 3.4.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)) + + undici@8.12.2: {} + + unenv@2.0.0-rc.24: + dependencies: + pathe: 2.0.3 + + unhead@3.4.3(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)): + dependencies: + hookable: 6.1.2 + unplugin: 3.4.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)) + optionalDependencies: + vite: 8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2) + transitivePeerDependencies: + - '@farmfe/core' + - '@rsbuild/core' + - '@rspack/core' + - bun-types-no-globals + - esbuild + - rolldown + - rollup + - unloader + - webpack + + unicorn-magic@0.3.0: {} + + unicorn-magic@0.4.1: {} + + unimport@6.5.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)): + dependencies: + acorn: 8.19.0 + escape-string-regexp: 5.0.0 + estree-walker: 3.0.3 + local-pkg: 1.2.1 + magic-string: 1.4.3 + mlly: 1.8.2 + pathe: 2.0.3 + picomatch: 4.0.7 + pkg-types: 2.3.3 + scule: 1.3.0 + strip-literal: 4.0.0 + tinyglobby: 0.2.17 + unplugin: 3.4.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)) + unplugin-utils: 0.3.2 + optionalDependencies: + rolldown: 1.2.14 + transitivePeerDependencies: + - '@farmfe/core' + - '@rsbuild/core' + - '@rspack/core' + - bun-types-no-globals + - esbuild + - rollup + - unloader + - vite + - webpack + + unimport@7.0.2(acorn@8.19.0)(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)): + dependencies: + escape-string-regexp: 5.0.0 + estree-walker: 3.0.3 + local-pkg: 1.2.1 + magic-string: 1.4.3 + mlly: 1.8.2 + pathe: 2.0.3 + picomatch: 4.0.7 + pkg-types: 2.3.3 + scule: 1.3.0 + strip-literal: 4.0.0 + tinyglobby: 0.2.17 + unplugin: 3.4.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)) + unplugin-utils: 0.3.2 + optionalDependencies: + acorn: 8.19.0 + rolldown: 1.2.14 + transitivePeerDependencies: + - '@farmfe/core' + - '@rsbuild/core' + - '@rspack/core' + - bun-types-no-globals + - esbuild + - rollup + - unloader + - vite + - webpack + + unplugin-utils@0.3.2: + dependencies: + pathe: 2.0.3 + picomatch: 4.0.7 + + unplugin@2.3.11: + dependencies: + '@jridgewell/remapping': 2.3.5 + acorn: 8.19.0 + picomatch: 4.0.7 + webpack-virtual-modules: 0.6.2 + + unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)): + dependencies: + '@jridgewell/remapping': 2.3.5 + picomatch: 4.0.7 + webpack-virtual-modules: 0.6.2 + optionalDependencies: + esbuild: 0.28.2 + rolldown: 1.2.14 + rollup: 4.64.9 + vite: 8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2) + + unrouting@0.2.3: + dependencies: + escape-string-regexp: 5.0.0 + ufo: 1.6.4 + + unstorage@1.17.6(db0@0.3.4)(ioredis@5.11.1): + dependencies: + anymatch: 3.1.3 + chokidar: 5.0.0 + destr: 2.0.5 + h3: 1.15.11 + lru-cache: 11.5.3 + node-fetch-native: 1.6.7 + ofetch: 1.5.1 + ufo: 1.6.4 + optionalDependencies: + db0: 0.3.4 + ioredis: 5.11.1 + + untun@0.2.2: {} + + untyped@2.0.0: + dependencies: + citty: 0.1.6 + defu: 6.1.7 + jiti: 2.7.0 + knitwork: 1.3.0 + scule: 1.3.0 + + unwasm@0.5.3: + dependencies: + exsolve: 1.1.3 + knitwork: 1.3.0 + magic-string: 0.30.21 + mlly: 1.8.2 + pathe: 2.0.3 + pkg-types: 2.3.3 + + update-browserslist-db@1.3.4(browserslist@4.29.3): + dependencies: + browserslist: 4.29.3 + escalade: 3.2.0 + picocolors: 1.1.1 + + uqr@0.1.3: {} + + util-deprecate@1.0.2: {} + + uuid@11.1.1: {} + + verkit@0.5.0: {} + + vite-dev-rpc@2.0.0(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)): + dependencies: + birpc: 4.2.0 + vite: 8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2) + vite-hot-client: 2.2.0(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)) + + vite-hot-client@2.2.0(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)): + dependencies: + vite: 8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2) + + vite-node@6.0.0(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2): + dependencies: + cac: 7.1.0 + es-module-lexer: 2.3.2 + obug: 2.2.1 + pathe: 2.0.3 + vite: 8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2) + transitivePeerDependencies: + - '@types/node' + - '@vitejs/devtools' + - esbuild + - jiti + - less + - sass + - sass-embedded + - stylus + - sugarss + - terser + - tsx + - yaml + + vite-plugin-checker@0.14.5(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)): + dependencies: + '@babel/code-frame': 7.29.7 + chokidar: 5.0.0 + npm-run-path: 6.0.0 + picocolors: 1.1.1 + picomatch: 4.0.7 + proper-lockfile: 4.1.2 + tiny-invariant: 1.3.3 + vite: 8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2) + + vite-plugin-inspect@11.4.1(@nuxt/kit@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(rolldown@1.2.14)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2))))(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)): + dependencies: + ansis: 4.4.0 + error-stack-parser-es: 1.0.5 + obug: 2.2.1 + ohash: 2.0.12 + open: 11.0.4 + perfect-debounce: 2.1.0 + sirv: 3.0.2 + unplugin-utils: 0.3.2 + vite: 8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2) + vite-dev-rpc: 2.0.0(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)) + optionalDependencies: + '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(rolldown@1.2.14)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2))) + + vite-plugin-vue-tracer@1.6.0(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2))(vue@3.5.44): + dependencies: + estree-walker: 3.0.3 + exsolve: 1.1.3 + magic-string: 1.4.3 + pathe: 2.0.3 + source-map-js: 1.2.2 + vite: 8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2) + vue: 3.5.44 + + vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2): + dependencies: + lightningcss: 1.33.0 + picomatch: 4.0.7 + postcss: 8.5.30 + rolldown: 1.2.14 + tinyglobby: 0.2.17 + optionalDependencies: + esbuild: 0.28.2 + fsevents: 2.3.3 + jiti: 2.7.0 + terser: 5.51.2 + + vue-bundle-renderer@2.4.0: + dependencies: + ufo: 1.6.4 + + vue-component-type-helpers@3.3.13: {} + + vue-devtools-stub@0.1.0: {} + + vue-router@5.4.0(@vue/compiler-sfc@3.5.44)(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2))(vue@3.5.44): + dependencies: + '@vue-macros/common': 3.1.4(vue@3.5.44) + '@vue/devtools-api': 8.2.1 + ast-walker-scope: 0.10.0 + chokidar: 5.0.0 + confbox: 0.3.1 + local-pkg: 1.2.1 + magic-string: 1.4.3 + mlly: 1.8.2 + muggle-string: 0.4.1 + nostics: 1.3.0 + pathe: 2.0.3 + picomatch: 4.0.7 + scule: 1.3.0 + tinyglobby: 0.2.17 + unplugin: 3.4.0(esbuild@0.28.2)(rolldown@1.2.14)(rollup@4.64.9)(vite@8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)) + unplugin-utils: 0.3.2 + vue: 3.5.44 + optionalDependencies: + '@vue/compiler-sfc': 3.5.44 + vite: 8.3.4(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2) + transitivePeerDependencies: + - '@farmfe/core' + - '@rsbuild/core' + - '@rspack/core' + - bun-types-no-globals + - esbuild + - rolldown + - rollup + - unloader + - webpack + + vue@3.5.44: + dependencies: + '@vue/compiler-dom': 3.5.44 + '@vue/compiler-sfc': 3.5.44 + '@vue/runtime-dom': 3.5.44 + '@vue/server-renderer': 3.5.44 + '@vue/shared': 3.5.44 + + webidl-conversions@3.0.1: {} + + webpack-virtual-modules@0.6.2: {} + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + which@6.0.1: + dependencies: + isexe: 4.0.0 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.3 + string-width: 5.1.2 + strip-ansi: 7.2.0 + + wrap-ansi@9.0.2: + dependencies: + ansi-styles: 6.2.3 + string-width: 7.2.0 + strip-ansi: 7.2.0 + + ws@8.22.0: {} + + wsl-utils@1.0.1: + dependencies: + is-wsl: 3.1.1 + powershell-utils: 0.2.1 + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yallist@5.0.0: {} + + yargs-parser@22.0.0: {} + + yargs@18.2.0: + dependencies: + cliui: 9.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + string-width: 8.3.0 + y18n: 5.0.8 + yargs-parser: 22.0.0 + + youch-core@0.3.3: + dependencies: + '@poppinss/exception': 1.2.3 + error-stack-parser-es: 1.0.5 + + youch@4.1.1: + dependencies: + '@poppinss/colors': 4.1.6 + '@poppinss/dumper': 0.7.0 + '@speed-highlight/core': 1.2.24 + cookie-es: 3.1.1 + youch-core: 0.3.3 + + zip-stream@6.0.1: + dependencies: + archiver-utils: 5.0.2 + compress-commons: 6.0.2 + readable-stream: 4.8.0 diff --git a/quickstarts/nuxt/pnpm-workspace.yaml b/quickstarts/nuxt/pnpm-workspace.yaml new file mode 100644 index 0000000..69524b2 --- /dev/null +++ b/quickstarts/nuxt/pnpm-workspace.yaml @@ -0,0 +1,18 @@ +allowBuilds: + core-js: false + esbuild: true + +auditConfig: + ignoreGhsas: + # JUSTIFICATION: GHSA-86w9-cpqp-85rv β€” node-forge accepts extra nested DigestAlgorithm elements + # during RSA PKCS#1 v1.5 signature verification. No patched release exists (1.4.0 is the latest + # and is affected). Transitive via nuxt's dev tooling (`@nuxt/cli` / `nitropack` > `listhen` > + # `node-forge`), which only uses it to generate RSA keys and self-signed certificates for the + # local HTTPS dev server; it never verifies signatures. Revisit once node-forge publishes a fix. + - GHSA-86w9-cpqp-85rv + # JUSTIFICATION: GHSA-vfj7-8cjw-p6xm β€” braces stack-exhaustion DoS through deeply nested brace + # patterns. No patched release exists (3.0.3 is the latest and is affected). Transitive via + # nuxt's build tooling (`@nuxt/nitro-server` > `nitropack` > `globby` > `fast-glob` > + # `micromatch` > `braces`), which only expands glob patterns taken from the project's own config + # and filesystem at build time. Revisit once braces publishes a fix. + - GHSA-vfj7-8cjw-p6xm diff --git a/quickstarts/nuxt/scripts/prepare-dev.cjs b/quickstarts/nuxt/scripts/prepare-dev.cjs new file mode 100644 index 0000000..83648f6 --- /dev/null +++ b/quickstarts/nuxt/scripts/prepare-dev.cjs @@ -0,0 +1,73 @@ +// Copyright 2026 The ThunderID Authors +// SPDX-License-Identifier: Apache-2.0 + +const fs = require('node:fs'); +const path = require('node:path'); + +const root = path.join(__dirname, '..'); + +const PREFIX = 'NUXT_PUBLIC_THUNDERID_'; +const NATIVE_FLOW_VARS = [`${PREFIX}APPLICATION_ID`, `${PREFIX}SIGN_IN_URL`, `${PREFIX}SIGN_UP_URL`]; +const REDIRECT_FLOW_VARS = [`${PREFIX}CLIENT_ID`, 'THUNDERID_CLIENT_SECRET']; +const REDIRECT_FLOW_PLACEHOLDERS = { + [`${PREFIX}CLIENT_ID`]: 'your-client-id-here', + THUNDERID_CLIENT_SECRET: 'your-client-secret-here', +}; + +const flowArg = process.argv.find((arg) => arg.startsWith('--flow=')); +const flowExplicitlyRequested = Boolean(flowArg); +const flow = flowArg ? flowArg.slice('--flow='.length) : 'native'; + +if (flowExplicitlyRequested && flow !== 'native' && flow !== 'redirect') { + console.error(`Unknown --flow value "${flow}". Expected "native" or "redirect".`); + process.exit(1); +} + +/** + * Toggles the leading `# ` on env var lines to match the selected flow, appending + * any vars for the selected flow that aren't present in the source file yet (the + * redirect-flow vars aren't checked into `.env.example`, so switching to `redirect` + * from a fresh copy needs to add them rather than just uncomment them). + */ +function applyFlow(envContent, selectedFlow) { + const varsToEnable = selectedFlow === 'redirect' ? REDIRECT_FLOW_VARS : NATIVE_FLOW_VARS; + const varsToDisable = selectedFlow === 'redirect' ? NATIVE_FLOW_VARS : REDIRECT_FLOW_VARS; + const found = new Set(); + + const lines = envContent.split('\n').map((line) => { + const enable = varsToEnable.find((key) => line.replace(/^#\s*/, '').startsWith(`${key}=`)); + if (enable) { + found.add(enable); + return line.replace(/^#\s*/, ''); + } + + const disable = varsToDisable.find((key) => line.startsWith(`${key}=`)); + if (disable) return `# ${line}`; + + return line; + }); + + const missing = varsToEnable.filter((key) => !found.has(key)); + if (missing.length > 0) { + lines.push('', `# ── ${selectedFlow} flow ─────────────────────────────────────────────────`); + for (const key of missing) lines.push(`${key}=${REDIRECT_FLOW_PLACEHOLDERS[key] ?? ''}`); + } + + return lines.join('\n'); +} + +const envExample = path.join(root, '.env.example'); +const envTarget = path.join(root, '.env'); + +// Only explicit `--flow=` invocations are allowed to (re)write an existing +// .env β€” a plain `npm run prepare-dev` (e.g. from .stackblitzrc's +// startCommand) stays a safe, idempotent copy-if-missing. +if (fs.existsSync(envExample) && (flowExplicitlyRequested || !fs.existsSync(envTarget))) { + const envSource = fs.existsSync(envTarget) ? envTarget : envExample; + const envContent = applyFlow(fs.readFileSync(envSource, 'utf8'), flow) + // Blank placeholder values (e.g. `your-client-id-here`, the sample base URL) + // so the copied .env still trips the app's missing-env-var check until real + // values are filled in. + .replace(/^([A-Z0-9_]+)=(your-\S*|generate-with-\S*|https:\/\/localhost:8090)$/gm, '$1='); + fs.writeFileSync(envTarget, envContent); +} diff --git a/quickstarts/react/.env.example b/quickstarts/react/.env.example new file mode 100644 index 0000000..e38f402 --- /dev/null +++ b/quickstarts/react/.env.example @@ -0,0 +1,5 @@ +# Base URL of your ThunderID deployment. ex: https://localhost:8090 +VITE_THUNDERID_BASE_URL=https://localhost:8090 + +# OAuth2 Client ID for this app. ThunderID Console -> your application -> Overview. +VITE_THUNDERID_CLIENT_ID=your-client-id-here diff --git a/quickstarts/react/.gitignore b/quickstarts/react/.gitignore new file mode 100644 index 0000000..9c97bbd --- /dev/null +++ b/quickstarts/react/.gitignore @@ -0,0 +1,3 @@ +node_modules +dist +.env diff --git a/quickstarts/react/.stackblitzrc b/quickstarts/react/.stackblitzrc new file mode 100644 index 0000000..5f0a200 --- /dev/null +++ b/quickstarts/react/.stackblitzrc @@ -0,0 +1,4 @@ +{ + "installDependencies": false, + "startCommand": "npm run prepare-dev && npm install && npm run dev" +} diff --git a/quickstarts/react/README.md b/quickstarts/react/README.md new file mode 100644 index 0000000..2a822bb --- /dev/null +++ b/quickstarts/react/README.md @@ -0,0 +1,36 @@ +# ThunderID React Quickstart + +Open in StackBlitz + +A minimal React + Vite application demonstrating ThunderID authentication with OAuth 2.0, PKCE, and JWT support using the `@thunderid/react` SDK. + +## Prerequisites + +- Node.js 18+ +- pnpm +- A ThunderID application + +## Setup + +1. Copy the environment template: + ```sh + cp .env.example .env + ``` + +2. Fill in your ThunderID credentials in `.env`: + ``` + VITE_THUNDERID_CLIENT_ID= + VITE_THUNDERID_BASE_URL=https://your-thunderid-instance + ``` + +3. Install dependencies and start the dev server: + ```sh + pnpm install + pnpm dev + ``` + +The app will be available at `http://localhost:5173`. + +## Docs + +Full SDK reference: [thunderid.dev/docs](https://thunderid.dev/docs) diff --git a/quickstarts/react/index.html b/quickstarts/react/index.html new file mode 100644 index 0000000..562e0aa --- /dev/null +++ b/quickstarts/react/index.html @@ -0,0 +1,13 @@ + + + + + + + ThunderID React Quickstart + + +
    + + + diff --git a/quickstarts/react/package.json b/quickstarts/react/package.json new file mode 100644 index 0000000..f8e227e --- /dev/null +++ b/quickstarts/react/package.json @@ -0,0 +1,23 @@ +{ + "name": "@thunderid/react-quickstart", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "prepare-dev": "node scripts/prepare-dev.cjs", + "dev": "vite", + "build": "vite build", + "preview": "vite preview" + }, + "dependencies": { + "@thunderid/react": "1.4.0", + "@thunderid/react-router": "1.3.0", + "react": "^19.2.3", + "react-dom": "^19.2.3", + "react-router": "^7.18.2" + }, + "devDependencies": { + "@vitejs/plugin-react": "^4.5.2", + "vite": "^6.3.5" + } +} diff --git a/quickstarts/react/pnpm-lock.yaml b/quickstarts/react/pnpm-lock.yaml new file mode 100644 index 0000000..b19b918 --- /dev/null +++ b/quickstarts/react/pnpm-lock.yaml @@ -0,0 +1,1647 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@thunderid/react': + specifier: 1.4.0 + version: 1.4.0(@types/react@19.3.0)(react-dom@19.3.1(react@19.3.1))(react@19.3.1) + '@thunderid/react-router': + specifier: 1.3.0 + version: 1.3.0(@thunderid/browser@1.3.0)(@thunderid/react@1.4.0(@types/react@19.3.0)(react-dom@19.3.1(react@19.3.1))(react@19.3.1))(react-router@7.18.4(react-dom@19.3.1(react@19.3.1))(react@19.3.1))(react@19.3.1) + react: + specifier: ^19.2.3 + version: 19.3.1 + react-dom: + specifier: ^19.2.3 + version: 19.3.1(react@19.3.1) + react-router: + specifier: ^7.18.2 + version: 7.18.4(react-dom@19.3.1(react@19.3.1))(react@19.3.1) + devDependencies: + '@vitejs/plugin-react': + specifier: ^4.5.2 + version: 4.7.0(vite@6.4.4) + vite: + specifier: ^6.3.5 + version: 6.4.4 + +packages: + + '@babel/code-frame@7.29.7': + resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.29.7': + resolution: {integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.29.7': + resolution: {integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.29.8': + resolution: {integrity: sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.29.7': + resolution: {integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-globals@7.29.7': + resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.29.7': + resolution: {integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.29.7': + resolution: {integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-plugin-utils@7.29.7': + resolution: {integrity: sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.29.7': + resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.29.7': + resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.29.7': + resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.29.10': + resolution: {integrity: sha512-EMCx3AGZ3WfAl6ht7AyQoPm2Lh+BGYEMdc4Q6Hf7uSCDOZFuLq44qNwL+iaim8VlyYhRAo4X43+weadK8ZB4Yg==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.29.9': + resolution: {integrity: sha512-CjXrNHTnvqBVqHgdBysY3vk2T8tpJHb5/RMeHJBTyVa9xgugCB0CJTx/3oO8RV2QRQP391RWpB7D6hLjm8V9uA==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-transform-react-jsx-self@7.29.7': + resolution: {integrity: sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.29.7': + resolution: {integrity: sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime@7.29.10': + resolution: {integrity: sha512-NpugTzbKgGrNe45Ui32cN8vCFFMxVtP/9rtfwv0nP5FRDAjvYBxJcLVpYA9mr1jxP6cnIT7x9LUzuDTbWYYNRA==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.29.7': + resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.29.10': + resolution: {integrity: sha512-B3lYAs2nkKskbgQ1nfy8Ma9ao9Q1rntTAQHrzzyDuj+TSO+X3le6PfWwqDvodsb+OumE10eMFfuMCTQSQ5iuIQ==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.29.8': + resolution: {integrity: sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==} + engines: {node: '>=6.9.0'} + + '@emotion/babel-plugin@11.13.5': + resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==} + + '@emotion/cache@11.14.0': + resolution: {integrity: sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==} + + '@emotion/css@11.13.5': + resolution: {integrity: sha512-wQdD0Xhkn3Qy2VNcIzbLP9MR8TafI0MJb7BEAXKp+w4+XqErksWR4OXomuDzPsN4InLdGhVe6EYcn2ZIUCpB8w==} + + '@emotion/hash@0.9.2': + resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} + + '@emotion/memoize@0.9.0': + resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==} + + '@emotion/serialize@1.3.3': + resolution: {integrity: sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==} + + '@emotion/sheet@1.4.0': + resolution: {integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==} + + '@emotion/unitless@0.10.0': + resolution: {integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==} + + '@emotion/utils@1.4.2': + resolution: {integrity: sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==} + + '@emotion/weak-memoize@0.4.0': + resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} + + '@esbuild/aix-ppc64@0.25.12': + resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.25.12': + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.25.12': + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.25.12': + resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.25.12': + resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.12': + resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.25.12': + resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.12': + resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.25.12': + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.25.12': + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.25.12': + resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.25.12': + resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.25.12': + resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.25.12': + resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.12': + resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.25.12': + resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.25.12': + resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.12': + resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.12': + resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.12': + resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.12': + resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.25.12': + resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.25.12': + resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.25.12': + resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.25.12': + resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.25.12': + resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@floating-ui/core@1.8.0': + resolution: {integrity: sha512-0CIZ5itps/8x7BG8dEIhs53BvCUH2PCoogtakwRTut+Arm58sJooJ0AuZhLw2HJYIR5cMLNPBSS728sPho2khQ==} + + '@floating-ui/dom@1.8.0': + resolution: {integrity: sha512-yXSrzeHZBTZadLOlfyhCkJHNeLJnHRnRInwdZ40L7ZiaAtrBwoYlsDrX3v5zB1Utk7CLfzcOVnVVWoXEky7Ceg==} + + '@floating-ui/react-dom@2.1.9': + resolution: {integrity: sha512-JDjEFGCpImxDCA7JJKviA0M9+RtmJdj0m/NVU5IMgBK+AmZouAQQ7/+2GLH0GXXY0YMw9oXPB8hKdbPYg5QLYg==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/react@0.27.12': + resolution: {integrity: sha512-kKlWNrpIQxF1B/a2MZvE0/uyKby4960yjO91W7nVyNKmmfNi62xU9HCjL1M1eWzx/LFj/VPSwJVbwQk9Pq/68A==} + peerDependencies: + react: '>=17.0.0' + react-dom: '>=17.0.0' + + '@floating-ui/utils@0.2.12': + resolution: {integrity: sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww==} + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.6.0': + resolution: {integrity: sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@napi-rs/lzma-linux-x64-gnu@1.5.1': + resolution: {integrity: sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ==} + engines: {node: ^22.20 || ^24.12 || >=25} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rolldown/pluginutils@1.0.0-beta.27': + resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==} + + '@rollup/rollup-android-arm-eabi@4.64.9': + resolution: {integrity: sha512-qJmhckvOleXp8R+BaXiVW/S34/3M7pvN17/QcG90A74BDaSvKv8ffY+GYG+a/xU0vEoITzdMSiM7o9HZSQWbfA==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.64.9': + resolution: {integrity: sha512-dqQgds39BNWGB2ughJ6n2LTQFXk8RAOwnXj6m387OHpygfD93QRS1ODIfpiWyAa9gsFB9l34pSqeLmA0Xk/VBw==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.64.9': + resolution: {integrity: sha512-scrMx4SGikOSbWknLmPD0v6OeJ1Wih3kyRLdNZnlVbBeKVWp1nRTVcpM0IxDJdc3u8UjesPHTmnX649u8cQpBw==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.64.9': + resolution: {integrity: sha512-fkwi2OQR+QWoViRFt08Bsca6G0e9pk/4z+JgmqHq6jSRTT0LtI27KRVK8bu++6L/CBtQ3OZePbqC3bcrwGzTqQ==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.64.9': + resolution: {integrity: sha512-8Apr0Khn0r2MUsDtcOMbp85fDdXsX/E+iLhO17WUjG24m3O8ChArqI0isI7CAdj9Ouq177PHtVtEUpMNE1C4Gw==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.64.9': + resolution: {integrity: sha512-H+upy4DhBcBZlUsCAMyr8wR0Dg9kj8sGloVZdZ7va2heJM/5jnROxI47dtXseJjlD/VoQe6MrXhY3b5ikOq/Vw==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.64.9': + resolution: {integrity: sha512-b50NS9TbAEK/b16vBoKrkeNwy+HvGBXmtBbzX4wcodWOh9dQZvRTN9rUyElIXa36QnwXhU9PAVVkZpqRzSi2Tg==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm-musleabihf@4.64.9': + resolution: {integrity: sha512-SdqcudB/FzjLESsRMgXhV+FXGtf6usxXwlMoRW7D/XS3f9CZ4T4wycRBu2h9bVl2AOaPpunoA8ftAM/MF4altQ==} + cpu: [arm] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-arm64-gnu@4.64.9': + resolution: {integrity: sha512-dg19FFRoovN+KZ+gMHBAq4Do8PgQmBcxpuhux57OuiR0QLavfn8uPBY8CP+UO50bO+xf0tK0GlqI/jld++5E6g==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm64-musl@4.64.9': + resolution: {integrity: sha512-+jyv5ofGmpAvtrzLjSr/e4syskeikEp5L82bUzB76auwOgK1VNVwZV/F2g1Pes9bhTznbejOefAqPglHSKYmTA==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-loong64-gnu@4.64.9': + resolution: {integrity: sha512-MKFXxqmkzCbtNvx/vjiJdss44eRtVabhCtDWcCFD9NHGwP+YkqnM/slnEsv/3fsoq9ukTtudraAjGhptrUPCVg==} + cpu: [loong64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-loong64-musl@4.64.9': + resolution: {integrity: sha512-lhARcOT6n7Ni9hpQRq8LZjbuoW+G/GXaW4Jfhx2MbmjnCj9XxLMRTceJIMpiMLQVWm+qxe7oq1sYvlIGOAW34Q==} + cpu: [loong64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-ppc64-gnu@4.64.9': + resolution: {integrity: sha512-oORQzGxZ1oHghJwLdwc8Ni0SY9otILAeXsWdiImTF4F5HkWJUwh5s/269PF5tYILNC1z/3RwFsrgcHPguBcb0g==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-ppc64-musl@4.64.9': + resolution: {integrity: sha512-J2JQHQt7oR1uutd2OSwbV2Qpb2LI5gggPolbkUwDe7vn/0dnduZ0w6EIbGnZUAw7uIKaMgfVylcH6V+Aov8kRA==} + cpu: [ppc64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-riscv64-gnu@4.64.9': + resolution: {integrity: sha512-bWaKLrfzeQ9mOzJJxXbPgw2RH6VAaTJrb/60Tqf7YSMxubG8780Hzm7Us+D6qVW8QRGJYl4VUvVXxnRB0o9zvQ==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-riscv64-musl@4.64.9': + resolution: {integrity: sha512-TFJyaCB9NsvSyvVGQgTSRD9XgxsAq99ivDDkt9KAySlrNW5Obsd1kQpvoCvBCOLq+JlJTjmtroLH0wp8M8mEsA==} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-s390x-gnu@4.64.9': + resolution: {integrity: sha512-DvmOM5xz/wDnUJFVjqP32ahalxn7BDuvO25bpuFOrb50AIFCCcFPN4lWWUDD1c8Ddv9sMO9SXyqtOet8G8u9cQ==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-gnu@4.64.9': + resolution: {integrity: sha512-aFzokHK3yE00mzAvKm/PY76OsOOTjvoTGE82Vp89iBDyD2wUBlV4ZsR2tWkRECTEFk6TC4Yc3zaEWjPqq1vstQ==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-musl@4.64.9': + resolution: {integrity: sha512-t/yMdeaaQUuNNpmT7taBmH2VvHzgT4YA/IaKVE3qVr4PYQemn/kmJkL4uG4UvTLcWXQd0MSoOa/3URYSWGmUEg==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rollup/rollup-openbsd-x64@4.64.9': + resolution: {integrity: sha512-4dnxKQ8GHARyjqAU87q5UWhywZTpIbR2VWhtACdC37GD1SGszmvb3TaBFVA4n+fnDHSKMut4ZJ63hVFwgnxVtg==} + cpu: [x64] + os: [openbsd] + + '@rollup/rollup-openharmony-arm64@4.64.9': + resolution: {integrity: sha512-1qdQj6IrNoR0xFvrCQHmhBXe9HMbBGNTFi+3n4jKMt2rTx4k0aeAdraZU4WDOMfL9tAwS8/TRSuquvNuPQ+Gpw==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.64.9': + resolution: {integrity: sha512-yc1GSEHIYhKGN5WSaJc+eMy8bZvzcvAmflEgFh8L3xcy8dYxGmfrudyBnBFde9f6JzOa1kFqocF8BHaWybjQoA==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.64.9': + resolution: {integrity: sha512-VzHGvosAkLIzrwqvSgJBPDmGFTF/yE8OtMT4H5z8pM1NA0NiPpvTYnUh+9xPd+d5oy/wqF317FmJ1I8Kk8pp0Q==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.64.9': + resolution: {integrity: sha512-FB77txy1PiAcJgG72nOLA6R0S3PRZahs8Spx0z2yseDUkoMmJcrQghiebJ2JHZ74cCOVlX/MYd4dUbJtJJ8fow==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.64.9': + resolution: {integrity: sha512-IoIgQLpK1DbOcQf1vX+i5oe5LXypsCVb1j/mU6BLAbOGmXH4E+j4kMfgZRwPYUohVBurNyVMgIKVM5dR6xA0kA==} + cpu: [x64] + os: [win32] + + '@thunderid/browser@1.3.0': + resolution: {integrity: sha512-O6DHlUyVFfBaNcJDEXACLU4NJMrNjDlqAuzesvJ+8a0Gl5g8WFK53rpx027e/rWICG0vcGe2UVZuhvZq5Z511A==} + + '@thunderid/javascript@1.4.0': + resolution: {integrity: sha512-qHfIFzXOQTN1nhuBT91Tr8bLPvfyEDa7gUQSL7GNcJkcyyKfJ77meIwr91lCme0ySFUnTeKl0Bk+R8iIJiKXBw==} + + '@thunderid/react-router@1.3.0': + resolution: {integrity: sha512-eDrOG7xBdkolS9VV5sbGKrKwplppIyivryOYphLa9gwJ128Rynrg2SKbOj8oHo1CVSvRMihgFoYyQkzbNACtTg==} + peerDependencies: + '@thunderid/browser': '>=0.1.0' + '@thunderid/react': '>=0.1.0' + react: '>=16.8.0' + react-router: '>=6.30.1' + + '@thunderid/react@1.4.0': + resolution: {integrity: sha512-MRSnxgAYCnQKXLaAcWd4oiX7H0RfMVtQr8eeDD8aA+TbJYYt2uSIuSEAgOad7iMbVL+xw174n/S/lw6ekKLBqg==} + peerDependencies: + '@types/react': '>=16.8.0' + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.28.0': + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} + + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} + + '@types/parse-json@4.0.2': + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + + '@types/react@19.3.0': + resolution: {integrity: sha512-N0rFCuH9YoxG9/m61l9MfpJKfmLOVU0em7ipIz6TRgSSkvReLB9vL85GB+yr8Bs5leqpvg96JSwF4ZS1s4viQg==} + + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + + '@vitejs/plugin-react@4.7.0': + resolution: {integrity: sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + + babel-plugin-macros@3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + base64url@3.0.1: + resolution: {integrity: sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==} + engines: {node: '>=6.0.0'} + + baseline-browser-mapping@2.11.29: + resolution: {integrity: sha512-YeesxhUmR4h5y5V8KF8iBCqJb8YFrBJ++XBTeGcWIaQOYXGN19JM0FoiOjAhwuDoln8owMgXcWBmgHtYSkky2w==} + engines: {node: '>=6.0.0'} + hasBin: true + + browserslist@4.29.3: + resolution: {integrity: sha512-1R4kiYKXGViqEN0CnoDrXc1StD9niAwu+j2dukWzrD4bJgsD4lDmEp0CRbc6E/vYJIfTHwPmwyaKtVSudICdPA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + caniuse-lite@1.0.30001816: + resolution: {integrity: sha512-+8Yx7BXCoqk6IF8yTicjfUR6D/ldJzdlsodlEOiOSPmhK844WIgk67/zIQaGAOxNkZyyvBlrRFnLvqKIoqbAFw==} + + convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie@1.1.1: + resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} + engines: {node: '>=18'} + + core-js@3.42.0: + resolution: {integrity: sha512-Sz4PP4ZA+Rq4II21qkNqOEDTDrCvcANId3xpIgB34NDkWc3UduWj2dqEtN9yZIq8Dk3HyPI33x9sqqU5C8sr0g==} + + cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + dompurify@3.4.13: + resolution: {integrity: sha512-2vmYIoqjze2d+kakP8S/nS5shfsl587kzwEjcGlTdiksUVgFHnFCsLYDVj/JNqJVOQZGSYBTmuycv0PodwmnMQ==} + + electron-to-chromium@1.5.459: + resolution: {integrity: sha512-4SC9HHSFjO/liAhifpdOL5hG9b4BP7/5G3y3UPZVO8trlAXr1CaUEEJL0gWK3kOcYcZrOA5rkwG45Gra/lTIgg==} + + error-ex@1.3.4: + resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + esbuild@0.25.12: + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + fast-sha256@1.3.0: + resolution: {integrity: sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ==} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + find-root@1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + hasown@2.0.4: + resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} + engines: {node: '>= 0.4'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-core-module@2.17.0: + resolution: {integrity: sha512-J/vG0zBCbIKOQFfufSwyXdMrsohyJIUNkrnmo6WZGzoM7tr/lsbfW5b2BvisL6zsyMzK9UxV9L6c7AoFbyXHOA==} + engines: {node: '>= 0.4'} + + jose@6.2.3: + resolution: {integrity: sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.20: + resolution: {integrity: sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + node-releases@2.0.59: + resolution: {integrity: sha512-5qr2okC4ItAI0hG5SaV0HoYMpnM/Y6+Oqr7AmPYy/2uEoGvS+GbSKLeRxSS1uAdu59yz0ouzcuXievSgg///WA==} + engines: {node: '>=18'} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@4.0.7: + resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==} + engines: {node: '>=12'} + + postcss@8.5.30: + resolution: {integrity: sha512-zkd+e9S1AQHhmaBKye9zlFHWjOwVgqXl1q3ECYy8561K7qxR2cREf/STLskulBFd78k6AOFeA+ff1TtEzk9bAA==} + engines: {node: ^10 || ^12 || >=14} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + react-dom@19.3.1: + resolution: {integrity: sha512-Y0bARz53lhEC1NMCASs0/j+faB/zqt3R8hpvg1e8+61ZVJ4UL0UdC4cBbXfZMcIuhrfgeILTLe+ZeBCavQPtKQ==} + peerDependencies: + react: ^19.3.1 + + react-refresh@0.17.0: + resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} + engines: {node: '>=0.10.0'} + + react-router@7.18.4: + resolution: {integrity: sha512-PUPQcMhMGRAslLcvtlPz/kmzBEWPhLdgLFrL7pLNepBL6dX0lWj4WD2cUYVgYCuT3jxvghYFg81cDTj44DhetQ==} + engines: {node: '>=20.0.0'} + peerDependencies: + react: '>=18' + react-dom: '>=18' + peerDependenciesMeta: + react-dom: + optional: true + + react@19.3.1: + resolution: {integrity: sha512-QNhWdt7nrgVWWQG58QuGsAR3jv3Hbe4mb4vz7w2csnHavciZJgda1CPNaldF6eVxv90ud3jUXpKlHL69gO38yw==} + engines: {node: '>=0.10.0'} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve@1.22.13: + resolution: {integrity: sha512-Dj/cW9zBV2aRj6XzCxuGIs3ESZKv02jixne3q6jFZYZ3/Tg09gHHviSMDL4kObh9pqSahdRHEnDoaP2gn8YLhA==} + engines: {node: '>= 0.4'} + hasBin: true + + rollup@4.64.9: + resolution: {integrity: sha512-mnPSQINChN7PpT+a5CI0/+87hm/+6zxSKBK1XonrzQ0zFnglaTjhkTP2Br4yNCTcLHUEvrAfZffH57jGf+8xBQ==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + scheduler@0.28.0: + resolution: {integrity: sha512-juorfCmIkIw8tT+p5BXSm6PJjQF/ycEYmKyzURCIt/RaZIhL+PulbQ9Yu2z1HdOJDdqDTlxA1+xKBmHXJsczAw==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + set-cookie-parser@2.7.2: + resolution: {integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==} + + source-map-js@1.2.2: + resolution: {integrity: sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==} + engines: {node: '>=0.10.0'} + + source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + + stream-browserify@3.0.0: + resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + stylis@4.2.0: + resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + tabbable@6.5.0: + resolution: {integrity: sha512-wieBHXygIm7OyQOu5hQlkk62/WyCFYGlWg7L6/ZCUZwx0o398Zkn4pVmMyfYhfMG8kGrj/Krt8eIk6UKC6VzwA==} + + tinyglobby@0.2.17: + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} + engines: {node: '>=12.0.0'} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + update-browserslist-db@1.3.4: + resolution: {integrity: sha512-t8wonIOdQyOjtPd2VktlBu6QjTVTks6v8bSi7kd0r2Vll8TK1JYDZtRRdbmCHOAMphkZgrzK+L+vXK4pyZ8t4A==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + vite@6.4.4: + resolution: {integrity: sha512-xGjU/SyjeNyb0E4KxXBvYz/1C+3JXuujvf2hXNOtnlcE+58o5ajd9N2/n2VhkiJvpCP2qQasnUpx5PXNeI+p1Q==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yaml@1.10.3: + resolution: {integrity: sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==} + engines: {node: '>= 6'} + +snapshots: + + '@babel/code-frame@7.29.7': + dependencies: + '@babel/helper-validator-identifier': 7.29.7 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.29.7': {} + + '@babel/core@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/generator': 7.29.8 + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) + '@babel/helpers': 7.29.10 + '@babel/parser': 7.29.9 + '@babel/template': 7.29.7 + '@babel/traverse': 7.29.10 + '@babel/types': 7.29.8 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.29.8': + dependencies: + '@babel/parser': 7.29.9 + '@babel/types': 7.29.8 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/helper-compilation-targets@7.29.7': + dependencies: + '@babel/compat-data': 7.29.7 + '@babel/helper-validator-option': 7.29.7 + browserslist: 4.29.3 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-globals@7.29.7': {} + + '@babel/helper-module-imports@7.29.7': + dependencies: + '@babel/traverse': 7.29.10 + '@babel/types': 7.29.8 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-module-imports': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + '@babel/traverse': 7.29.10 + transitivePeerDependencies: + - supports-color + + '@babel/helper-plugin-utils@7.29.7': {} + + '@babel/helper-string-parser@7.29.7': {} + + '@babel/helper-validator-identifier@7.29.7': {} + + '@babel/helper-validator-option@7.29.7': {} + + '@babel/helpers@7.29.10': + dependencies: + '@babel/template': 7.29.7 + '@babel/types': 7.29.8 + + '@babel/parser@7.29.9': + dependencies: + '@babel/types': 7.29.8 + + '@babel/plugin-transform-react-jsx-self@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-react-jsx-source@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/runtime@7.29.10': {} + + '@babel/template@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/parser': 7.29.9 + '@babel/types': 7.29.8 + + '@babel/traverse@7.29.10': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/generator': 7.29.8 + '@babel/helper-globals': 7.29.7 + '@babel/parser': 7.29.9 + '@babel/template': 7.29.7 + '@babel/types': 7.29.8 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.29.8': + dependencies: + '@babel/helper-string-parser': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + + '@emotion/babel-plugin@11.13.5': + dependencies: + '@babel/helper-module-imports': 7.29.7 + '@babel/runtime': 7.29.10 + '@emotion/hash': 0.9.2 + '@emotion/memoize': 0.9.0 + '@emotion/serialize': 1.3.3 + babel-plugin-macros: 3.1.0 + convert-source-map: 1.9.0 + escape-string-regexp: 4.0.0 + find-root: 1.1.0 + source-map: 0.5.7 + stylis: 4.2.0 + transitivePeerDependencies: + - supports-color + + '@emotion/cache@11.14.0': + dependencies: + '@emotion/memoize': 0.9.0 + '@emotion/sheet': 1.4.0 + '@emotion/utils': 1.4.2 + '@emotion/weak-memoize': 0.4.0 + stylis: 4.2.0 + + '@emotion/css@11.13.5': + dependencies: + '@emotion/babel-plugin': 11.13.5 + '@emotion/cache': 11.14.0 + '@emotion/serialize': 1.3.3 + '@emotion/sheet': 1.4.0 + '@emotion/utils': 1.4.2 + transitivePeerDependencies: + - supports-color + + '@emotion/hash@0.9.2': {} + + '@emotion/memoize@0.9.0': {} + + '@emotion/serialize@1.3.3': + dependencies: + '@emotion/hash': 0.9.2 + '@emotion/memoize': 0.9.0 + '@emotion/unitless': 0.10.0 + '@emotion/utils': 1.4.2 + csstype: 3.2.3 + + '@emotion/sheet@1.4.0': {} + + '@emotion/unitless@0.10.0': {} + + '@emotion/utils@1.4.2': {} + + '@emotion/weak-memoize@0.4.0': {} + + '@esbuild/aix-ppc64@0.25.12': + optional: true + + '@esbuild/android-arm64@0.25.12': + optional: true + + '@esbuild/android-arm@0.25.12': + optional: true + + '@esbuild/android-x64@0.25.12': + optional: true + + '@esbuild/darwin-arm64@0.25.12': + optional: true + + '@esbuild/darwin-x64@0.25.12': + optional: true + + '@esbuild/freebsd-arm64@0.25.12': + optional: true + + '@esbuild/freebsd-x64@0.25.12': + optional: true + + '@esbuild/linux-arm64@0.25.12': + optional: true + + '@esbuild/linux-arm@0.25.12': + optional: true + + '@esbuild/linux-ia32@0.25.12': + optional: true + + '@esbuild/linux-loong64@0.25.12': + optional: true + + '@esbuild/linux-mips64el@0.25.12': + optional: true + + '@esbuild/linux-ppc64@0.25.12': + optional: true + + '@esbuild/linux-riscv64@0.25.12': + optional: true + + '@esbuild/linux-s390x@0.25.12': + optional: true + + '@esbuild/linux-x64@0.25.12': + optional: true + + '@esbuild/netbsd-arm64@0.25.12': + optional: true + + '@esbuild/netbsd-x64@0.25.12': + optional: true + + '@esbuild/openbsd-arm64@0.25.12': + optional: true + + '@esbuild/openbsd-x64@0.25.12': + optional: true + + '@esbuild/openharmony-arm64@0.25.12': + optional: true + + '@esbuild/sunos-x64@0.25.12': + optional: true + + '@esbuild/win32-arm64@0.25.12': + optional: true + + '@esbuild/win32-ia32@0.25.12': + optional: true + + '@esbuild/win32-x64@0.25.12': + optional: true + + '@floating-ui/core@1.8.0': + dependencies: + '@floating-ui/utils': 0.2.12 + + '@floating-ui/dom@1.8.0': + dependencies: + '@floating-ui/core': 1.8.0 + '@floating-ui/utils': 0.2.12 + + '@floating-ui/react-dom@2.1.9(react-dom@19.3.1(react@19.3.1))(react@19.3.1)': + dependencies: + '@floating-ui/dom': 1.8.0 + react: 19.3.1 + react-dom: 19.3.1(react@19.3.1) + + '@floating-ui/react@0.27.12(react-dom@19.3.1(react@19.3.1))(react@19.3.1)': + dependencies: + '@floating-ui/react-dom': 2.1.9(react-dom@19.3.1(react@19.3.1))(react@19.3.1) + '@floating-ui/utils': 0.2.12 + react: 19.3.1 + react-dom: 19.3.1(react@19.3.1) + tabbable: 6.5.0 + + '@floating-ui/utils@0.2.12': {} + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.6.0 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.6.0': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.6.0 + + '@napi-rs/lzma-linux-x64-gnu@1.5.1': + optional: true + + '@rolldown/pluginutils@1.0.0-beta.27': {} + + '@rollup/rollup-android-arm-eabi@4.64.9': + optional: true + + '@rollup/rollup-android-arm64@4.64.9': + optional: true + + '@rollup/rollup-darwin-arm64@4.64.9': + optional: true + + '@rollup/rollup-darwin-x64@4.64.9': + optional: true + + '@rollup/rollup-freebsd-arm64@4.64.9': + optional: true + + '@rollup/rollup-freebsd-x64@4.64.9': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.64.9': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.64.9': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.64.9': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.64.9': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.64.9': + optional: true + + '@rollup/rollup-linux-loong64-musl@4.64.9': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.64.9': + optional: true + + '@rollup/rollup-linux-ppc64-musl@4.64.9': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.64.9': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.64.9': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.64.9': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.64.9': + optional: true + + '@rollup/rollup-linux-x64-musl@4.64.9': + optional: true + + '@rollup/rollup-openbsd-x64@4.64.9': + optional: true + + '@rollup/rollup-openharmony-arm64@4.64.9': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.64.9': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.64.9': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.64.9': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.64.9': + optional: true + + '@thunderid/browser@1.3.0': + dependencies: + '@thunderid/javascript': 1.4.0 + base64url: 3.0.1 + buffer: 6.0.3 + core-js: 3.42.0 + fast-sha256: 1.3.0 + jose: 6.2.3 + process: 0.11.10 + randombytes: 2.1.0 + stream-browserify: 3.0.0 + tslib: 2.8.1 + + '@thunderid/javascript@1.4.0': + dependencies: + jose: 6.2.3 + tslib: 2.8.1 + + '@thunderid/react-router@1.3.0(@thunderid/browser@1.3.0)(@thunderid/react@1.4.0(@types/react@19.3.0)(react-dom@19.3.1(react@19.3.1))(react@19.3.1))(react-router@7.18.4(react-dom@19.3.1(react@19.3.1))(react@19.3.1))(react@19.3.1)': + dependencies: + '@thunderid/browser': 1.3.0 + '@thunderid/react': 1.4.0(@types/react@19.3.0)(react-dom@19.3.1(react@19.3.1))(react@19.3.1) + react: 19.3.1 + react-router: 7.18.4(react-dom@19.3.1(react@19.3.1))(react@19.3.1) + tslib: 2.8.1 + + '@thunderid/react@1.4.0(@types/react@19.3.0)(react-dom@19.3.1(react@19.3.1))(react@19.3.1)': + dependencies: + '@emotion/css': 11.13.5 + '@floating-ui/react': 0.27.12(react-dom@19.3.1(react@19.3.1))(react@19.3.1) + '@thunderid/browser': 1.3.0 + '@types/react': 19.3.0 + dompurify: 3.4.13 + react: 19.3.1 + react-dom: 19.3.1(react@19.3.1) + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.29.9 + '@babel/types': 7.29.8 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.28.0 + + '@types/babel__generator@7.27.0': + dependencies: + '@babel/types': 7.29.8 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.29.9 + '@babel/types': 7.29.8 + + '@types/babel__traverse@7.28.0': + dependencies: + '@babel/types': 7.29.8 + + '@types/estree@1.0.9': {} + + '@types/parse-json@4.0.2': {} + + '@types/react@19.3.0': + dependencies: + csstype: 3.2.3 + + '@types/trusted-types@2.0.7': + optional: true + + '@vitejs/plugin-react@4.7.0(vite@6.4.4)': + dependencies: + '@babel/core': 7.29.7 + '@babel/plugin-transform-react-jsx-self': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-react-jsx-source': 7.29.7(@babel/core@7.29.7) + '@rolldown/pluginutils': 1.0.0-beta.27 + '@types/babel__core': 7.20.5 + react-refresh: 0.17.0 + vite: 6.4.4 + transitivePeerDependencies: + - supports-color + + babel-plugin-macros@3.1.0: + dependencies: + '@babel/runtime': 7.29.10 + cosmiconfig: 7.1.0 + resolve: 1.22.13 + + base64-js@1.5.1: {} + + base64url@3.0.1: {} + + baseline-browser-mapping@2.11.29: {} + + browserslist@4.29.3: + dependencies: + baseline-browser-mapping: 2.11.29 + caniuse-lite: 1.0.30001816 + electron-to-chromium: 1.5.459 + node-releases: 2.0.59 + update-browserslist-db: 1.3.4(browserslist@4.29.3) + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + callsites@3.1.0: {} + + caniuse-lite@1.0.30001816: {} + + convert-source-map@1.9.0: {} + + convert-source-map@2.0.0: {} + + cookie@1.1.1: {} + + core-js@3.42.0: {} + + cosmiconfig@7.1.0: + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.1 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.3 + + csstype@3.2.3: {} + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + dompurify@3.4.13: + optionalDependencies: + '@types/trusted-types': 2.0.7 + + electron-to-chromium@1.5.459: {} + + error-ex@1.3.4: + dependencies: + is-arrayish: 0.2.1 + + es-errors@1.3.0: {} + + esbuild@0.25.12: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.12 + '@esbuild/android-arm': 0.25.12 + '@esbuild/android-arm64': 0.25.12 + '@esbuild/android-x64': 0.25.12 + '@esbuild/darwin-arm64': 0.25.12 + '@esbuild/darwin-x64': 0.25.12 + '@esbuild/freebsd-arm64': 0.25.12 + '@esbuild/freebsd-x64': 0.25.12 + '@esbuild/linux-arm': 0.25.12 + '@esbuild/linux-arm64': 0.25.12 + '@esbuild/linux-ia32': 0.25.12 + '@esbuild/linux-loong64': 0.25.12 + '@esbuild/linux-mips64el': 0.25.12 + '@esbuild/linux-ppc64': 0.25.12 + '@esbuild/linux-riscv64': 0.25.12 + '@esbuild/linux-s390x': 0.25.12 + '@esbuild/linux-x64': 0.25.12 + '@esbuild/netbsd-arm64': 0.25.12 + '@esbuild/netbsd-x64': 0.25.12 + '@esbuild/openbsd-arm64': 0.25.12 + '@esbuild/openbsd-x64': 0.25.12 + '@esbuild/openharmony-arm64': 0.25.12 + '@esbuild/sunos-x64': 0.25.12 + '@esbuild/win32-arm64': 0.25.12 + '@esbuild/win32-ia32': 0.25.12 + '@esbuild/win32-x64': 0.25.12 + + escalade@3.2.0: {} + + escape-string-regexp@4.0.0: {} + + fast-sha256@1.3.0: {} + + fdir@6.5.0(picomatch@4.0.7): + optionalDependencies: + picomatch: 4.0.7 + + find-root@1.1.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + gensync@1.0.0-beta.2: {} + + hasown@2.0.4: + dependencies: + function-bind: 1.1.2 + + ieee754@1.2.1: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + inherits@2.0.4: {} + + is-arrayish@0.2.1: {} + + is-core-module@2.17.0: + dependencies: + hasown: 2.0.4 + + jose@6.2.3: {} + + js-tokens@4.0.0: {} + + jsesc@3.1.0: {} + + json-parse-even-better-errors@2.3.1: {} + + json5@2.2.3: {} + + lines-and-columns@1.2.4: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + ms@2.1.3: {} + + nanoid@3.3.20: {} + + node-releases@2.0.59: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.29.7 + error-ex: 1.3.4 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + path-parse@1.0.7: {} + + path-type@4.0.0: {} + + picocolors@1.1.1: {} + + picomatch@4.0.7: {} + + postcss@8.5.30: + dependencies: + nanoid: 3.3.20 + picocolors: 1.1.1 + source-map-js: 1.2.2 + + process@0.11.10: {} + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + react-dom@19.3.1(react@19.3.1): + dependencies: + react: 19.3.1 + scheduler: 0.28.0 + + react-refresh@0.17.0: {} + + react-router@7.18.4(react-dom@19.3.1(react@19.3.1))(react@19.3.1): + dependencies: + cookie: 1.1.1 + react: 19.3.1 + set-cookie-parser: 2.7.2 + optionalDependencies: + react-dom: 19.3.1(react@19.3.1) + + react@19.3.1: {} + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + resolve-from@4.0.0: {} + + resolve@1.22.13: + dependencies: + es-errors: 1.3.0 + is-core-module: 2.17.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + rollup@4.64.9: + dependencies: + '@types/estree': 1.0.9 + optionalDependencies: + '@napi-rs/lzma-linux-x64-gnu': 1.5.1 + '@rollup/rollup-android-arm-eabi': 4.64.9 + '@rollup/rollup-android-arm64': 4.64.9 + '@rollup/rollup-darwin-arm64': 4.64.9 + '@rollup/rollup-darwin-x64': 4.64.9 + '@rollup/rollup-freebsd-arm64': 4.64.9 + '@rollup/rollup-freebsd-x64': 4.64.9 + '@rollup/rollup-linux-arm-gnueabihf': 4.64.9 + '@rollup/rollup-linux-arm-musleabihf': 4.64.9 + '@rollup/rollup-linux-arm64-gnu': 4.64.9 + '@rollup/rollup-linux-arm64-musl': 4.64.9 + '@rollup/rollup-linux-loong64-gnu': 4.64.9 + '@rollup/rollup-linux-loong64-musl': 4.64.9 + '@rollup/rollup-linux-ppc64-gnu': 4.64.9 + '@rollup/rollup-linux-ppc64-musl': 4.64.9 + '@rollup/rollup-linux-riscv64-gnu': 4.64.9 + '@rollup/rollup-linux-riscv64-musl': 4.64.9 + '@rollup/rollup-linux-s390x-gnu': 4.64.9 + '@rollup/rollup-linux-x64-gnu': 4.64.9 + '@rollup/rollup-linux-x64-musl': 4.64.9 + '@rollup/rollup-openbsd-x64': 4.64.9 + '@rollup/rollup-openharmony-arm64': 4.64.9 + '@rollup/rollup-win32-arm64-msvc': 4.64.9 + '@rollup/rollup-win32-ia32-msvc': 4.64.9 + '@rollup/rollup-win32-x64-gnu': 4.64.9 + '@rollup/rollup-win32-x64-msvc': 4.64.9 + fsevents: 2.3.3 + + safe-buffer@5.2.1: {} + + scheduler@0.28.0: {} + + semver@6.3.1: {} + + set-cookie-parser@2.7.2: {} + + source-map-js@1.2.2: {} + + source-map@0.5.7: {} + + stream-browserify@3.0.0: + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + stylis@4.2.0: {} + + supports-preserve-symlinks-flag@1.0.0: {} + + tabbable@6.5.0: {} + + tinyglobby@0.2.17: + dependencies: + fdir: 6.5.0(picomatch@4.0.7) + picomatch: 4.0.7 + + tslib@2.8.1: {} + + update-browserslist-db@1.3.4(browserslist@4.29.3): + dependencies: + browserslist: 4.29.3 + escalade: 3.2.0 + picocolors: 1.1.1 + + util-deprecate@1.0.2: {} + + vite@6.4.4: + dependencies: + esbuild: 0.25.12 + fdir: 6.5.0(picomatch@4.0.7) + picomatch: 4.0.7 + postcss: 8.5.30 + rollup: 4.64.9 + tinyglobby: 0.2.17 + optionalDependencies: + fsevents: 2.3.3 + + yallist@3.1.1: {} + + yaml@1.10.3: {} diff --git a/quickstarts/react/pnpm-workspace.yaml b/quickstarts/react/pnpm-workspace.yaml new file mode 100644 index 0000000..151e558 --- /dev/null +++ b/quickstarts/react/pnpm-workspace.yaml @@ -0,0 +1,3 @@ +allowBuilds: + core-js: false + esbuild: true diff --git a/quickstarts/react/scripts/prepare-dev.cjs b/quickstarts/react/scripts/prepare-dev.cjs new file mode 100644 index 0000000..734e095 --- /dev/null +++ b/quickstarts/react/scripts/prepare-dev.cjs @@ -0,0 +1,19 @@ +// Copyright 2026 The ThunderID Authors +// SPDX-License-Identifier: Apache-2.0 + +const fs = require('node:fs'); +const path = require('node:path'); + +const root = path.join(__dirname, '..'); + +const envExample = path.join(root, '.env.example'); +const envTarget = path.join(root, '.env'); +if (fs.existsSync(envExample) && !fs.existsSync(envTarget)) { + // Blank placeholder values (e.g. `your-client-id-here`, the sample base URL) + // so the copied .env still trips the app's missing-env-var check until real + // values are filled in. + const envContent = fs + .readFileSync(envExample, 'utf8') + .replace(/^([A-Z0-9_]+)=(your-\S*|generate-with-\S*|https:\/\/localhost:8090)$/gm, '$1='); + fs.writeFileSync(envTarget, envContent); +} diff --git a/quickstarts/react/src/App.css b/quickstarts/react/src/App.css new file mode 100644 index 0000000..741c085 --- /dev/null +++ b/quickstarts/react/src/App.css @@ -0,0 +1,1069 @@ +/* ─── Design tokens ─────────────────────────────────────────────── */ +:root { + --color-primary: #3688FF; + --color-navy: #05213F; + --color-bg: #F7F9FC; + --color-card: #ffffff; + --color-border: #DDE3EC; + --color-muted: #5A7085; + --color-text: #05213F; + --nav-bg: rgba(247, 249, 252, 0.92); + --nav-height: 52px; + --radius-card: 12px; + --radius-btn: 8px; + --transition: 0.2s ease; +} + +[data-theme='dark'] { + --color-bg: #080f1c; + --color-card: #0f1a2d; + --color-border: rgba(255, 255, 255, 0.09); + --color-text: #E0EAFF; + --color-muted: rgba(224, 234, 255, 0.48); + --color-navy: #E0EAFF; + --nav-bg: rgba(8, 15, 28, 0.92); +} + +/* ─── App shell ─────────────────────────────────────────────────── */ +.app { + min-height: 100vh; + background: var(--color-bg); + color: var(--color-text); + transition: background var(--transition), color var(--transition); +} + +/* ─── Nav ───────────────────────────────────────────────────────── */ +.nav { + position: fixed; + top: 0; + left: 0; + right: 0; + height: var(--nav-height); + display: flex; + align-items: center; + padding: 0 28px; + background: var(--nav-bg); + backdrop-filter: blur(12px); + -webkit-backdrop-filter: blur(12px); + border-bottom: 1px solid var(--color-border); + z-index: 100; + gap: 12px; +} + +.nav-logo { + display: flex; + align-items: center; + gap: 10px; + cursor: pointer; + text-decoration: none; + color: inherit; + flex: 1; +} + +.wordmark { + display: flex; + flex-direction: column; + gap: 0; +} +.wordmark-name { + font-size: 14px; + font-weight: 700; + letter-spacing: -0.03em; + line-height: 1.1; + color: var(--color-text); +} +.wordmark-sub { + font-size: 8.5px; + font-weight: 700; + letter-spacing: 0.1em; + text-transform: uppercase; + color: #3688FF; + line-height: 1; + margin-top: 1.5px; +} + +.nav-actions { + display: flex; + align-items: center; + gap: 8px; +} + +/* ─── Dark-mode toggle ──────────────────────────────────────────── */ +.dark-toggle { + display: flex; + align-items: center; + justify-content: center; + width: 34px; + height: 34px; + border-radius: 8px; + border: 1px solid var(--color-border); + background: transparent; + color: var(--color-muted); + cursor: pointer; + font-size: 15px; + transition: border-color var(--transition), color var(--transition), background var(--transition); + flex-shrink: 0; +} + +.dark-toggle:hover { + background: var(--color-border); + color: var(--color-text); +} + +/* ─── Buttons ───────────────────────────────────────────────────── */ +.btn-primary, +.btn-outline, +.btn-ghost { + display: inline-flex; + align-items: center; + justify-content: center; + height: 46px; + padding: 0 24px; + border-radius: var(--radius-btn); + font-size: 15px; + font-weight: 600; + cursor: pointer; + transition: opacity var(--transition), background var(--transition), border-color var(--transition); + white-space: nowrap; + text-decoration: none; + font-family: inherit; +} + +.btn-primary { + background: var(--color-primary); + color: #fff; + border: 1.5px solid var(--color-primary); +} + +.btn-primary:hover { + opacity: 0.88; +} + +.btn-outline { + background: transparent; + color: var(--color-primary); + border: 1.5px solid rgba(54, 136, 255, 0.4); +} + +.btn-outline:hover { + background: rgba(54, 136, 255, 0.08); +} + +.btn-ghost { + background: transparent; + color: var(--color-muted); + border: none; +} +.btn-ghost:hover { + background: rgba(0, 0, 0, 0.04); +} + +/* Nav-sized buttons (slightly shorter) */ +.nav .btn-primary, +.nav .btn-outline, +.nav .btn-ghost { + height: 36px; + padding: 0 16px; + font-size: 14px; +} + +/* ─── Loading ───────────────────────────────────────────────────── */ +.loading-screen { + min-height: calc(100vh - var(--nav-height)); + margin-top: var(--nav-height); + display: flex; + align-items: center; + justify-content: center; + color: var(--color-muted); + font-size: 15px; +} + +/* ─── Hero ──────────────────────────────────────────────────────── */ +.hero { + min-height: calc(100vh - var(--nav-height)); + margin-top: var(--nav-height); + padding: 96px 32px 80px; +} + +.home-shell { + min-height: calc(100vh - var(--nav-height)); + margin-top: var(--nav-height); +} + +.hero-inner { + width: 100%; + max-width: 560px; + margin: 0 auto; + display: flex; + flex-direction: column; + align-items: center; + text-align: center; + gap: 0; +} + +.hero-mark { display: flex; justify-content: center; margin-bottom: 32px; } + +.hero-badge { + display: inline-flex; + align-items: center; + gap: 8px; + font-size: 11px; + font-weight: 700; + letter-spacing: 0.1em; + text-transform: uppercase; + color: var(--color-muted); + margin-bottom: 28px; +} +.hero-badge-line { + display: block; + height: 1px; + width: 24px; + background: var(--color-border); + flex-shrink: 0; +} + +.hero-title { + font-size: 42px; + font-weight: 700; + letter-spacing: -0.05em; + line-height: 1.1; + color: var(--color-text); + margin: 0 0 18px; +} + +.hero-subtitle { + font-size: 16px; + color: var(--color-muted); + max-width: 420px; + line-height: 1.8; + letter-spacing: -0.01em; + margin: 0 auto 36px; +} + +.hero-ctas { + display: flex; + justify-content: center; + gap: 10px; + margin-bottom: 52px; +} + +.hero-divider { + width: 100%; + border: none; + border-top: 1px solid var(--color-border); + margin: 4px 0; +} + +/* ─── Stats row ─────────────────────────────────────────────────── */ +.hero-stats { + width: 100%; + display: grid; + grid-template-columns: repeat(3, 1fr); +} + +.stat { + display: flex; + flex-direction: column; + align-items: center; + gap: 4px; + padding: 16px 8px; +} + +.stat:not(:last-child) { + border-right: 1px solid var(--color-border); +} + +.stat-value { + font-size: 15px; + font-weight: 700; + color: var(--color-text); +} + +.stat-label { + font-size: 12px; + color: var(--color-muted); +} + +/* ─── Config notice ─────────────────────────────────────────────────── */ +.config-badge { + color: #e88b3a; +} + +.config-list { + width: 100%; + max-width: 420px; + text-align: left; + list-style: none; + background: var(--color-card); + border: 1px solid var(--color-border); + border-radius: var(--radius-btn); + padding: 0 16px; + margin: 4px 0 28px; +} + +.config-list-item { + padding: 10px 0; + font-family: ui-monospace, SFMono-Regular, Menlo, monospace; + font-size: 13px; + color: var(--color-text); +} + +.config-list-item:not(:last-child) { + border-bottom: 1px solid var(--color-border); +} + +.config-hint { + font-size: 14px; + color: var(--color-muted); + line-height: 1.7; + max-width: 420px; + margin: 0 auto; +} + +.config-hint code { + background: rgba(54, 136, 255, 0.08); + border-radius: 4px; + padding: 2px 6px; + font-family: ui-monospace, SFMono-Regular, Menlo, monospace; + font-size: 13px; +} + +.config-step { + width: 100%; + max-width: 420px; + margin: 0 auto 28px; +} + +.config-step-label { + font-size: 11px; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.09em; + color: var(--color-muted); + margin-bottom: 10px; + text-align: left; +} + +.config-step .config-list, +.config-step .config-hint { + margin-left: 0; + margin-right: 0; +} + +.config-box { + text-align: left; + background: var(--color-card); + border: 1px solid var(--color-border); + border-radius: var(--radius-card); + padding: 16px; +} + +.config-box-body { + font-size: 13px; + color: var(--color-muted); + line-height: 1.6; + margin-bottom: 14px; +} + +.config-value-row { + display: flex; + align-items: center; + gap: 8px; +} + +.config-value { + flex: 1; + min-width: 0; + overflow-x: auto; + white-space: nowrap; + font-family: ui-monospace, SFMono-Regular, Menlo, monospace; + font-size: 12px; + color: var(--color-text); + background: rgba(54, 136, 255, 0.08); + border-radius: 4px; + padding: 8px 10px; +} + +.config-value-label { + font-size: 11px; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.06em; + color: var(--color-muted); + margin-bottom: 4px; +} + +.config-value-group { + display: flex; + flex-direction: column; + gap: 12px; +} + +.config-docs-note { + font-size: 13px; + color: var(--color-muted); + max-width: 420px; + margin: 0 auto; +} + +.config-docs-note a { + color: var(--color-primary); + font-weight: 600; +} + +/* ─── Signed-in home page ───────────────────────────────────────────── */ +.home-main { + width: 100%; + max-width: 900px; + margin: 0 auto; + padding: 52px 28px 80px; +} + +/* Greeting */ +.home-greeting { + display: flex; + align-items: flex-start; + gap: 16px; + margin-bottom: 36px; +} + +.home-greeting-text { + min-width: 0; +} + +.home-greeting-name { + margin: 0 0 6px; + font-size: 26px; + font-weight: 700; + color: var(--color-text); + letter-spacing: -0.04em; +} + +.home-greeting-meta { + display: flex; + align-items: center; + gap: 8px; + font-size: 13px; + color: var(--color-muted); + letter-spacing: -0.01em; + flex-wrap: wrap; +} + +.home-dot { + display: inline-block; + width: 3px; + height: 3px; + border-radius: 50%; + background: var(--color-border); + flex-shrink: 0; +} + +.home-session-active { + display: inline-flex; + align-items: center; + gap: 5px; + color: #2fbd6b; +} + +.home-session-dot { + display: inline-block; + width: 6px; + height: 6px; + border-radius: 50%; + background: #2fbd6b; + flex-shrink: 0; +} + +/* Session stats row */ +.home-stats { + display: flex; + gap: 0; + padding: 20px 0; + border-top: 1px solid var(--color-border); + border-bottom: 1px solid var(--color-border); + margin-bottom: 52px; +} + +.home-stat { + flex: 1; + display: flex; + align-items: center; + gap: 10px; + min-width: 0; +} + +.home-stat--bordered { + padding-left: 32px; + border-left: 1px solid var(--color-border); +} + +.home-stat-icon { + width: 32px; + height: 32px; + border-radius: 8px; + background: rgba(54, 136, 255, 0.1); + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; + color: #3688FF; +} + +.home-stat-value { + font-size: 14px; + font-weight: 700; + color: var(--color-text); + letter-spacing: -0.02em; +} + +.home-stat-value--mono { + font-family: var(--font-mono, monospace); + letter-spacing: 0.01em; +} + +.home-stat-label { + font-size: 11px; + font-weight: 600; + color: var(--color-muted); + text-transform: uppercase; + letter-spacing: 0.07em; + margin-top: 2px; +} + +/* What's next */ +.home-next-label { + font-size: 11px; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.09em; + color: var(--color-muted); + margin-bottom: 20px; +} + +.home-next-list { + display: flex; + flex-direction: column; +} + +.home-next-item { + display: grid; + grid-template-columns: 28px 1fr auto; + gap: 16px; + align-items: start; + padding: 20px 0; + border-top: 1px solid var(--color-border); + text-decoration: none; + color: inherit; + cursor: pointer; + transition: background var(--transition); + border-radius: 4px; +} + +.home-next-item:hover .home-next-cta { + opacity: 1; +} + +.home-next-n { + font-size: 11px; + font-weight: 700; + color: #3688FF; + letter-spacing: 0.05em; + padding-top: 2px; + font-variant-numeric: tabular-nums; +} + +.home-next-body { + min-width: 0; +} + +.home-next-title { + font-size: 14px; + font-weight: 600; + color: var(--color-text); + letter-spacing: -0.02em; + margin-bottom: 4px; +} + +.home-next-desc { + font-size: 13px; + color: var(--color-muted); + line-height: 1.6; + letter-spacing: -0.01em; +} + +.home-next-cta { + display: inline-flex; + align-items: center; + gap: 4px; + font-size: 13px; + font-weight: 600; + color: #3688FF; + white-space: nowrap; + opacity: 0.7; + transition: opacity var(--transition); + padding-top: 2px; +} + +/* ─── Nav back button ───────────────────────────────────────────── */ +.nav-back-btn { + display: inline-flex; + align-items: center; + gap: 4px; + height: 32px; + padding: 0 10px; + border-radius: 6px; + border: none; + background: transparent; + color: var(--color-muted); + font-size: 13px; + font-family: inherit; + letter-spacing: -0.01em; + cursor: pointer; + transition: background var(--transition), color var(--transition); +} + +.nav-back-btn:hover { + background: var(--color-border); + color: var(--color-text); +} + +/* ─── Account page (Google Account-style left-nav layout) ─────────── */ +.account-page { + display: flex; + align-items: flex-start; + min-height: calc(100vh - var(--nav-height)); + margin-top: var(--nav-height); +} + +.account-sidebar { + width: 280px; + flex-shrink: 0; + padding: 40px 24px; + position: sticky; + top: var(--nav-height); +} + +.account-sidebar-title { + font-size: 22px; + font-weight: 700; + letter-spacing: -0.03em; + color: var(--color-text); + margin: 0 0 24px 16px; +} + +.account-nav { + display: flex; + flex-direction: column; + gap: 2px; +} + +.account-nav-item { + display: flex; + align-items: center; + gap: 14px; + width: 100%; + padding: 11px 16px; + border: none; + border-radius: 20px; + background: transparent; + color: var(--color-muted); + font-size: 14px; + font-weight: 500; + font-family: inherit; + text-align: left; + cursor: pointer; + white-space: nowrap; + transition: background var(--transition), color var(--transition); +} + +.account-nav-item:hover { + background: var(--color-border); + color: var(--color-text); +} + +.account-nav-item--active, +.account-nav-item--active:hover { + background: rgba(54, 136, 255, 0.12); + color: var(--color-primary); +} + +.account-content { + flex: 1; + min-width: 0; + display: flex; + justify-content: center; + padding: 40px 32px 80px; + border-left: 1px solid var(--color-border); +} + +.account-content-inner { + width: 100%; + max-width: 720px; +} + +/* UserProfile's `min-width: 600px` (a floor meant to keep the field grid from getting + cramped in other contexts) fights this page's own responsive layout, refusing to shrink + below 600px even when the viewport is narrower. The Security/Home boxes have no such floor + and already shrink fluidly with their container, so match that here. */ +.account-content .thunderid-user-profile { + min-width: 0; +} + +.account-content-title { + font-size: 26px; + font-weight: 700; + letter-spacing: -0.03em; + color: var(--color-text); + margin: 0 0 6px; +} + +.account-content-subtitle { + font-size: 14px; + color: var(--color-muted); + margin: 0 0 32px; +} + +.account-tiles { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); + gap: 16px; + margin-top: 8px; +} + +.account-tile { + text-align: left; + background: var(--color-card); + border: 1px solid var(--color-border); + border-radius: var(--radius-card); + padding: 22px; + cursor: pointer; + font-family: inherit; + display: flex; + flex-direction: column; + transition: border-color var(--transition); +} + +.account-tile:hover { + border-color: rgba(54, 136, 255, 0.35); +} + +.account-tile-icon { + width: 36px; + height: 36px; + border-radius: 10px; + display: flex; + align-items: center; + justify-content: center; + margin-bottom: 14px; +} + +.account-tile-icon--blue { + background: rgba(54, 136, 255, 0.12); + color: var(--color-primary); +} + +.account-tile-icon--green { + background: rgba(16, 185, 129, 0.12); + color: #10b981; +} + +.account-tile-title { + font-size: 15px; + font-weight: 600; + color: var(--color-text); + margin-bottom: 4px; +} + +.account-tile-desc { + font-size: 12.5px; + color: var(--color-muted); + line-height: 1.5; +} + +.account-security-list { + display: flex; + flex-direction: column; + gap: 16px; +} + +.account-security-card { + background: var(--color-card); + border: 1px solid var(--color-border); + border-radius: var(--radius-card); + padding: 20px 22px; +} + +.account-security-card-row { + display: flex; + align-items: center; + justify-content: space-between; + gap: 16px; +} + +.account-security-card-title { + font-size: 14px; + font-weight: 600; + color: var(--color-text); + margin-bottom: 2px; +} + +.account-security-card-desc { + font-size: 12.5px; + color: var(--color-muted); +} + +.account-security-card-cta { + flex-shrink: 0; + display: flex; + align-items: center; + gap: 6px; + padding: 0; + background: none; + border: none; + color: var(--color-primary); + font-size: 13px; + font-weight: 500; + font-family: inherit; + cursor: pointer; + transition: opacity var(--transition); +} + +.account-security-card-cta:hover { + opacity: 0.8; +} + +.account-security-card-chevron { + display: inline-flex; + transition: transform 0.2s; +} + +.account-security-card-chevron--open { + transform: rotate(180deg); +} + +.account-security-card-form { + margin-top: 18px; + padding-top: 18px; + border-top: 1px solid var(--color-border); +} + +@media (max-width: 760px) { + .account-page { + flex-direction: column; + } + .account-sidebar { + width: 100%; + position: static; + padding: 20px 16px 8px; + } + .account-nav { + flex-direction: row; + overflow-x: auto; + } + .account-content { + max-width: 100%; + border-left: none; + border-top: 1px solid var(--color-border); + padding: 24px 20px 60px; + } +} + +/* ─── Token debug page ──────────────────────────────────────────── */ +.token-main { + width: 100%; + max-width: 780px; + margin: 0 auto; + margin-top: var(--nav-height); + padding: 52px 28px 80px; +} + +.token-header { + display: flex; + align-items: flex-start; + justify-content: space-between; + gap: 16px; + margin-bottom: 36px; + flex-wrap: wrap; +} + +.token-title { + margin: 0 0 5px; + font-size: 22px; + font-weight: 700; + letter-spacing: -0.04em; + color: var(--color-text); +} + +.token-subtitle { + margin: 0; + font-size: 13px; + color: var(--color-muted); + letter-spacing: -0.01em; +} + +.token-badge { + display: inline-flex; + align-items: center; + gap: 7px; + padding: 6px 12px; + border-radius: 6px; + font-size: 12px; + font-weight: 700; + letter-spacing: -0.01em; + flex-shrink: 0; +} + +.token-badge--expired { + background: rgba(220, 38, 38, 0.08); + border: 1px solid rgba(220, 38, 38, 0.22); + color: #dc2626; +} + +.token-badge--valid { + background: rgba(47, 189, 107, 0.08); + border: 1px solid rgba(47, 189, 107, 0.22); + color: #2fbd6b; +} + +.token-badge-dot { + display: inline-block; + width: 6px; + height: 6px; + border-radius: 50%; + background: currentColor; + flex-shrink: 0; +} + +/* Raw token section */ +.token-raw-section { + margin-bottom: 20px; +} + +.token-raw-label-row { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 8px; +} + +.token-section-label { + font-size: 11px; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.09em; + color: var(--color-muted); +} + +.token-copy-btn { + display: inline-flex; + align-items: center; + gap: 5px; + padding: 4px 10px; + border-radius: 5px; + background: transparent; + border: 1px solid var(--color-border); + font-size: 11px; + font-weight: 600; + color: var(--color-muted); + cursor: pointer; + font-family: inherit; + letter-spacing: -0.01em; + transition: border-color var(--transition), color var(--transition); +} + +.token-copy-btn:hover { + border-color: #3688FF; + color: #3688FF; +} + +.token-raw { + display: block; + font-size: 11px; + font-family: var(--font-mono, monospace); + word-break: break-all; + line-height: 1.8; + background: #0b1120; + padding: 14px 16px; + border-radius: 8px; + overflow-x: auto; +} + +.token-raw--loading { + color: rgba(255, 255, 255, 0.3); +} + +.token-part--header { color: #ff7b72; } +.token-part--payload { color: #79c0ff; } +.token-part--signature { color: #3fb950; } + +.token-dot { + color: rgba(255, 255, 255, 0.2); +} + +/* Decoded grid */ +.token-decoded-grid { + display: grid; + grid-template-columns: 1fr 1.7fr; + gap: 12px; + margin-bottom: 20px; +} + +.token-code-box { + background: #0b1120; + border-radius: 10px; + overflow: hidden; +} + +.token-code-box-header { + padding: 9px 14px; + font-size: 10px; + font-weight: 700; + letter-spacing: 0.09em; + text-transform: uppercase; +} + +.token-code-box-header--header { + color: #ff7b72; + border-bottom: 1px solid rgba(255, 123, 114, 0.15); +} + +.token-code-box-header--payload { + color: #79c0ff; + border-bottom: 1px solid rgba(121, 192, 255, 0.15); +} + +.token-code-pre { + margin: 0; + padding: 14px; + font-size: 11.5px; + line-height: 1.8; + font-family: var(--font-mono, monospace); + color: #c9d1d9; + overflow-x: auto; + max-height: 220px; +} + +/* Meta row */ +.token-meta-row { + display: flex; + gap: 32px; + padding-top: 20px; + border-top: 1px solid var(--color-border); + flex-wrap: wrap; +} + +.token-meta-label { + font-size: 10px; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.09em; + color: var(--color-muted); + margin-bottom: 5px; +} + +.token-meta-value { + font-size: 12px; + font-family: var(--font-mono, monospace); + color: var(--color-text); + letter-spacing: -0.01em; +} diff --git a/quickstarts/react/src/App.jsx b/quickstarts/react/src/App.jsx new file mode 100644 index 0000000..e9b27ab --- /dev/null +++ b/quickstarts/react/src/App.jsx @@ -0,0 +1,22 @@ +import { createBrowserRouter, RouterProvider } from 'react-router' +import { ProtectedRoute } from '@thunderid/react-router' +import Nav from './components/Nav' +import HomePage from './pages/HomePage' +import TokenDebugPage from './pages/TokenDebugPage' +import AccountPage from './pages/AccountPage' +import './App.css' + +const router = createBrowserRouter([ + { + element:

    C9I%MynMrQ#9taYJgH~ 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⋙*Avrvx+jfU`@XG%>9=ko+tf( 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 literal 0 HcmV?d00001 diff --git a/quickstarts/android/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/quickstarts/android/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..b8da09703c67018f795e2e7ca52a3653e8c4438a GIT binary patch literal 32276 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 literal 0 HcmV?d00001 diff --git a/quickstarts/android/src/main/res/values-night/ic_launcher_colors.xml b/quickstarts/android/src/main/res/values-night/ic_launcher_colors.xml new file mode 100644 index 0000000..0cfdac6 --- /dev/null +++ b/quickstarts/android/src/main/res/values-night/ic_launcher_colors.xml @@ -0,0 +1,4 @@ + + + #0F172A + diff --git a/quickstarts/android/src/main/res/values/ic_launcher_colors.xml b/quickstarts/android/src/main/res/values/ic_launcher_colors.xml new file mode 100644 index 0000000..f42ada6 --- /dev/null +++ b/quickstarts/android/src/main/res/values/ic_launcher_colors.xml @@ -0,0 +1,4 @@ + + + #FFFFFF + diff --git a/quickstarts/android/src/main/res/xml/network_security_config.xml b/quickstarts/android/src/main/res/xml/network_security_config.xml new file mode 100644 index 0000000..931ccdc --- /dev/null +++ b/quickstarts/android/src/main/res/xml/network_security_config.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/quickstarts/android/thunderid-config/thunderid-config.yaml b/quickstarts/android/thunderid-config/thunderid-config.yaml new file mode 100644 index 0000000..f167a70 --- /dev/null +++ b/quickstarts/android/thunderid-config/thunderid-config.yaml @@ -0,0 +1,34 @@ +--- +resource_type: application +# Application used exclusively by the Android Quickstart E2E suite. It has no OAuth profile: the +# mobile SDKs authenticate app-natively via the Flow Execution API, so the sample app needs only +# the base URL and this application ID. +# +# The ID is fixed so the sample's Config.plist and the Maestro flows can be committed against a +# known value instead of discovering it at run time. +id: 019e5b10-1001-7a2b-9c3d-4e5f60718293 +ouHandle: default +name: Mobile Quickstart E2E App +description: Application for the ThunderID mobile SDK quickstart E2E suites +type: mobile +# A mobile application must normally prove its binary identity via platform attestation before it +# may initiate a flow directly, otherwise /flow/execute fails with FES-1016. Apple App Attest is +# unavailable in the iOS Simulator and Play Integrity requires real Play Services, so neither can +# be satisfied on the emulated devices this suite drives. devMode skips that check. +# +# Test-only. Never enable this on a real tenant: it removes the guarantee that the client +# initiating a flow is the genuine, unmodified app. +# +# NOTE: POST /import currently drops this block silently (it reports success, then stores +# attestation: null), so run-e2e.sh re-applies it over PUT /applications/{id}. Once the +# import path preserves it, that extra step can go. +attestation: + devMode: true +authFlowHandle: default-flow +# The suite registers a fresh user through the UI rather than relying on a seeded account, so +# self-service registration has to be enabled for this application. +registrationFlowHandle: default-flow +isRegistrationFlowEnabled: true +signOutFlowHandle: default-flow +allowedUserTypes: + - Person diff --git a/quickstarts/browser/.env.example b/quickstarts/browser/.env.example new file mode 100644 index 0000000..e38f402 --- /dev/null +++ b/quickstarts/browser/.env.example @@ -0,0 +1,5 @@ +# Base URL of your ThunderID deployment. ex: https://localhost:8090 +VITE_THUNDERID_BASE_URL=https://localhost:8090 + +# OAuth2 Client ID for this app. ThunderID Console -> your application -> Overview. +VITE_THUNDERID_CLIENT_ID=your-client-id-here diff --git a/quickstarts/browser/.gitignore b/quickstarts/browser/.gitignore new file mode 100644 index 0000000..9c97bbd --- /dev/null +++ b/quickstarts/browser/.gitignore @@ -0,0 +1,3 @@ +node_modules +dist +.env diff --git a/quickstarts/browser/.stackblitzrc b/quickstarts/browser/.stackblitzrc new file mode 100644 index 0000000..5f0a200 --- /dev/null +++ b/quickstarts/browser/.stackblitzrc @@ -0,0 +1,4 @@ +{ + "installDependencies": false, + "startCommand": "npm run prepare-dev && npm install && npm run dev" +} diff --git a/quickstarts/browser/README.md b/quickstarts/browser/README.md new file mode 100644 index 0000000..6738225 --- /dev/null +++ b/quickstarts/browser/README.md @@ -0,0 +1,37 @@ +# ThunderID Browser Quickstart + +Open in StackBlitz + +A minimal Vite + vanilla JS app demonstrating sign-in and sign-out with the ThunderID JavaScript SDK (`@thunderid/browser`). + +## Prerequisites + +- Node.js 18+ +- A running ThunderID instance (default: `https://localhost:8090`) +- A configured application with an authorized redirect URI set to your app's origin + +## Getting started + +1. Copy the environment file and fill in your values: + ```sh + cp .env.example .env + ``` + +2. Edit `.env` with your application's credentials: + ``` + VITE_THUNDERID_CLIENT_ID= + VITE_THUNDERID_BASE_URL=https://localhost:8090 + ``` + +3. Install dependencies and start the dev server: + ```sh + pnpm install + pnpm dev + ``` + +Open [http://localhost:5173](http://localhost:5173) in your browser. + +## Learn more + +- [ThunderID Docs](https://thunderid.dev/docs) +- [`@thunderid/browser` SDK reference](https://thunderid.dev/docs/sdks/javascript/browser) diff --git a/quickstarts/browser/index.html b/quickstarts/browser/index.html new file mode 100644 index 0000000..8e93376 --- /dev/null +++ b/quickstarts/browser/index.html @@ -0,0 +1,12 @@ + + + + + + ThunderID JavaScript Quickstart + + +