From 955e273b3f9d325a685ac2d8a140b27ba24e8d41 Mon Sep 17 00:00:00 2001 From: Eli <88557639+lishaduck@users.noreply.github.com> Date: Sun, 21 Jul 2024 23:44:11 -0500 Subject: [PATCH] feat: initial commit --- .github/CODEOWNERS | 13 + .github/dependabot.yaml | 43 + .github/workflows/ci.yaml | 346 +++++ .gitignore | 172 +++ .idea/runConfigurations/main_dart.xml | 6 + .idea/runConfigurations/melos_bootstrap.xml | 11 + .idea/runConfigurations/melos_clean.xml | 11 + .../melos_flutter_run_our_democracy.xml | 6 + .../melos_run_build_runner.xml | 11 + .idea/runConfigurations/melos_run_gen.xml | 11 + .../runConfigurations/melos_run_gen_l10n.xml | 11 + .idea/runConfigurations/melos_run_lint.xml | 11 + .idea/runConfigurations/melos_run_test.xml | 11 + .markdownlint-cli2.jsonc | 6 + .vscode/extensions.json | 15 + .vscode/launch.json | 16 + .vscode/settings.json | 139 ++ .vscode/tasks.json | 128 ++ README.md | 1 + cspell.json | 33 + melos.yaml | 31 + packages/app/.gitignore | 171 +++ packages/app/README.md | 15 + packages/app/analysis_options.yaml | 55 + packages/app/android/.gitignore | 13 + packages/app/android/app/build.gradle | 67 + .../android/app/src/debug/AndroidManifest.xml | 7 + .../android/app/src/main/AndroidManifest.xml | 45 + .../org/psdr3/our/democracy/MainActivity.kt | 5 + .../app/src/main/res/drawable-hdpi/splash.png | Bin 0 -> 8851 bytes .../app/src/main/res/drawable-mdpi/splash.png | Bin 0 -> 5128 bytes .../res/drawable-night-v21/background.png | Bin 0 -> 69 bytes .../drawable-night-v21/launch_background.xml | 9 + .../main/res/drawable-night/background.png | Bin 0 -> 69 bytes .../res/drawable-night/launch_background.xml | 9 + .../src/main/res/drawable-v21/background.png | Bin 0 -> 69 bytes .../res/drawable-v21/launch_background.xml | 9 + .../src/main/res/drawable-xhdpi/splash.png | Bin 0 -> 10015 bytes .../src/main/res/drawable-xxhdpi/splash.png | Bin 0 -> 17375 bytes .../src/main/res/drawable-xxxhdpi/splash.png | Bin 0 -> 21473 bytes .../app/src/main/res/drawable/background.png | Bin 0 -> 69 bytes .../main/res/drawable/launch_background.xml | 9 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 544 bytes .../main/res/mipmap-hdpi/launcher_icon.png | Bin 0 -> 3112 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 442 bytes .../main/res/mipmap-mdpi/launcher_icon.png | Bin 0 -> 1981 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 721 bytes .../main/res/mipmap-xhdpi/launcher_icon.png | Bin 0 -> 4383 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 1031 bytes .../main/res/mipmap-xxhdpi/launcher_icon.png | Bin 0 -> 6808 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 1443 bytes .../main/res/mipmap-xxxhdpi/launcher_icon.png | Bin 0 -> 8854 bytes .../src/main/res/values-night-v31/styles.xml | 21 + .../app/src/main/res/values-night/styles.xml | 22 + .../app/src/main/res/values-v31/styles.xml | 21 + .../app/src/main/res/values/styles.xml | 22 + .../app/src/profile/AndroidManifest.xml | 7 + packages/app/android/build.gradle | 18 + packages/app/android/gradle.properties | 3 + .../gradle/wrapper/gradle-wrapper.properties | 5 + packages/app/android/settings.gradle | 26 + packages/app/assets/icons/logo.png | Bin 0 -> 21527 bytes packages/app/build.yaml | 53 + packages/app/dartdoc_options.yaml | 6 + packages/app/ios/.gitignore | 34 + .../app/ios/Flutter/AppFrameworkInfo.plist | 26 + packages/app/ios/Flutter/Debug.xcconfig | 2 + packages/app/ios/Flutter/Release.xcconfig | 2 + packages/app/ios/Podfile | 44 + .../app/ios/Runner.xcodeproj/project.pbxproj | 616 ++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 98 ++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + packages/app/ios/Runner/AppDelegate.swift | 13 + .../AppIcon.appiconset/Contents.json | 122 ++ .../Icon-App-1024x1024@1x.png | Bin 0 -> 75206 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 0 -> 549 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 0 -> 1286 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 0 -> 2094 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 0 -> 901 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 0 -> 2034 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 0 -> 3284 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 0 -> 1286 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 0 -> 2956 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 0 -> 4546 bytes .../AppIcon.appiconset/Icon-App-50x50@1x.png | Bin 0 -> 1630 bytes .../AppIcon.appiconset/Icon-App-50x50@2x.png | Bin 0 -> 3248 bytes .../AppIcon.appiconset/Icon-App-57x57@1x.png | Bin 0 -> 1997 bytes .../AppIcon.appiconset/Icon-App-57x57@2x.png | Bin 0 -> 4372 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 0 -> 4546 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 0 -> 6569 bytes .../AppIcon.appiconset/Icon-App-72x72@1x.png | Bin 0 -> 2533 bytes .../AppIcon.appiconset/Icon-App-72x72@2x.png | Bin 0 -> 5459 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 0 -> 2851 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 0 -> 5672 bytes .../Icon-App-83.5x83.5@2x.png | Bin 0 -> 4930 bytes .../LaunchBackground.imageset/Contents.json | 22 + .../LaunchBackground.imageset/background.png | Bin 0 -> 69 bytes .../darkbackground.png | Bin 0 -> 69 bytes .../LaunchImage.imageset/Contents.json | 23 + .../LaunchImage.imageset/LaunchImage.png | Bin 0 -> 5128 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 0 -> 10015 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 0 -> 17375 bytes .../LaunchImage.imageset/README.md | 5 + .../Runner/Base.lproj/LaunchScreen.storyboard | 44 + .../app/ios/Runner/Base.lproj/Main.storyboard | 26 + packages/app/ios/Runner/Info.plist | 53 + .../app/ios/Runner/Runner-Bridging-Header.h | 1 + .../app/ios/RunnerTests/RunnerTests.swift | 12 + packages/app/l10n.yaml | 8 + packages/app/lib/main.dart | 11 + packages/app/lib/src/app/app.dart | 68 + packages/app/lib/src/app/bootstrap.dart | 53 + packages/app/lib/src/app/router.dart | 45 + packages/app/lib/src/app/wrapper_page.dart | 50 + .../application/sample_items_service.dart | 20 + .../sample/domain/sample_item_entity.dart | 5 + .../sample/domain/sample_items_model.dart | 13 + .../items/sample_item_details_page.dart | 15 + .../items/sample_items_list_page.dart | 55 + .../application/settings_service.dart | 40 + .../settings/data/preferences_repository.dart | 61 + .../settings/domain/settings_model.dart | 14 + .../preferences/settings_page.dart | 60 + packages/app/lib/src/l10n/arb/app_en.arb | 6 + packages/app/lib/src/l10n/l10n.dart | 19 + packages/app/lib/src/utils/design.dart | 24 + packages/app/lib/src/utils/router.dart | 11 + packages/app/linux/.gitignore | 1 + packages/app/linux/CMakeLists.txt | 145 ++ packages/app/linux/flutter/CMakeLists.txt | 88 ++ .../flutter/generated_plugin_registrant.cc | 11 + .../flutter/generated_plugin_registrant.h | 15 + .../app/linux/flutter/generated_plugins.cmake | 23 + packages/app/linux/main.cc | 6 + packages/app/linux/my_application.cc | 124 ++ packages/app/linux/my_application.h | 18 + packages/app/macos/.gitignore | 7 + .../app/macos/Flutter/Flutter-Debug.xcconfig | 2 + .../macos/Flutter/Flutter-Release.xcconfig | 2 + .../Flutter/GeneratedPluginRegistrant.swift | 12 + packages/app/macos/Podfile | 43 + packages/app/macos/Podfile.lock | 23 + .../macos/Runner.xcodeproj/project.pbxproj | 801 ++++++++++ .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 98 ++ .../contents.xcworkspacedata | 10 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + packages/app/macos/Runner/AppDelegate.swift | 9 + .../AppIcon.appiconset/Contents.json | 68 + .../AppIcon.appiconset/app_icon_1024.png | Bin 0 -> 98879 bytes .../AppIcon.appiconset/app_icon_128.png | Bin 0 -> 5872 bytes .../AppIcon.appiconset/app_icon_16.png | Bin 0 -> 542 bytes .../AppIcon.appiconset/app_icon_256.png | Bin 0 -> 11582 bytes .../AppIcon.appiconset/app_icon_32.png | Bin 0 -> 1189 bytes .../AppIcon.appiconset/app_icon_512.png | Bin 0 -> 35633 bytes .../AppIcon.appiconset/app_icon_64.png | Bin 0 -> 2811 bytes .../app/macos/Runner/Base.lproj/MainMenu.xib | 343 +++++ .../app/macos/Runner/Configs/AppInfo.xcconfig | 14 + .../app/macos/Runner/Configs/Debug.xcconfig | 2 + .../app/macos/Runner/Configs/Release.xcconfig | 2 + .../macos/Runner/Configs/Warnings.xcconfig | 13 + .../macos/Runner/DebugProfile.entitlements | 14 + packages/app/macos/Runner/Info.plist | 32 + .../app/macos/Runner/MainFlutterWindow.swift | 15 + .../app/macos/Runner/Release.entitlements | 10 + .../app/macos/RunnerTests/RunnerTests.swift | 12 + packages/app/pubspec.lock | 1327 +++++++++++++++++ packages/app/pubspec.yaml | 271 ++++ packages/app/test/helpers/accessibility.dart | 41 + packages/app/test/helpers/mocks.dart | 4 + packages/app/test/helpers/pump_app.dart | 52 + packages/app/test/helpers/riverpod.dart | 27 + packages/app/test/src/app/app_test.dart | 51 + packages/app/test/src/app/bootstrap_test.dart | 29 + packages/app/test/src/app/router_test.dart | 47 + .../app/test/src/app/wrapper_page_test.dart | 76 + .../sample_items_service_test.dart | 14 + .../domain/sample_item_entity_test.dart | 10 + .../domain/sample_items_model_test.dart | 17 + .../items/sample_item_details_page_test.dart | 23 + .../items/sample_item_list_page_test.dart | 24 + .../application/settings_service_test.dart | 49 + .../data/preferences_repository_test.dart | 68 + .../settings/domain/settings_model_test.dart | 30 + .../preferences/settings_page_test.dart | 63 + packages/app/test/src/l10n/l10n_test.dart | 30 + packages/app/untranslated.json | 1 + packages/app/web/favicon.png | Bin 0 -> 542 bytes packages/app/web/icons/Icon-192.png | Bin 0 -> 8854 bytes packages/app/web/icons/Icon-512.png | Bin 0 -> 35633 bytes packages/app/web/icons/Icon-maskable-192.png | Bin 0 -> 8854 bytes packages/app/web/icons/Icon-maskable-512.png | Bin 0 -> 35633 bytes packages/app/web/index.html | 176 +++ packages/app/web/manifest.json | 35 + packages/app/web/splash/img/dark-1x.png | Bin 0 -> 5128 bytes packages/app/web/splash/img/dark-2x.png | Bin 0 -> 10015 bytes packages/app/web/splash/img/dark-3x.png | Bin 0 -> 17375 bytes packages/app/web/splash/img/dark-4x.png | Bin 0 -> 21473 bytes packages/app/web/splash/img/light-1x.png | Bin 0 -> 5128 bytes packages/app/web/splash/img/light-2x.png | Bin 0 -> 10015 bytes packages/app/web/splash/img/light-3x.png | Bin 0 -> 17375 bytes packages/app/web/splash/img/light-4x.png | Bin 0 -> 21473 bytes packages/app/windows/.gitignore | 17 + packages/app/windows/CMakeLists.txt | 108 ++ packages/app/windows/flutter/CMakeLists.txt | 109 ++ .../flutter/generated_plugin_registrant.cc | 11 + .../flutter/generated_plugin_registrant.h | 15 + .../windows/flutter/generated_plugins.cmake | 23 + packages/app/windows/runner/CMakeLists.txt | 40 + packages/app/windows/runner/Runner.rc | 121 ++ .../app/windows/runner/flutter_window.cpp | 71 + packages/app/windows/runner/flutter_window.h | 33 + packages/app/windows/runner/main.cpp | 43 + packages/app/windows/runner/resource.h | 16 + .../app/windows/runner/resources/app_icon.ico | Bin 0 -> 2003 bytes .../app/windows/runner/runner.exe.manifest | 20 + packages/app/windows/runner/utils.cpp | 65 + packages/app/windows/runner/utils.h | 19 + packages/app/windows/runner/win32_window.cpp | 288 ++++ packages/app/windows/runner/win32_window.h | 102 ++ project_words.txt | 80 + pubspec.lock | 342 +++++ pubspec.yaml | 8 + 228 files changed, 9392 insertions(+) create mode 100644 .github/CODEOWNERS create mode 100644 .github/dependabot.yaml create mode 100644 .github/workflows/ci.yaml create mode 100644 .gitignore create mode 100644 .idea/runConfigurations/main_dart.xml create mode 100644 .idea/runConfigurations/melos_bootstrap.xml create mode 100644 .idea/runConfigurations/melos_clean.xml create mode 100644 .idea/runConfigurations/melos_flutter_run_our_democracy.xml create mode 100644 .idea/runConfigurations/melos_run_build_runner.xml create mode 100644 .idea/runConfigurations/melos_run_gen.xml create mode 100644 .idea/runConfigurations/melos_run_gen_l10n.xml create mode 100644 .idea/runConfigurations/melos_run_lint.xml create mode 100644 .idea/runConfigurations/melos_run_test.xml create mode 100644 .markdownlint-cli2.jsonc create mode 100644 .vscode/extensions.json create mode 100644 .vscode/launch.json create mode 100644 .vscode/settings.json create mode 100644 .vscode/tasks.json create mode 120000 README.md create mode 100644 cspell.json create mode 100644 melos.yaml create mode 100644 packages/app/.gitignore create mode 100644 packages/app/README.md create mode 100644 packages/app/analysis_options.yaml create mode 100644 packages/app/android/.gitignore create mode 100644 packages/app/android/app/build.gradle create mode 100644 packages/app/android/app/src/debug/AndroidManifest.xml create mode 100644 packages/app/android/app/src/main/AndroidManifest.xml create mode 100644 packages/app/android/app/src/main/kotlin/org/psdr3/our/democracy/MainActivity.kt create mode 100644 packages/app/android/app/src/main/res/drawable-hdpi/splash.png create mode 100644 packages/app/android/app/src/main/res/drawable-mdpi/splash.png create mode 100644 packages/app/android/app/src/main/res/drawable-night-v21/background.png create mode 100644 packages/app/android/app/src/main/res/drawable-night-v21/launch_background.xml create mode 100644 packages/app/android/app/src/main/res/drawable-night/background.png create mode 100644 packages/app/android/app/src/main/res/drawable-night/launch_background.xml create mode 100644 packages/app/android/app/src/main/res/drawable-v21/background.png create mode 100644 packages/app/android/app/src/main/res/drawable-v21/launch_background.xml create mode 100644 packages/app/android/app/src/main/res/drawable-xhdpi/splash.png create mode 100644 packages/app/android/app/src/main/res/drawable-xxhdpi/splash.png create mode 100644 packages/app/android/app/src/main/res/drawable-xxxhdpi/splash.png create mode 100644 packages/app/android/app/src/main/res/drawable/background.png create mode 100644 packages/app/android/app/src/main/res/drawable/launch_background.xml create mode 100644 packages/app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 packages/app/android/app/src/main/res/mipmap-hdpi/launcher_icon.png create mode 100644 packages/app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 packages/app/android/app/src/main/res/mipmap-mdpi/launcher_icon.png create mode 100644 packages/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 packages/app/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png create mode 100644 packages/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 packages/app/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png create mode 100644 packages/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 packages/app/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png create mode 100644 packages/app/android/app/src/main/res/values-night-v31/styles.xml create mode 100644 packages/app/android/app/src/main/res/values-night/styles.xml create mode 100644 packages/app/android/app/src/main/res/values-v31/styles.xml create mode 100644 packages/app/android/app/src/main/res/values/styles.xml create mode 100644 packages/app/android/app/src/profile/AndroidManifest.xml create mode 100644 packages/app/android/build.gradle create mode 100644 packages/app/android/gradle.properties create mode 100644 packages/app/android/gradle/wrapper/gradle-wrapper.properties create mode 100644 packages/app/android/settings.gradle create mode 100644 packages/app/assets/icons/logo.png create mode 100644 packages/app/build.yaml create mode 100644 packages/app/dartdoc_options.yaml create mode 100644 packages/app/ios/.gitignore create mode 100644 packages/app/ios/Flutter/AppFrameworkInfo.plist create mode 100644 packages/app/ios/Flutter/Debug.xcconfig create mode 100644 packages/app/ios/Flutter/Release.xcconfig create mode 100644 packages/app/ios/Podfile create mode 100644 packages/app/ios/Runner.xcodeproj/project.pbxproj create mode 100644 packages/app/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 packages/app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 packages/app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 packages/app/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 packages/app/ios/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 packages/app/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 packages/app/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 packages/app/ios/Runner/AppDelegate.swift create mode 100644 packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png create mode 100644 packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png create mode 100644 packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png create mode 100644 packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png create mode 100644 packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png create mode 100644 packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png create mode 100644 packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png create mode 100644 packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png create mode 100644 packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png create mode 100644 packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png create mode 100644 packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png create mode 100644 packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png create mode 100644 packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png create mode 100644 packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png create mode 100644 packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png create mode 100644 packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png create mode 100644 packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png create mode 100644 packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png create mode 100644 packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png create mode 100644 packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png create mode 100644 packages/app/ios/Runner/Assets.xcassets/LaunchBackground.imageset/Contents.json create mode 100644 packages/app/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png create mode 100644 packages/app/ios/Runner/Assets.xcassets/LaunchBackground.imageset/darkbackground.png create mode 100644 packages/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json create mode 100644 packages/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png create mode 100644 packages/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png create mode 100644 packages/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png create mode 100644 packages/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md create mode 100644 packages/app/ios/Runner/Base.lproj/LaunchScreen.storyboard create mode 100644 packages/app/ios/Runner/Base.lproj/Main.storyboard create mode 100644 packages/app/ios/Runner/Info.plist create mode 100644 packages/app/ios/Runner/Runner-Bridging-Header.h create mode 100644 packages/app/ios/RunnerTests/RunnerTests.swift create mode 100644 packages/app/l10n.yaml create mode 100644 packages/app/lib/main.dart create mode 100644 packages/app/lib/src/app/app.dart create mode 100644 packages/app/lib/src/app/bootstrap.dart create mode 100644 packages/app/lib/src/app/router.dart create mode 100644 packages/app/lib/src/app/wrapper_page.dart create mode 100644 packages/app/lib/src/features/sample/application/sample_items_service.dart create mode 100644 packages/app/lib/src/features/sample/domain/sample_item_entity.dart create mode 100644 packages/app/lib/src/features/sample/domain/sample_items_model.dart create mode 100644 packages/app/lib/src/features/sample/presentation/items/sample_item_details_page.dart create mode 100644 packages/app/lib/src/features/sample/presentation/items/sample_items_list_page.dart create mode 100644 packages/app/lib/src/features/settings/application/settings_service.dart create mode 100644 packages/app/lib/src/features/settings/data/preferences_repository.dart create mode 100644 packages/app/lib/src/features/settings/domain/settings_model.dart create mode 100644 packages/app/lib/src/features/settings/presentation/preferences/settings_page.dart create mode 100644 packages/app/lib/src/l10n/arb/app_en.arb create mode 100644 packages/app/lib/src/l10n/l10n.dart create mode 100644 packages/app/lib/src/utils/design.dart create mode 100644 packages/app/lib/src/utils/router.dart create mode 100644 packages/app/linux/.gitignore create mode 100644 packages/app/linux/CMakeLists.txt create mode 100644 packages/app/linux/flutter/CMakeLists.txt create mode 100644 packages/app/linux/flutter/generated_plugin_registrant.cc create mode 100644 packages/app/linux/flutter/generated_plugin_registrant.h create mode 100644 packages/app/linux/flutter/generated_plugins.cmake create mode 100644 packages/app/linux/main.cc create mode 100644 packages/app/linux/my_application.cc create mode 100644 packages/app/linux/my_application.h create mode 100644 packages/app/macos/.gitignore create mode 100644 packages/app/macos/Flutter/Flutter-Debug.xcconfig create mode 100644 packages/app/macos/Flutter/Flutter-Release.xcconfig create mode 100644 packages/app/macos/Flutter/GeneratedPluginRegistrant.swift create mode 100644 packages/app/macos/Podfile create mode 100644 packages/app/macos/Podfile.lock create mode 100644 packages/app/macos/Runner.xcodeproj/project.pbxproj create mode 100644 packages/app/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 packages/app/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 packages/app/macos/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 packages/app/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 packages/app/macos/Runner/AppDelegate.swift create mode 100644 packages/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 packages/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png create mode 100644 packages/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png create mode 100644 packages/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png create mode 100644 packages/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png create mode 100644 packages/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png create mode 100644 packages/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png create mode 100644 packages/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png create mode 100644 packages/app/macos/Runner/Base.lproj/MainMenu.xib create mode 100644 packages/app/macos/Runner/Configs/AppInfo.xcconfig create mode 100644 packages/app/macos/Runner/Configs/Debug.xcconfig create mode 100644 packages/app/macos/Runner/Configs/Release.xcconfig create mode 100644 packages/app/macos/Runner/Configs/Warnings.xcconfig create mode 100644 packages/app/macos/Runner/DebugProfile.entitlements create mode 100644 packages/app/macos/Runner/Info.plist create mode 100644 packages/app/macos/Runner/MainFlutterWindow.swift create mode 100644 packages/app/macos/Runner/Release.entitlements create mode 100644 packages/app/macos/RunnerTests/RunnerTests.swift create mode 100644 packages/app/pubspec.lock create mode 100644 packages/app/pubspec.yaml create mode 100644 packages/app/test/helpers/accessibility.dart create mode 100644 packages/app/test/helpers/mocks.dart create mode 100644 packages/app/test/helpers/pump_app.dart create mode 100644 packages/app/test/helpers/riverpod.dart create mode 100644 packages/app/test/src/app/app_test.dart create mode 100644 packages/app/test/src/app/bootstrap_test.dart create mode 100644 packages/app/test/src/app/router_test.dart create mode 100644 packages/app/test/src/app/wrapper_page_test.dart create mode 100644 packages/app/test/src/features/sample/application/sample_items_service_test.dart create mode 100644 packages/app/test/src/features/sample/domain/sample_item_entity_test.dart create mode 100644 packages/app/test/src/features/sample/domain/sample_items_model_test.dart create mode 100644 packages/app/test/src/features/sample/presentation/items/sample_item_details_page_test.dart create mode 100644 packages/app/test/src/features/sample/presentation/items/sample_item_list_page_test.dart create mode 100644 packages/app/test/src/features/settings/application/settings_service_test.dart create mode 100644 packages/app/test/src/features/settings/data/preferences_repository_test.dart create mode 100644 packages/app/test/src/features/settings/domain/settings_model_test.dart create mode 100644 packages/app/test/src/features/settings/presentation/preferences/settings_page_test.dart create mode 100644 packages/app/test/src/l10n/l10n_test.dart create mode 100644 packages/app/untranslated.json create mode 100644 packages/app/web/favicon.png create mode 100644 packages/app/web/icons/Icon-192.png create mode 100644 packages/app/web/icons/Icon-512.png create mode 100644 packages/app/web/icons/Icon-maskable-192.png create mode 100644 packages/app/web/icons/Icon-maskable-512.png create mode 100644 packages/app/web/index.html create mode 100644 packages/app/web/manifest.json create mode 100644 packages/app/web/splash/img/dark-1x.png create mode 100644 packages/app/web/splash/img/dark-2x.png create mode 100644 packages/app/web/splash/img/dark-3x.png create mode 100644 packages/app/web/splash/img/dark-4x.png create mode 100644 packages/app/web/splash/img/light-1x.png create mode 100644 packages/app/web/splash/img/light-2x.png create mode 100644 packages/app/web/splash/img/light-3x.png create mode 100644 packages/app/web/splash/img/light-4x.png create mode 100644 packages/app/windows/.gitignore create mode 100644 packages/app/windows/CMakeLists.txt create mode 100644 packages/app/windows/flutter/CMakeLists.txt create mode 100644 packages/app/windows/flutter/generated_plugin_registrant.cc create mode 100644 packages/app/windows/flutter/generated_plugin_registrant.h create mode 100644 packages/app/windows/flutter/generated_plugins.cmake create mode 100644 packages/app/windows/runner/CMakeLists.txt create mode 100644 packages/app/windows/runner/Runner.rc create mode 100644 packages/app/windows/runner/flutter_window.cpp create mode 100644 packages/app/windows/runner/flutter_window.h create mode 100644 packages/app/windows/runner/main.cpp create mode 100644 packages/app/windows/runner/resource.h create mode 100644 packages/app/windows/runner/resources/app_icon.ico create mode 100644 packages/app/windows/runner/runner.exe.manifest create mode 100644 packages/app/windows/runner/utils.cpp create mode 100644 packages/app/windows/runner/utils.h create mode 100644 packages/app/windows/runner/win32_window.cpp create mode 100644 packages/app/windows/runner/win32_window.h create mode 100644 project_words.txt create mode 100644 pubspec.lock create mode 100644 pubspec.yaml diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..d13b660 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,13 @@ +# Each line is a file pattern followed by one or more owners. + +# These owners will be the default owners for everything in +# the repo. Unless a later match takes precedence, +# the global owners will be requested for +# review when someone opens a pull request. +* @PHS-TSA/our-democracy + +**.dart @PHS-TSA/our-democracy +/.github/ @PHS-TSA/our-democracy +/packages/*/assets/ @PHS-TSA/our-democracy +tests/ @PHS-TSA/our-democracy +pubspec.* @PHS-TSA/our-democracy diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml new file mode 100644 index 0000000..0140e51 --- /dev/null +++ b/.github/dependabot.yaml @@ -0,0 +1,43 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file + +version: 2 +updates: + - package-ecosystem: "github-actions" # See documentation for possible values + directories: # Location of package manifests + - "/" + schedule: + interval: "daily" + assignees: + - "PHS-TSA" + groups: + github: + patterns: + - "actions/*" + + - package-ecosystem: "pub" # See documentation for possible values + directories: # Location of package manifests + - "/packages/*" + schedule: + interval: "daily" + assignees: + - "PHS-TSA" + groups: + riverpod: + patterns: + - "*riverpod*" + auto_route: + patterns: + - "auto_route*" + freezed: + patterns: + - "freezed*" + - "json_*" + build: + patterns: + - "build*" + envied: + patterns: + - "envied*" diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000..18ef9fe --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,346 @@ +--- +name: CI/CD + +on: + push: + branches: + - "main" + pull_request: + types: + - opened + - synchronize + merge_group: + schedule: + - cron: "0 14 * * 1" # every monday at 9 in the morning CST + workflow_dispatch: + +env: + CI: true + +permissions: + contents: read + +jobs: + setup: + name: Setup + needs: [] + timeout-minutes: 5 + runs-on: ubuntu-latest + + strategy: + fail-fast: false + + steps: + - name: ๐Ÿ“š Git checkout + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + with: + submodules: recursive + clean: true + persist-credentials: false + set-safe-directory: true + - name: ๐Ÿฆ Set up Flutter + id: flutter + uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 # v2.16.0 + with: + flutter-version-file: pubspec.yaml + cache: true + - name: ๐ŸŒ Disable analytics + run: flutter --disable-analytics + - name: ๐Ÿ“ฆ Install dependencies + uses: bluefireteam/melos-action@6085791af7036f6366c9a4b9d55105c0ef9c6388 # v3 + with: + run-bootstrap: true + - name: โš™๏ธ Cache generated files + uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + with: + path: | + .dart_tool/ + lib/gen/*.gen.dart + lib/src/features/**/*.g.dart + lib/src/features/**/*.freezed.dart + lib/src/utils/*.g.dart + lib/src/utils/*.freezed.dart + lib/src/app/*.gr.dart + lib/src/app/*.gm.dart + lib/src/l10n/app_localizations.dart + lib/src/l10n/app_localizations_*.dart + key: ${{ runner.os }}-${{ steps.flutter.outputs.CHANNEL }}-dart-${{ hashFiles('**/build.yaml') }} + - name: ๐Ÿ”Œ Generate files + run: | + melos run gen-l10n + melos run gen + + build: + name: Build + needs: ["setup"] + timeout-minutes: ${{ (matrix.target == 'web') && 5 || 10 }} + runs-on: ${{ matrix.os }} + + strategy: + fail-fast: false + matrix: + target: + - web + - appbundle + # - ios + # - macos + # - windows + include: + - target: web + os: ubuntu-latest + flutter-flags: --release + - target: appbundle + os: ubuntu-latest + flutter-flags: --debug --no-tree-shake-icons --no-shrink + # - target: ios + # os: macos-latest + # flutter-flags: --debug --no-tree-shake-icons + # - target: macos + # os: macos-latest + # flutter-flags: --debug --no-tree-shake-icons + # - target: windows + # os: windows-latest + # flutter-flags: --debug --no-tree-shake-icons + + steps: + - name: ๐Ÿ“š Git checkout + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + with: + submodules: recursive + clean: true + persist-credentials: false + set-safe-directory: true + - name: ๐Ÿฆ Set up Flutter + id: flutter + uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 # v2.16.0 + with: + flutter-version-file: pubspec.yaml + cache: true + - name: ๐ŸŒ Disable analytics + run: flutter --disable-analytics + - name: ๐Ÿ“ฆ Install dependencies + uses: bluefireteam/melos-action@6085791af7036f6366c9a4b9d55105c0ef9c6388 # v3 + with: + run-bootstrap: true + - name: โš™๏ธ Cache generated files + uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + with: + path: | + .dart_tool/ + lib/gen/*.gen.dart + lib/src/features/**/*.g.dart + lib/src/features/**/*.freezed.dart + lib/src/utils/*.g.dart + lib/src/utils/*.freezed.dart + lib/src/app/*.gr.dart + lib/src/app/*.gm.dart + lib/src/l10n/app_localizations.dart + lib/src/l10n/app_localizations_*.dart + key: ${{ runner.os }}-${{ steps.flutter.outputs.CHANNEL }}-dart-${{ hashFiles('**/build.yaml') }} + - name: ๐Ÿ”Œ Generate files + run: | + melos run gen-l10n + melos run gen + - name: ๐Ÿ”ง Build + run: | + flutter build ${{ matrix.target }} ${{ matrix.flutter-flags }} + working-directory: packages/app/ + - name: โš™๏ธ Upload build + if: matrix.target == 'web' + uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4 + with: + name: app-${{ matrix.target }}-build + path: "./packages/app/build/" + if-no-files-found: error + + lint: + name: Linting + needs: ["setup"] + timeout-minutes: 5 + runs-on: ubuntu-latest + + steps: + - name: ๐Ÿ“š Git checkout + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + with: + submodules: recursive + clean: true + persist-credentials: false + set-safe-directory: true + - name: ๐Ÿฆ Set up Flutter + id: flutter + uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 # v2.16.0 + with: + flutter-version-file: pubspec.yaml + cache: true + - name: ๐ŸŒ Disable analytics + run: flutter --disable-analytics + - name: ๐Ÿ“ฆ Install dependencies + uses: bluefireteam/melos-action@6085791af7036f6366c9a4b9d55105c0ef9c6388 # v3 + with: + run-bootstrap: true + - name: โš™๏ธ Cache generated files + uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + with: + path: | + .dart_tool/ + lib/src/gen/*.gen.dart + lib/src/features/**/*.g.dart + lib/src/features/**/*.freezed.dart + lib/src/utils/*.g.dart + lib/src/utils/*.freezed.dart + lib/src/app/*.gr.dart + lib/src/app/*.gm.dart + lib/src/l10n/app_localizations.dart + lib/src/l10n/app_localizations_*.dart + key: ${{ runner.os }}-${{ steps.flutter.outputs.CHANNEL }}-dart-${{ hashFiles('**/build.yaml') }} + - name: ๐Ÿ”Œ Generate files + run: | + melos run gen-l10n + melos run gen + - name: ๐Ÿ•ต๏ธ Analyze project source + run: melos analyze --fatal-infos + - name: ๐Ÿ•ต๏ธ Run Custom Lint Rules + run: melos run custom_lint + + test: + name: Testing + needs: ["setup"] + timeout-minutes: 7 + runs-on: ubuntu-latest + + steps: + - name: ๐Ÿ“š Git checkout + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + with: + submodules: recursive + clean: true + persist-credentials: false + set-safe-directory: true + - name: ๐Ÿฆ Set up Flutter + id: flutter + uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 # v2.16.0 + with: + flutter-version-file: pubspec.yaml + cache: true + - name: ๐ŸŒ Disable analytics + run: flutter --disable-analytics + - name: ๐Ÿ“ฆ Install dependencies + uses: bluefireteam/melos-action@6085791af7036f6366c9a4b9d55105c0ef9c6388 # v3 + with: + run-bootstrap: true + - name: โš™๏ธ Cache generated files + uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + with: + path: | + .dart_tool/ + lib/src/gen/*.gen.dart + lib/src/features/**/*.g.dart + lib/src/features/**/*.freezed.dart + lib/src/utils/*.g.dart + lib/src/utils/*.freezed.dart + lib/src/app/*.gr.dart + lib/src/app/*.gm.dart + lib/src/l10n/app_localizations.dart + lib/src/l10n/app_localizations_*.dart + key: ${{ runner.os }}-${{ steps.flutter.outputs.CHANNEL }}-dart-${{ hashFiles('**/build.yaml') }} + - name: ๐Ÿ”Œ Generate files + run: | + melos run gen-l10n + melos run gen + - name: ๐Ÿงช Run tests + run: melos run test + - name: ๐Ÿ“Š Upload code coverage + uses: codecov/codecov-action@e28ff129e5465c2c0dcc6f003fc735cb6ae0c673 # v4.5.0 + with: + token: ${{ secrets.CODECOV_TOKEN }} + files: packages/*/coverage/lcov.info + fail_ci_if_error: true + verbose: true + + format: + name: Formatting + needs: ["setup"] + timeout-minutes: 3 + runs-on: ubuntu-latest + + steps: + - name: ๐Ÿ“š Git checkout + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + with: + submodules: recursive + clean: true + persist-credentials: false + set-safe-directory: true + - name: ๐Ÿฆ Set up Flutter + id: flutter + uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 # v2.16.0 + with: + flutter-version-file: pubspec.yaml + cache: true + - name: ๐ŸŒ Disable analytics + run: flutter --disable-analytics + - name: โœจ Verify formatting + run: melos format --output=none --set-exit-if-changed + + spell-check: + name: Check Spelling + needs: [] + runs-on: ubuntu-latest + + steps: + - name: ๐Ÿ“š Git Checkout + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + with: + submodules: recursive + clean: true + persist-credentials: false + set-safe-directory: true + + - name: ๐Ÿช„ Spell Check + uses: streetsidesoftware/cspell-action@2db9e5fb6d08776bed383767ef4e5dd84650546c # v6.7.1 + with: + files: | + **/*.md + **/*.dart + **/*.yaml + **/*.toml + **/*.json + incremental_files_only: false + + link-check: + name: Check Links + needs: [] + timeout-minutes: 2 + runs-on: ubuntu-latest + + steps: + - name: ๐Ÿช„ Link check + uses: gaurav-nelson/github-action-markdown-link-check@d53a906aa6b22b8979d33bc86170567e619495ec # 1.0.15 + with: + use-quiet-mode: "yes" + use-verbose-mode: "yes" + base-branch: "main" + + markdownlint: + name: Lint Markdown + needs: [] + timeout-minutes: 4 + runs-on: ubuntu-latest + + steps: + - name: ๐Ÿ“š Git Checkout + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + with: + submodules: recursive + clean: true + persist-credentials: false + set-safe-directory: true + - name: ๐Ÿ•ต๏ธ Markdown linting + uses: DavidAnson/markdownlint-cli2-action@b4c9feab76d8025d1e83c653fa3990936df0e6c8 # v16.0.0 + id: markdownlint + with: + fix: true + # Surprisingly, the default is to only lint the project root. + globs: | + **/*.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..afa5c94 --- /dev/null +++ b/.gitignore @@ -0,0 +1,172 @@ +# l10n +/packages/*/lib/src/l10n/app_localizations*.dart + +# Testing +/packages/*/test/.test_optimizer.dart + +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# Flutter/Dart/Pub related +/packages/*/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.packages +.pub-cache/ +.pub/ +build/ +coverage/ +lib/gen/ + +# Generated files +**/*.g.dart +**/*.gr.dart +**/*.gm.dart +**/*.freezed.dart + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json + +# Android Studio will place build artifacts here +/packages/*/android/app/debug +/packages/*/android/app/profile +/packages/*/android/app/release + + +# See https://www.dartlang.org/guides/libraries/private-files + +# Files and directories created by pub +.dart_tool/ +.packages +build/ +# If you're building an application, you may want to check-in your pubspec.lock +# pubspec.lock + +# Directory created by dartdoc +# If you don't generate documentation locally you can remove this line. +**/doc/api/ + +# dotenv environment variables file +.env* +!.env.example + +# Avoid committing generated Javascript files: +*.dart.js +*.info.json # Produced by the --dump-info flag. +*.js # When generated by dart2js. Don't specify *.js if your + # project includes source files written in JavaScript. +*.js_ +*.js.deps +*.js.map + +.flutter-plugins +.flutter-plugins-dependencies + + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +!.vscode/*.code-snippets + +# Local History for Visual Studio Code +.history/ + +# Built Visual Studio Code Extensions +*.vsix + +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# AWS User-specific +.idea/**/aws.xml + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/artifacts +# .idea/compiler.xml +# .idea/jarRepositories.xml +.idea/modules.xml +# .idea/*.iml +# .idea/modules +*.iml +*.ipr +.idea/.name + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# SonarLint plugin +.idea/sonarlint/ + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser diff --git a/.idea/runConfigurations/main_dart.xml b/.idea/runConfigurations/main_dart.xml new file mode 100644 index 0000000..f777efd --- /dev/null +++ b/.idea/runConfigurations/main_dart.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/runConfigurations/melos_bootstrap.xml b/.idea/runConfigurations/melos_bootstrap.xml new file mode 100644 index 0000000..d571530 --- /dev/null +++ b/.idea/runConfigurations/melos_bootstrap.xml @@ -0,0 +1,11 @@ + + + + + diff --git a/.idea/runConfigurations/melos_clean.xml b/.idea/runConfigurations/melos_clean.xml new file mode 100644 index 0000000..f45d436 --- /dev/null +++ b/.idea/runConfigurations/melos_clean.xml @@ -0,0 +1,11 @@ + + + + + diff --git a/.idea/runConfigurations/melos_flutter_run_our_democracy.xml b/.idea/runConfigurations/melos_flutter_run_our_democracy.xml new file mode 100644 index 0000000..84dedbc --- /dev/null +++ b/.idea/runConfigurations/melos_flutter_run_our_democracy.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/runConfigurations/melos_run_build_runner.xml b/.idea/runConfigurations/melos_run_build_runner.xml new file mode 100644 index 0000000..a976571 --- /dev/null +++ b/.idea/runConfigurations/melos_run_build_runner.xml @@ -0,0 +1,11 @@ + + + + + diff --git a/.idea/runConfigurations/melos_run_gen.xml b/.idea/runConfigurations/melos_run_gen.xml new file mode 100644 index 0000000..496824e --- /dev/null +++ b/.idea/runConfigurations/melos_run_gen.xml @@ -0,0 +1,11 @@ + + + + + diff --git a/.idea/runConfigurations/melos_run_gen_l10n.xml b/.idea/runConfigurations/melos_run_gen_l10n.xml new file mode 100644 index 0000000..4b3817c --- /dev/null +++ b/.idea/runConfigurations/melos_run_gen_l10n.xml @@ -0,0 +1,11 @@ + + + + + diff --git a/.idea/runConfigurations/melos_run_lint.xml b/.idea/runConfigurations/melos_run_lint.xml new file mode 100644 index 0000000..f2c1bac --- /dev/null +++ b/.idea/runConfigurations/melos_run_lint.xml @@ -0,0 +1,11 @@ + + + + + diff --git a/.idea/runConfigurations/melos_run_test.xml b/.idea/runConfigurations/melos_run_test.xml new file mode 100644 index 0000000..a4f0c21 --- /dev/null +++ b/.idea/runConfigurations/melos_run_test.xml @@ -0,0 +1,11 @@ + + + + + diff --git a/.markdownlint-cli2.jsonc b/.markdownlint-cli2.jsonc new file mode 100644 index 0000000..e95d9b8 --- /dev/null +++ b/.markdownlint-cli2.jsonc @@ -0,0 +1,6 @@ +{ + "config": { + "line-length": false, // no one cares + "no-emphasis-as-heading": false // to many false positives + } +} diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..bb21c53 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,15 @@ +{ + "recommendations": [ + "dart-code.dart-code", + "dart-code.flutter", + "robert-brunhage.flutter-riverpod-snippets", + "lsaudon.l10nization", + "google.arb-editor", + "redhat.vscode-yaml", + "sndst00m.vscode-native-svg-preview", + "streetsidesoftware.code-spell-checker", + "streetsidesoftware.code-spell-checker-spanish", + "joshbolduc.commitlint", + "blaugold.melos-code" + ] +} diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..6255094 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,16 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Launch app", + "request": "launch", + "type": "dart", + "program": "packages/app/lib/main.dart", + "flutterMode": "debug", + "args": ["--dart-define=FLUTTER_WEB_DEBUG_SHOW_SEMANTICS=true"] + } + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..d66261b --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,139 @@ +{ + // Causes the debug view to automatically appear when a breakpoint is hit. This + // setting is global and not configurable per-language. + "debug.openDebug": "openOnDebugBreak", + + // By default, VS Code will only switch to the Debug Console when you start + // debugging the first time in a session. This setting tells VS Code to always + // switch to the Debug Console when starting a session, so you can see the + // programs output. + "debug.internalConsoleOptions": "openOnSessionStart", + + // Automatically format code on save. + "editor.formatOnSave": true, + "editor.codeActionsOnSave": { + "source.organizeImports": "explicit", + "source.fixAll": "explicit" + }, + + "[dart]": { + // Automatically format code during typing of certain characters + // (like `;` and `}`). + "editor.formatOnType": true, + + // // Draw a guide line at 80 characters, where Dart's formatting will wrap code. + // "editor.rulers": [80], + + // Disables built-in highlighting of words that match your selection. Without + // this, all instances of the selected text will be highlighted, interfering + // with Dart's ability to highlight only exact references to the selected variable. + "editor.selectionHighlight": false, + + // By default, VS Code prevents code completion from popping open when in + // "snippet mode" (editing placeholders in inserted code). Setting this option + // to `false` stops that and allows completion to open as normal, as if you + // weren't in a snippet placeholder. + "editor.suggest.snippetsPreventQuickSuggestions": false, + + // By default, VS Code will pre-select the most recently used item from code + // completion. This is usually not the most relevant item. + // + // "first" will always select top item + // "recentlyUsedByPrefix" will filter the recently used items based on the + // text immediately preceding where completion was invoked. + "editor.suggestSelection": "first", + + // Allows pressing to complete snippets such as `for` even when the + // completion list is not visible. + "editor.tabCompletion": "onlySnippets", + + // By default, VS Code will populate code completion with words found in the + // current file when a language service does not provide its own completions. + // This results in code completion suggesting words when editing comments and + // strings. This setting will prevent that. + "editor.wordBasedSuggestions": "off" + }, + + // Clean up the project root directory by nesting related files. + "explorer.fileNesting.enabled": true, + "explorer.fileNesting.patterns": { + "pubspec.yaml": ".metadata, analysis_options.yaml, pubspec.lock, build.yaml, dartdoc_options.yaml, l10n.yaml, pubspec_overrides.yaml, dart_test.yaml", + "README.*": "*.md", + "*.dart": "${capture}.*.dart, ${capture}_*.dart", + "cspell.json": ".markdownlint*, project_words.txt", + ".flutter-plugins": ".flutter-plugins-dependencies", + "untranslated.json": "*.log", + ".env": ".env.example", + "app.iml": "*.iml" + }, + + // Configure the Yaml extension to add auto-completion for common Flutter files. + "yaml.schemas": { + "https://json.schemastore.org/github-issue-config.json": [ + ".github/ISSUE_TEMPLATE/config.yml" + ], + "https://json.schemastore.org/dart-build": [ + "build.yaml", + "*.build.yaml", + "build.*.yaml" + ] + }, + + // Speed up operations on Windows by reducing file locking & watching over `.dart_tool`. + "files.exclude": { + "**/.git": true, + "**/.svn": true, + "**/.hg": true, + "**/CVS": true, + "**/.DS_Store": true, + "**/Thumbs.db": true, + "**/.dart_tool": true + }, + + // Make L10nization request context for each new l10n key. + "l10nization.haveDescription": true, + + // Configure the Dart extension to be handier. + "dart.renameFilesWithClasses": "prompt", + "dart.previewFlutterUiGuides": true, + + // Make commit messages more consistent. + "commitlint.config.extend.rules": { + "body-leading-blank": [1, "always"], + "body-max-line-length": [2, "always", 72], + "body-case": [1, "always", ["sentence-case"]], + "footer-leading-blank": [1, "always"], + "footer-max-line-length": [2, "always", 72], + "header-max-length": [2, "always", 50], + "scope-case": [2, "always", "lower-case"], + "subject-case": [ + 2, + "never", + ["sentence-case", "start-case", "pascal-case", "upper-case"] + ], + "subject-empty": [2, "never"], + "subject-full-stop": [2, "never", "."], + "type-case": [2, "always", "lower-case"], + "type-empty": [2, "never"], + "type-enum": [ + 2, + "always", + [ + "feat", + "fix", + "docs", + "perf", + "refactor", + "build", + "ci", + "revert", + "style", + "test", + "chore" + ] + ] + }, + + // Pin CI for the current branch to the status bar. + "github-actions.workflows.pinned.workflows": [".github/workflows/ci.yaml"] +} diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..8c48d97 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,128 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "type": "melos", + "script": "gen", + "group": { + "kind": "build", + "isDefault": true + }, + "label": "Dart: run build_runner build", + "detail": "Run a build_runner build.", + "runOptions": { + "runOn": "folderOpen" + }, + "icon": { + "color": "terminal.ansiCyan", + "id": "gear" + }, + "dependsOn": ["Flutter: gen-l10n"] + }, + { + "type": "melos", + "script": "gen:watch", + "group": { + "kind": "build", + "isDefault": true + }, + "label": "Dart: watch build_runner", + "detail": "Continuously run a build_runner build.", + "runOptions": { + "runOn": "folderOpen" + }, + "icon": { + "color": "terminal.ansiCyan", + "id": "gear" + }, + "dependsOn": ["Flutter: gen-l10n"] + }, + { + "type": "dart", + "command": "dart", + "cwd": ".", + "args": ["doc", "."], + "problemMatcher": [], + "group": "none", + "label": "Dart: doc", + "detail": "Generate the documentation.", + "icon": { + "color": "terminal.ansiGreen", + "id": "book" + } + }, + { + "type": "flutter", + "command": "flutter", + "args": ["build", "${input:target}", "--release"], + "problemMatcher": [], + "group": "build", + "label": "Flutter: build", + "detail": "Build a flutter app.", + "icon": { + "color": "terminal.ansiBlue", + "id": "gear" + }, + "options": { + "cwd": "${workspaceFolder}/packages/app" + } + }, + { + "type": "flutter", + "command": "flutter", + "args": ["gen-l10n"], + "problemMatcher": [], + "group": "build", + "label": "Flutter: gen-l10n", + "detail": "Generate the localization files.", + "icon": { + "color": "terminal.ansiYellow", + "id": "comment-discussion" + } + }, + { + "type": "dart", + "command": "dart", + "cwd": ".", + "args": [ + "run", + "very_good_cli:very_good", + "test", + "--coverage", + "--test-randomize-ordering-seed", + "random" + ], + "group": { + "kind": "test", + "isDefault": true + }, + "label": "Very Good Test", + "detail": "Run tests with the very_good_cli.", + "icon": { + "color": "terminal.ansiWhite", + "id": "beaker" + } + } + ], + "inputs": [ + { + "id": "target", + "options": [ + { "label": "Repository", "value": "arr" }, + { "label": "Android APK", "value": "apk" }, + { "label": "Android App Bundle", "value": "appbundle" }, + { "label": "Flutter assets directory", "value": "bundle" }, + { "label": "iOS", "value": "ios" }, + { "label": ".xcframework (iOS)", "value": "ios-framework" }, + { "label": "App Store Bundle", "value": "ipa" }, + { "label": "macOS", "value": "macos" }, + { "label": ".xcframework (macOS)", "value": "macos-framework" }, + { "label": "Webapp bundle", "value": "web" }, + { "label": "Windows", "value": "windows" } + ], + "type": "pickString", + "description": "the target to target", + "default": "web" + } + ] +} diff --git a/README.md b/README.md new file mode 120000 index 0000000..baadb7c --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +./packages/app/README.md \ No newline at end of file diff --git a/cspell.json b/cspell.json new file mode 100644 index 0000000..dc8a7f3 --- /dev/null +++ b/cspell.json @@ -0,0 +1,33 @@ +{ + "version": "0.2", + "$schema": "https://raw.githubusercontent.com/streetsidesoftware/cspell/main/cspell.schema.json", + "dictionaries": [ + "project", + ], + "dictionaryDefinitions": [ + { + "name": "project", + "path": "./project_words.txt", + "description": "Words used in this project.", + "addWords": true + }, + ], + "useGitignore": true, + "globRoot": ".", + "ignorePaths": [ + "project_words.txt" + ], + "features": { + "weighted-suggestions": true + }, + "allowCompoundWords": true, + "caseSensitive": true, + "language": "en-US", + "validateDirectives": true, + "overrides": [ + { + "language": "es,en-US", + "filename": "lib/l10n/arb/app_es.arb" + } + ] +} diff --git a/melos.yaml b/melos.yaml new file mode 100644 index 0000000..67cd520 --- /dev/null +++ b/melos.yaml @@ -0,0 +1,31 @@ +name: "our_democracy" + +packages: + - packages/** + +command: + bootstrap: + enforceLockfile: true + + environment: + flutter: ">=3.4.0 <4.0.0" + + hooks: + post: melos run gen-l10n && melos run gen + +scripts: + custom_lint: + description: run custom lint + exec: dart run custom_lint --fatal-infos + gen-l10n: + description: generate l10n files + exec: flutter gen-l10n + gen: + description: run build_runner + exec: dart run build_runner build --delete-conflicting-outputs + gen:watch: + description: run build_runner + exec: dart run build_runner watch + test: + description: run tests + exec: dart run very_good_cli:very_good test --coverage --test-randomize-ordering-seed random diff --git a/packages/app/.gitignore b/packages/app/.gitignore new file mode 100644 index 0000000..56dec33 --- /dev/null +++ b/packages/app/.gitignore @@ -0,0 +1,171 @@ +# l10n +lib/src/l10n/app_localizations*.dart + +# Testing +test/.test_optimizer.dart + +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.packages +.pub-cache/ +.pub/ +/build/ +coverage/ +lib/gen/ +**/*.g.dart +**/*.gr.dart +**/*.gm.dart +**/*.freezed.dart + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json + +# Android Studio will place build artifacts here +/android/app/debug +/android/app/profile +/android/app/release + + +# See https://www.dartlang.org/guides/libraries/private-files + +# Files and directories created by pub +.dart_tool/ +.packages +build/ +# If you're building an application, you may want to check-in your pubspec.lock +# pubspec.lock + +# Directory created by dartdoc +# If you don't generate documentation locally you can remove this line. +doc/api/ + +# dotenv environment variables file +.env* +!.env.example + +# Avoid committing generated Javascript files: +*.dart.js +*.info.json # Produced by the --dump-info flag. +*.js # When generated by dart2js. Don't specify *.js if your + # project includes source files written in JavaScript. +*.js_ +*.js.deps +*.js.map + +.flutter-plugins +.flutter-plugins-dependencies + + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +!.vscode/*.code-snippets + +# Local History for Visual Studio Code +.history/ + +# Built Visual Studio Code Extensions +*.vsix + +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# AWS User-specific +.idea/**/aws.xml + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/artifacts +# .idea/compiler.xml +# .idea/jarRepositories.xml +.idea/modules.xml +# .idea/*.iml +# .idea/modules +*.iml +*.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# SonarLint plugin +.idea/sonarlint/ + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + diff --git a/packages/app/README.md b/packages/app/README.md new file mode 100644 index 0000000..317af99 --- /dev/null +++ b/packages/app/README.md @@ -0,0 +1,15 @@ +# Our Democracy + +[![Powered by Mason](https://img.shields.io/endpoint?url=https%3A%2F%2Ftinyurl.com%2Fmason-badge)](https://github.com/lishaduck/bricks) +[![CI][ci_badge]][ci_link] +[![style: very good analysis][very_good_analysis_badge]][very_good_analysis_link] +[![codecov][coverage_badge]][coverage_link] + +An application to encourage participation in the American democratic system. + +[ci_badge]: https://github.com/PHS-TSA/our_democracy/actions/workflows/ci.yaml/badge.svg?branch=main +[ci_link]: https://github.com/PHS-TSA/our_democracy/actions/workflows/ci.yaml +[coverage_badge]: https://codecov.io/gh/PHS-TSA/our_democracy/graph/badge.svg?token=YY3YQxKRnF +[coverage_link]: https://codecov.io/gh/PHS-TSA/our_democracy +[very_good_analysis_badge]: https://img.shields.io/badge/style-very_good_analysis-B22C89.svg +[very_good_analysis_link]: https://pub.dev/packages/very_good_analysis diff --git a/packages/app/analysis_options.yaml b/packages/app/analysis_options.yaml new file mode 100644 index 0000000..130f945 --- /dev/null +++ b/packages/app/analysis_options.yaml @@ -0,0 +1,55 @@ +# 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:very_good_analysis/analysis_options.yaml + +analyzer: + exclude: + - "lib/gen/**" + - "lib/src/l10n/app_localizations*.dart" + - "build/**" + - "**/*.g.dart" + - "**/*.gr.dart" + - "**/*.gen.dart" + - "**/*.freezed.dart" + language: + strict-casts: true + strict-inference: true + strict-raw-types: true + errors: + close_sinks: true + plugins: + - custom_lint + +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: + prefer_relative_imports: true + always_use_package_imports: false + discarded_futures: true + lines_longer_than_80_chars: false + avoid_classes_with_only_static_members: true + one_member_abstracts: false + public_member_api_docs: false + no_self_assignments: true + no_wildcard_variable_uses: true + use_build_context_synchronously: true + annotate_redeclares: true + close_sinks: true +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/packages/app/android/.gitignore b/packages/app/android/.gitignore new file mode 100644 index 0000000..6f56801 --- /dev/null +++ b/packages/app/android/.gitignore @@ -0,0 +1,13 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java + +# Remember to never publicly share your keystore. +# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app +key.properties +**/*.keystore +**/*.jks diff --git a/packages/app/android/app/build.gradle b/packages/app/android/app/build.gradle new file mode 100644 index 0000000..b207de0 --- /dev/null +++ b/packages/app/android/app/build.gradle @@ -0,0 +1,67 @@ +plugins { + id "com.android.application" + id "kotlin-android" + id "dev.flutter.flutter-gradle-plugin" +} + +def localProperties = new Properties() +def localPropertiesFile = rootProject.file('local.properties') +if (localPropertiesFile.exists()) { + localPropertiesFile.withReader('UTF-8') { reader -> + localProperties.load(reader) + } +} + +def flutterVersionCode = localProperties.getProperty('flutter.versionCode') +if (flutterVersionCode == null) { + flutterVersionCode = '1' +} + +def flutterVersionName = localProperties.getProperty('flutter.versionName') +if (flutterVersionName == null) { + flutterVersionName = '1.0' +} + +android { + namespace "org.psdr3.our_democracy" + compileSdk flutter.compileSdkVersion + compileSdkVersion 31 + ndkVersion flutter.ndkVersion + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = '1.8' + } + + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } + + defaultConfig { + applicationId "org.psdr3.our_democracy" + // You can update the following values to match your application needs. + // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. + minSdkVersion flutter.minSdkVersion + targetSdkVersion flutter.targetSdkVersion + versionCode flutterVersionCode.toInteger() + versionName flutterVersionName + } + + 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.debug + } + } +} + +flutter { + source '../..' +} + +dependencies {} diff --git a/packages/app/android/app/src/debug/AndroidManifest.xml b/packages/app/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 0000000..399f698 --- /dev/null +++ b/packages/app/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/packages/app/android/app/src/main/AndroidManifest.xml b/packages/app/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..2ae895f --- /dev/null +++ b/packages/app/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/app/android/app/src/main/kotlin/org/psdr3/our/democracy/MainActivity.kt b/packages/app/android/app/src/main/kotlin/org/psdr3/our/democracy/MainActivity.kt new file mode 100644 index 0000000..b07fcd9 --- /dev/null +++ b/packages/app/android/app/src/main/kotlin/org/psdr3/our/democracy/MainActivity.kt @@ -0,0 +1,5 @@ +package org.psdr3.our_democracy + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity: FlutterActivity() diff --git a/packages/app/android/app/src/main/res/drawable-hdpi/splash.png b/packages/app/android/app/src/main/res/drawable-hdpi/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..54cf9c1a2672c68b0fb603e01d7d32cc3f043d8e GIT binary patch literal 8851 zcmc(_D5-QhAYFq}0}LUZf`D|FfOL0*@Rjav0qF+m80iiP2N+SBfsq;* zhPdbVJpaRepU>x<^X9zR`&?_Sz4pGY|K4jVlMvDqVqsyCsH!OFVBS6dyPx7?o>D1@ zPgq#5j8zq6Klo#x6cYJ=*v%b-b=jp&B&NK5N-pqCb@yZD2bQ<({Ba$lzq;S@p7?IM zMAWn{&Yd^#eG1({cNz%bTH=y7=a4&13!C~tAMnnd8@*uP2NP5tAyjrvZOKyw55Nx z7Nfz6-ILr%_N(vL=bQv(q%6pVQ$*vweOa0#({~B z(of1~jOkI&{6ibht@lLRpFhKjbCMVCIz);%zNKQv%_eSr@v;M2xdukYw>GnLhG&1` z$vA3FQ^KVZ_4M^W@(KtP|A@`@;ORZ-fD)oS7_0a+XB`N=&OOiFkM@?g=I7_T-C+Go z!NFyfm6fhsu#uIKkr(&c`1c4@wcdT8UI2>hEJx!v9^CP3Ca;0{1lg+4ax3k5K(J(t z(jx=N>sPza@ye>W)Y!k` zlI)gREN?a_XuoT{@z}7^e-9;YU#t#(Y&S zo>RUnY_*>)$n6Pxd?4+0JMCrQ2zFdZvv-w*NhVAD`W*a{y{oJ9EGpcLOP?5(F_RB! z94lQp4hOTcMhOZDRs3C0>t}ZN;2MaE@O%Al^$ol+%iNPY#BR5 zv*WGhH;d+=R#wpBIKTjH zf`^;iqZu%e%vx=iYo(Vs|N~yA?@?~k_VL-r>=)50l=U0W;=DvJK`CA8LkZT zoEpk`NqgCG1&p#Q=A_Xlw%HbgMQm?&#E)0%O-5hdn1=?wIJcz2^4HhbFP<@A@#*(Trwjz^PPabpWPMLav5;c7k{OD!ZGS!$7E+zZNA@paBUhT_0!UG&hf}L;v!|9yec6Q@|$0j>s|3dPVMI~Nu zn<&J9R0mnRaRV904D*Oww*5%qX2`#Y`pp9PpIS^7;bM8P*@e5+;GFpVaK^2Trj#J# zINv+gh3fi6U0%GyUqs0|_<0v}H+w`bluw_q|7MtNpTCKGvxsNeZg?o);6&PRvsM2Y z7n9a;-F{J!>(2sluX!|g?%Ca4@I*0#fmPXRzsiT}fj%QTJlhGrvO^{<-JTHgb;2rD z?M(o&j#cPOJG*{Ew6u=4_L-h! zEN3hzS=p~Y)O!9pxLn|17N>05Bh{v#La$9qDd^%cHxkc4(b(J&FWB73C4Jm(piHNyU z**f((s2uqLWfC!Nlc9_7$t#+lKeJOt=Nk!;C%_KDO$qAYH8r9&@jQvisi`U2KTdRe zf|}{58=lZ-Ddj|=Umqe6C*Ix|DsbMMN%hli{fW00uz0dBGHGcyA2tV*0{G&UFjUuC z=sNf;d`m#mEO67-d;Kz_>^l18=)t{NxCZw4(C3YI22+g?glezgF#qi0=$>R5p@+d|e03YXN z66g51xL*4!X1FgZGy>UcU@Q6AsdG8hS0RA6h}&?$ed<23#O5vidVC}2RF~Hd&-tez zQr-*k4nZ7bDu#$hgc@Xjxk6d1#FytZm;(Mpcz#SG_6-yA$rzjx^4W=g5$gHnlcper2rf~4jqXYT@Q+AF2ZzT5kpK5tvd7kfg7~1f?l5kQXN#J3mZG ziXJbbD+%Y^E7*T0kgw-|b5leurDZ23c+>bQ5z#QnhTp;7`EQALxskW3VB7yI|I5io z(7gTl($BJqk%eF@?IDFjkq-(ah=om4rhqHWvL$HHg|Mu$g8lq@r3%ggNJ`y%qQ37j z(S^S9Sez)BQj8)h%_VfV3`HE&ZeAs5N=J>vl*Z76^8IVnzrZV}aN{ET+yqtP8&~l_ z^nGa3&7BQ84hPAirLLaDc3g%pWx;T%8RHYt@F)wIuXv=dPZ#sLU-scZ9)F2fvwD02 zHA6}zWUp3cu`oS=xq&Q1MQ%j!q{syN$f?x{*DOl9{t)!7U`@t{;i!N8a% zT>9SW4S*Y_Cv<-Irco9SLwY*<0t@7t zs>BGbXU|v?;ZTwO_ycjyK!g-Cp=rko^78|Ui+4K>x)z4a46A*ElFSfZtF5W2 ztT*XAHE}kOhUw;fqtX1~jPfVkRg9qm0sQ?TPqS=SSO0u6TOLNR8`0e$N9%G{IkPnt zYjef_KMtPlVQO;?i?Wb@je=);AaJ(H)QW`t(R3qG0V<=s+*A${AYD;ZU(6H1lb%^! z>lCnsJtSIXTM)2Q{%={#`#$}wdE^)=P~X5$CmrQtM{m?;7ChmE+gGe}p<~KV}9C_r|ta5C2ay~((rI8bvWVyA19)XHM5@!Tzqqm%a zs>ZAA;J2Xysbkx!FX3rEsB9L6%T&y-*x`;jc;^xy!=(T5jf|uOoGhu;JGQT`&NY3keKvJBI?NuaMTwA%UMt{*$0etPq| z3JiBPscdoyh$=fS9arzDD7WRMND`IBxrrWburp%}xHrs}NID=)mcltMqYi~y&dbvU z`(2DEUDxgz0K092PO@~%Z_~8ZKx@qff>94Llz2=F8~<#Sl&YU@^esqP{awSp&G#c) z=q@BKmmw@m^NzAvFoBl9KfuMyOu$p&lgNR5I}m_s{2oC%0TI7t zkQi(-7(JO%;xe;rtgj~#78Zu*3Og>2UEKti*Hk@Q1Z1tiVlo%%K~yCJ{nk%km_fR+ zE^E>7Gb$RECcG%K9e2EO7*o^=m9yO!G5~Ce_FCX&nYYja8hHX0_4xB6nZegGLsQOs zYSM;xNpWXt(Xk*w76Xg$zS>%K`tw?Bum`&j3*^DctUvhaA_?+;h#sDPDLh8!;|P*s zgHq?qSC!)8w*Ws);9eJW!J*tMoisF=)(3BIhh|elWMuqlks3lnKoH1UlmU48{ni)P zn5O;f-mc`d9!YxOkz0!a(>w`M$bQxz$Nbo}N9gj6d;*nf%8rq)M&9MdiLbiTXo9g> z73+&W?PjJ_Y)oj29U#(9Vf|4rmeJvNW*xRy8Sj2NC3Adz&2xwkE?!P(7_I9<(fHBX zSbo4^Z&$O8DSMYvv;awh{+RN6E^^-mnqyv3tS>6X{o8BYv@~4}3Qcl2@uSdZj`5CQ zGC-WOI~85DqrVC%3z>HNadF3Z#aMLysk?-cpyKc0EPOEa@(-n09@Y>LWY4WkGXUDpjH1AibY zTI3c#PcJklUn1U|ZfF!fS(A@=3XeO7d^TI^-uV;-G@@~HGmor~H*OOAR%`jH10U`X zS*H=O7IqF0u+lEDwktxLKJjfeqH`Q~OOo`q%z2lBYeZ9z38n}m&slJ&(79!`^)c^A zOnTGN+u>`uMBb1Q#R`D_et>Zy<)sm~0|)?rUKvh0)#7|y z3*A{rJsMlETewS)A?m+AH{Sa9x#w&R8SUPLn z-`HUzt(@Q6EtP}No5biAg-p)VrdBstMP~9iDffyPC}xM6Rza+wXBlR>JuswB>@*dz z1(NU-dqQ2+>!Yn^ekSIXP|VlyJSHk6YGb!TmqrU%*m9?^xezTZJIdsXJmExbGid^J z_H15Zm+H|_v7+rs2kS*$Y7FtcogjYdR?f`_>tX({r>lm=%iZ+yKk~uzL4NE z)|8OQ zSz8`N1n+1_xAj`Re#CE6r#7PyKNV9HM%XK`Uy$p5fAX{h(gQ}rf*f66aabSY2YK@% zq6!-H_6R~m3H@)zW{59M&m8$XIFr2c%*dLDb*wK!^YlxmaNxcMG(D})WA5H0QmlF? zibUlu_&C%x;7+f14on-Iv>yc<<`z7AS^Z3Kvph)YZ>{Zx13dp5B{Kk==rF7-{xsp8 z#t?a(isf-ypf32x8vpZdYbL4(qt`xWL^=j*n09JArGtwD7Ryphu?Xul={cTQkQkpQ z`|w`iQ8NElom}@Do9dSTu-?u>WMP(ok(a$1q#r%lu^CMME%S=y7c})jp1|D|(?}EZ z7t(R$>)D|FllHQP$u1OSvd6_ap0R86eqC1w0xV#%gn>4Z8=RHdGn3%pV67f=SR*fd zA>_Ez^EN?H=Ab#X5u!=gg}=q-mr=8hhz?*xh#W z;#q39YxkocVyV*3PAA$gxhv^c%SSbm*R`$T?ltZ05??8~G znV{Q(!k%?iRCXl*E>=vEETu|g3=KTT3ZCh)aoiq;jw5KNsPvQDWSds^-a*0nS+8-( z_a)v^d~I-&Jt9T_*IjOgQB81syqcT-Uiq^{*njUrqa52O5xihnMq1sJKwr+o+3bk0 z)1FAGW~{rdDY1kGcDFG1I$LY!PW@Ym6=+=um-63_-+oMJBuFeTY%hn;{R*)?csssy{|D;lOF}p7EAr z_asLB;ro0ac6D?Qy|G7~5 zq^<5(0fMhXYrac-yfXo)#v|=-Dt-m~)a@aE|4 zqMRYy3C(1V@wwphN|rvY{wCZz16h-V^|}OM@4>@EH$;V#y=EVa+hb~>hnt($TA(-M zrW2|ras53pE~H7@xx0Omn8VR%zqjN`FP&9v%NNO=M`q>w7M}%vKY@>HpfPk11wI-% zE|!}EO&8XzWD5yKzh`%;a3D*AQ8;ENPn|M8dmfo4vE9JOsnRch&4*1}7|YwZnZ%*O zX!Ff4sBjO7u(0Dz?`|so29C^>u(H36ejP9_UFpDoEZ{O_|pJH;w8d!M%} z^S1TkZK%l0yDFjJ;^hxIndJRotgLn*kmqEnK5pbFq!4387X8K>v)rwwpaW1L@2!Wz zS3^(wva!s>dyS8d58Bk#)q|jn1%lS1&s8EPG2%h*hw&3$XSajVkR&~Ves^eJXU&Ba zjo{j(ckX1T{EOeLNLeyi(g5dgB^~6-KC>W4A&0smNXoRasn#zdj1gh&{swhBrE_r2NA@zIe7NJKRey40qpS)D#`>^uXN zGacbj-t{?vUi}MvMaAvYAYJhZ>tR99@1zGi9fveARf)v^d{m=?Bu>F zkGoA1zSRi=LtK@3(=!2V79hweJsljYx4zzQ_^G~zt5hx|3-7p$jN82p9uzcI$uDq! z$$54YMb}pmW>OsKrLTYf~@eh&9yMUwi>7TmeV6wI&OcTowEf1O?;6O z_mUzLWoV7t=OJ6$^_leYl0W)Y6IuHJc6d1sJzX|=L~r>lyAP7MjN^eMw0)cA`XL8f zON~hl@n)lZl-#drWEWvpX(E}trB@RN# zlAPWDTwnSWGgux^#L0!#g3mVr&fP)x53JxBDs3*+CV6x++~1f4yt4-&ZpwE&z>1dm zA_NskjJ%Y%jb#eUMk0|#S=3KrS181dbvH83g?7UHt;KAF^`Ggz7EZbIP;ZU zN(0O*r~QiON|+5AaC|TLf(fyG*Bh_x?NZ3*&*;mMIdhi2@I|6T!B?JZ8u*=m2Y4XGe$H7;W&+U~dgAWm6f# zCOuPh6zA!~1Ez3Qw(=RP@xXh?oP*M>9wQ}SG@C*{HTs!wHn!jIydr>~BN1X*`BYKT zyirAs;(Yq0>87YVa+9o8AE2iicXbn4+kKFuCi1`|qKb21py zl>A0NdpCfgT3qX&2!G{x}E?tUG+X!CyvURG(s?1#UHs; z0K`~f1iP>-2ZJvb2f~a;W>kJLL$Z#EqOgVo(zx-!1gn5^9l82GnFa9D9$XV*yuimd zt1%s;6)BG2zWV7Zb%t4NfIxqs^)}@8b~`Hd(LrK`Cg*&GO@9U~vy${!pZ>kbq)8&~ zm)rsUCQE0H4}9w;uIl~I$ixrDchm@K{+s!W|B?AEz)&eX#Dou?${|vRtl6K(rgIhv zR#Qz^>+KlVV47Y$TVsPU{+7IaZ*3hVY*IA<3?RaFBU1-!8lJGUfZwQda?SK**q^98 z-k^6^a`=?!p#$JnRL8aGLcZ3&Yt&t?fjP}-n=yY#n}~u?hm<$<2Lmd zLgvtcsSExJM|Yl}NW@U#6Cv*=Z8>J&?U$R;MAcUxK3@+K4LK|8=K%ARKA2Kh-le_1 zM|JA!%=&#?gAn)JT}HV{x83Mt-_B=xujLybLEs>O$@?yckYbvq`ygG8T}|)gPYIpQ zWXqx>Fqic1)rIpYZbx}Wx^MA>91_k5fOqS=midXk;9bN|p!#2Q|1-N*2ot}{6@ge8 z(R^(6R|sk0H}E<56%{;MWJ8%0{6Jw)|w(kbG z$hpqQR_S4GMA`W?Gemm6%D2!ZY@c)PeiuweR?8B+1$XkYF58lfX^G#LAHoCb;ygb3UKDLN|{+J4Z?tIEane*6n~P37WwNXcn|RlEy^ zlIKIxXf9)II9>_u{1gD7w?ks-JBn6XoezPyL!lp9pDos|J(%?^)_d{~k6);uC6#bU zhteTgl2;#QMrlxIa|?Fu6hLV=0Sn6k<(jN-S-1BQKF)o<$>SSpd_3y-R%dkW6{5JY|R-6Mkll7#3)#8E$ecD+Rb~Q2P z2UtV$p%J1ppl20*#CSo=ov^A|W#wezo)#0P5)czTc>V`w*W<0lz+>r%%u@539QP}E z%rMQ5#$eg{d{<;6^Ee7J)!CcA3OK;-;7)EfL(LuBvdPJfMi%lbQOHo zM}k^w*_g=MHM&>l&iEq8_`jCh+K=?I;nIk@wntpoxV#B4|L6u0I5itxxO-Pm6BEr0 z8A<})jP7-VFoXPk-itStjPY32lsgXnfx1`p8a$#OgvwIRY{k|}4~$bT2!a6U3q5C( zTSPt$xz2b>({<;4k6hdVj(4fmL`sv;cq1%m6~FF;x~EHO;q2hYp8<|;Q@Lt>`Qfc) zon*ozY0Zld0%nGnjk^1-GL7nT&CxohpQD)q*<0$`$&twa@tzdBdtSxPaBaQQrXZnh zO2x)&6M8M_e!+=%AXlDhWd#dyhrawW{m?A=c$Dr(I3J_L3mKkux2Z89f#%A1*pPzI-9s*>e)cSvYdgA{-tZ^H*h1p$3_nkvA QhfT0l6*Uza^LFp8x;= literal 0 HcmV?d00001 diff --git a/packages/app/android/app/src/main/res/drawable-mdpi/splash.png b/packages/app/android/app/src/main/res/drawable-mdpi/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..5cdb723a23c808f8f6d20ffac81191a725b9a60f GIT binary patch literal 5128 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 literal 0 HcmV?d00001 diff --git a/packages/app/android/app/src/main/res/drawable-night-v21/background.png b/packages/app/android/app/src/main/res/drawable-night-v21/background.png new file mode 100644 index 0000000000000000000000000000000000000000..74d41178b8e444eb589ccc4eed27e42cdf749175 GIT binary patch literal 69 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1SBVv2j2ryJf1F&Ar*|tf@K0M3=H=eGI_-o R^a8~hJYD@<);T3K0RV|P4Nw38 literal 0 HcmV?d00001 diff --git a/packages/app/android/app/src/main/res/drawable-night-v21/launch_background.xml b/packages/app/android/app/src/main/res/drawable-night-v21/launch_background.xml new file mode 100644 index 0000000..3cc4948 --- /dev/null +++ b/packages/app/android/app/src/main/res/drawable-night-v21/launch_background.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/packages/app/android/app/src/main/res/drawable-night/background.png b/packages/app/android/app/src/main/res/drawable-night/background.png new file mode 100644 index 0000000000000000000000000000000000000000..74d41178b8e444eb589ccc4eed27e42cdf749175 GIT binary patch literal 69 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1SBVv2j2ryJf1F&Ar*|tf@K0M3=H=eGI_-o R^a8~hJYD@<);T3K0RV|P4Nw38 literal 0 HcmV?d00001 diff --git a/packages/app/android/app/src/main/res/drawable-night/launch_background.xml b/packages/app/android/app/src/main/res/drawable-night/launch_background.xml new file mode 100644 index 0000000..3cc4948 --- /dev/null +++ b/packages/app/android/app/src/main/res/drawable-night/launch_background.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/packages/app/android/app/src/main/res/drawable-v21/background.png b/packages/app/android/app/src/main/res/drawable-v21/background.png new file mode 100644 index 0000000000000000000000000000000000000000..f3967ffd046abdb68883d384f85e6862a964fc9c GIT binary patch literal 69 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1SBVv2j2ryJf1F&Ar*|t4`-ccV_+;}*m5G% R#S19T;OXk;vd$@?2>`dV4_E*I literal 0 HcmV?d00001 diff --git a/packages/app/android/app/src/main/res/drawable-v21/launch_background.xml b/packages/app/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 0000000..3cc4948 --- /dev/null +++ b/packages/app/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/packages/app/android/app/src/main/res/drawable-xhdpi/splash.png b/packages/app/android/app/src/main/res/drawable-xhdpi/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..757c555c3a1fb58a79627678be3048ffd4d6fb70 GIT binary patch literal 10015 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 LOQBl+eaQa-XF=y= literal 0 HcmV?d00001 diff --git a/packages/app/android/app/src/main/res/drawable-xxhdpi/splash.png b/packages/app/android/app/src/main/res/drawable-xxhdpi/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..68d99eea1eb2d21466f229b510cbf003d73c3dfe GIT binary patch literal 17375 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%0DOved?z5i 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 literal 0 HcmV?d00001 diff --git a/packages/app/android/app/src/main/res/drawable/background.png b/packages/app/android/app/src/main/res/drawable/background.png new file mode 100644 index 0000000000000000000000000000000000000000..f3967ffd046abdb68883d384f85e6862a964fc9c GIT binary patch literal 69 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1SBVv2j2ryJf1F&Ar*|t4`-ccV_+;}*m5G% R#S19T;OXk;vd$@?2>`dV4_E*I literal 0 HcmV?d00001 diff --git a/packages/app/android/app/src/main/res/drawable/launch_background.xml b/packages/app/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 0000000..3cc4948 --- /dev/null +++ b/packages/app/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/packages/app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/packages/app/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/packages/app/android/app/src/main/res/mipmap-hdpi/launcher_icon.png b/packages/app/android/app/src/main/res/mipmap-hdpi/launcher_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..0287dc7a04fee4eb57ce77b6e47d77c1e4fa793c GIT binary patch literal 3112 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 P00000NkvXXu0mjfYMt4Z literal 0 HcmV?d00001 diff --git a/packages/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/packages/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..09d4391482be68e9e4a07fab769b5de337d16eb1 GIT binary patch literal 721 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD3?#3*wSy!iOI#yLg7ec#$`gxH85~pclTsBt za}(23gHjVyDhp4h+5i=O3-AeX1=1l$e`s#|#^}+&7(N@w0CIr{$Oe+Uk^K-ZP~83C zcc@hG6rikF&NPT(23>y!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/packages/app/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png b/packages/app/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d07b1a4ec28b5de6aa96abd5204419e96184e0bb GIT binary patch literal 4383 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 literal 0 HcmV?d00001 diff --git a/packages/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/packages/app/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/packages/app/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png b/packages/app/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..bfe1117cf9a09f37d5f9110bcaa35b09f9adbf96 GIT binary patch literal 6808 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 literal 0 HcmV?d00001 diff --git a/packages/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/packages/app/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/packages/app/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png b/packages/app/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..7c1128fc21ec0741c2040d8b91d5cfe1d59c7bc4 GIT binary patch literal 8854 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 literal 0 HcmV?d00001 diff --git a/packages/app/android/app/src/main/res/values-night-v31/styles.xml b/packages/app/android/app/src/main/res/values-night-v31/styles.xml new file mode 100644 index 0000000..c846a66 --- /dev/null +++ b/packages/app/android/app/src/main/res/values-night-v31/styles.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/packages/app/android/app/src/main/res/values-night/styles.xml b/packages/app/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 0000000..3c4a1fe --- /dev/null +++ b/packages/app/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/packages/app/android/app/src/main/res/values-v31/styles.xml b/packages/app/android/app/src/main/res/values-v31/styles.xml new file mode 100644 index 0000000..956b40b --- /dev/null +++ b/packages/app/android/app/src/main/res/values-v31/styles.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/packages/app/android/app/src/main/res/values/styles.xml b/packages/app/android/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..847e1be --- /dev/null +++ b/packages/app/android/app/src/main/res/values/styles.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/packages/app/android/app/src/profile/AndroidManifest.xml b/packages/app/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 0000000..399f698 --- /dev/null +++ b/packages/app/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/packages/app/android/build.gradle b/packages/app/android/build.gradle new file mode 100644 index 0000000..bc157bd --- /dev/null +++ b/packages/app/android/build.gradle @@ -0,0 +1,18 @@ +allprojects { + repositories { + google() + mavenCentral() + } +} + +rootProject.buildDir = '../build' +subprojects { + project.buildDir = "${rootProject.buildDir}/${project.name}" +} +subprojects { + project.evaluationDependsOn(':app') +} + +tasks.register("clean", Delete) { + delete rootProject.buildDir +} diff --git a/packages/app/android/gradle.properties b/packages/app/android/gradle.properties new file mode 100644 index 0000000..598d13f --- /dev/null +++ b/packages/app/android/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.jvmargs=-Xmx4G +android.useAndroidX=true +android.enableJetifier=true diff --git a/packages/app/android/gradle/wrapper/gradle-wrapper.properties b/packages/app/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..e1ca574 --- /dev/null +++ b/packages/app/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-7.6.3-all.zip diff --git a/packages/app/android/settings.gradle b/packages/app/android/settings.gradle new file mode 100644 index 0000000..1d6d19b --- /dev/null +++ b/packages/app/android/settings.gradle @@ -0,0 +1,26 @@ +pluginManagement { + def flutterSdkPath = { + def properties = new Properties() + file("local.properties").withInputStream { properties.load(it) } + def flutterSdkPath = properties.getProperty("flutter.sdk") + assert flutterSdkPath != null, "flutter.sdk not set in local.properties" + return flutterSdkPath + } + settings.ext.flutterSdkPath = flutterSdkPath() + + includeBuild("${settings.ext.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 "7.3.0" apply false + id "org.jetbrains.kotlin.android" version "1.7.10" apply false +} + +include ":app" diff --git a/packages/app/assets/icons/logo.png b/packages/app/assets/icons/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e5df268a8fb3da9c592a85dba972db5809c2773e GIT binary patch literal 21527 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 + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 12.0 + + diff --git a/packages/app/ios/Flutter/Debug.xcconfig b/packages/app/ios/Flutter/Debug.xcconfig new file mode 100644 index 0000000..ec97fc6 --- /dev/null +++ b/packages/app/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/packages/app/ios/Flutter/Release.xcconfig b/packages/app/ios/Flutter/Release.xcconfig new file mode 100644 index 0000000..c4855bf --- /dev/null +++ b/packages/app/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/packages/app/ios/Podfile b/packages/app/ios/Podfile new file mode 100644 index 0000000..d97f17e --- /dev/null +++ b/packages/app/ios/Podfile @@ -0,0 +1,44 @@ +# Uncomment this line to define a global platform for your project +# platform :ios, '12.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! + use_modular_headers! + + 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/packages/app/ios/Runner.xcodeproj/project.pbxproj b/packages/app/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 0000000..beb7101 --- /dev/null +++ b/packages/app/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,616 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.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 */ + 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 = ""; }; + 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 = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 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 = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 331C8082294A63A400263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + 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 */, + ); + 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 */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + ); + path = Runner; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C8080294A63A400263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + 331C807D294A63A400263BE5 /* Sources */, + 331C807F294A63A400263BE5 /* Resources */, + ); + 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 = ( + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + ); + 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 */ + 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"; + }; +/* 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 */, + ); + 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 = 12.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; + 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 = org.psdr3.our_democracy; + 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; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = org.psdr3.our_democracy.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; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = org.psdr3.our_democracy.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; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = org.psdr3.our_democracy.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 = AppIcon; + 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 = 12.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 = AppIcon; + 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 = 12.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; + 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 = org.psdr3.our_democracy; + 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; + 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 = org.psdr3.our_democracy; + 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/packages/app/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/packages/app/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/packages/app/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/packages/app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/packages/app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/packages/app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..f9b0d7c --- /dev/null +++ b/packages/app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/packages/app/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/app/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 0000000..8e3ca5d --- /dev/null +++ b/packages/app/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/app/ios/Runner.xcworkspace/contents.xcworkspacedata b/packages/app/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..1d526a1 --- /dev/null +++ b/packages/app/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/packages/app/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/app/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/packages/app/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/packages/app/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/app/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..f9b0d7c --- /dev/null +++ b/packages/app/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/packages/app/ios/Runner/AppDelegate.swift b/packages/app/ios/Runner/AppDelegate.swift new file mode 100644 index 0000000..70693e4 --- /dev/null +++ b/packages/app/ios/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import UIKit +import Flutter + +@UIApplicationMain +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self) + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..d36b1fa --- /dev/null +++ b/packages/app/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/packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..ef77144c03fd3c284e2c306eaa96eb3255f8ef7c GIT binary patch literal 75206 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

@yMwBydABZQ^-iZB(=C!=dJHRB73Ee&XGiHk@ z8gS(FqB4rk(5>ii*!XhbW=-`%3bcw+6VkW|$$RpNE9}s9YR;-|3g7Z<;bDACjzE!T zj(~fgtb$2Yh_D30`X;dP0F!I`BCrx=soj@9nOxz?H0I+J)>FY2rpF#bEhTc#`siuo znrP9}*0gp;j7tWJgIQ-GJ}a&xY+@}8?w314^c@)*f1b*8ASH+VK71~s=bT#lZ&gn* zyjKOl^)jnwPxID_NJN1*C(tE^L;3#Pl{JOW?4jZ^q$?p%Fly5Z)FmFNVz0GaYwI*u}VKMhQ%Q);w(j8;^c-dsgpFj)pLw!i~Q z$)RwKiD#Een4wVGNG!xRJo%CGD@wi`1GN^OqInv z<`zy0;XEFxS;k{Y>&QNQ^Z2Zaj!r5^${w%Yk7!&0`Q6Eu?-p55Bil|eN`1l8pEG+; zs8j3=z6N`bbhAu@TbF>2353t9<}Auxf!~L%+LP+6bEVnk5OSjlPxTLLkNA?#e7rj$ zl6;9mDBTY~q8Ek!-A7SLC@_!!bCwI3%9FVf+|UIxx(P&~B;%C%ne-wibBkl-LZmKH z^JwC)QM(_?n7q3D@$gA_LLDi)bV0VQdg(LUTk)P~R z-uPF)dFTnt{H2^$Uabpc3#FW4)5=Tsf_G0i##t2F&8)~4$F+_lFu&pB5jvf+f3=1+ zNYwrAT`+h4k7d~DN8_jJ>;~~-$JYli?4!|(rswo<*2i(KIqApAK{0$O)&r$0>zpS= zZw0D9eu*AVyKsajZ4`keQ2)REAoK0-Ng&rXF0(bf4;{ZXqm)UkWzmMqxh5$3Q&+01{~u?IE7SSh*AFmW!Ys;UZ)$A*L)bnrRZ6QPkkHxM@1UJ$j3_S@S8?wH68Le?sbNn{ z4AQv(UQCpZ=)V*Ubr6gU0DY^Orjt__DuP5N2h|w zdGqkyxKLVr(z_c@tWEDT*NEV(`8?p{U#6}(ah#nzIK~YgO?nB$CLeEo z^$K?ObKpCpH~%JXto9r|55*E*xA}5le%1~@e10`g0`WnJX6UJ-kaZS1-Q!hrR2({g z*?B?cBceXi3zi2%8B{57o_Qj%f8Wq6E^cq&61}=Hh6`M+^D^5DP8v{I?`eL)E1ZLL zI&zUMPJr{y4*h$Mm%ITq84K^4&M;GeYDXBw8g_2e>&g{fzqqXQ(9+p2iyaSGN1aQ-84Hq46}*upuR*2LsbygFp+z-qc?T*mSO zI-pVgeY46Mi-iH9`A3UXH+_8F0K;Azb^EyP4h@FtVx|*9B8wKfq+qg5Rf3QvpjG3m zBk)*0x`^`+lJybm7*J7cNKOHz_~& z=*#jwou!<%30dHX2HCIbYHE!opRs-Cd^e&91u4`E zxQCuRT@;1HltCuDP6Yb&RGQ&QnpdA_gXcPrvJX`O8T9E(BeDPI+JTwrW2-5=%}1iF z%Wn2c{4W%<8Xb$!HBxY7ZI;syni%X|qBrwdBO2E9%TtkuexK5Aoh#G5IT#0GFM4ku zAJFGr$&LPGn-k##U~B=ai*^?e?nZI{9HT)zmZuHqG#Nf{g*^%8ti|#z*0hw9uMX~4 z|E+=fV+2tuNC)vPjUmk`yq9Hj8Ivr^v2;nF0{R3ioBBAr7vUg zG?q)r1!OLysehRo3sgBmM@Pji4&|v1++)yNj{GZHL0*=7oArsd4#qJ+o^W|#cqH%< zn5Tm^8bh#Xq$6mI<8dqyTRbOw>6M}|FdjkEgnLxB_MFc|ZOSJARCEsL$IUVfanMd+WBqWFVijZ|e(QewXglv#G9DB&5EAO-JWQ#jT|MU=Bws;( z*E2vtG;rK-aNqy5a64iDMxI$_C1>*EaEk#O?iM6UeDNoGKn;`k?B9Cf;^OjdKKu;= zKS0Jqx8rDC+Ik3HTl5v(SR&Mm*=p1+CvV*%;Sw?aFd0IwvvzI$Vn^nB=gb+8niV z0-5FDe_HMukBJ~Tls?zkb$Yu8&&5X4$a*P~&Qup5_bFU0h!hdoML+08ntD$<|4i{;- z6WgD#Wz9BkwZI3x*g_gwtZJggBWr>tBLToFH=*wY@ors%UH{+&vKGNn$% z(?ZtWTD-@$`y&fA>QPj1|AN?MsOC!>Y)SKkw}e`cYV++jLX zid&ugvl=X183UQpnA?++#4sG%j&ct?X;Q^h%5=G^uAKk%p3H69_U{&khljnJ_Qnc8 zDjbkS%ow0RDs~+dhmlh(ow5>jM_BK|d4L9WVJ~V+7q`ma%MIApqwL8I6DOs;tN1GR za3p6LWyiHvNBC|<{lCImtb<4J`G9|e=qx3tcAH~w94O-lof zMysf#>lFxNzkrj^<`WL&f>J?Lh)surY|>A8rh3+v2XkRwr-_33I2xp{Nq+e&d z@3rzZSdGo}j>){DPVL4)iV$j!+CkiTQOcgQ9~v1Y@py^GT#ofo2l?5p?viiv2!=Ge z6um0rhFgw~EaK4Yz3qEm??B{y9nY0 z#~usoLl26f5v_&Oq^zmNd;Mt2Dz*TL18jvY>M$D>6%#0}3LyOb-iiZU9Vb+(oMOb( zjDtVYj#DbW?B3obiQp3=VCmLN4k46-60(r{ZaQ!~$kbxrGfdI`Td6u|Z=)QGLcP;d zP^KWif+Hi2<7xiy0IG)kpq;;xzGO@ahH?X zF#YtP(?4Zx#%QKxT*TNfy(eag%A%-yF?=j34=zxP(X0N0qvnzz;WKs~rtE{HlG%FS zn_IF8tLg$UhYre@`=4{MC!T`l)7w9dn6 znfAtq@BJMecf!tIKtS76q6xSghDfOp4eo`LIbxz0yiiaeHHj*TV&kk%5tunRaTL)v z`>QQrRu`stz(;MLvB6VlQmBXFKqV_+2q|s@2iY~SB<58luhZ7;(XaEv*$JB>;9{CG zX&|zu*R>in$|rbC-#n7TTv#7>Mnhch*%N)hgG)4jYz8=Uih9cT#uzcTgFZZw3s5}#1fQD;eLhZ} zZ)FTi8^jM#7A;E1@fo?k)VrB+a|-Uq$*TVeUbjH~M(|}sGI~Qc7kM6w(LM9%HfPW| zpc8{eqi)kmMx5ydiUO|b@AwvJpl9H8I zgDIETDjb~0DQzq8;;Eh*I5VSw;iLD0tNTPuE4H7DeM5|ZpJJDS3S@Tcsn{>=K4S22 zYQ&j~1^Dzo51-AzlDuIual+ym|6gA439nwtXbRo?`)__jPHtd+-sza>7fF*{v*5*! z67BPc+IEFYNWEdG8vv_!7k*wP!2J@itOoARB+%j9lArzstM`R$yl<;jk5M^UBqsI5 zih?c(6me0a4s@rnWWHFoZ1&K25B^XVAWrw}y}F3gLB6aAW`sV#u}GMSiD{#8r>{3d z3FJ6rr|LmpnG!&i1?AD5wq#rKSxTGTnhIzhw+-G}(pUG@l#9yQ`2%xI$qH)B?pM_Rv&V2iA#)yeWFQ^9u70Cd-8b$SA zu?Mt5Id^k6+i>w_;Gw--5A%ycdS=w2Vp0qMOC(%ZP`%2zx{dv&tm3j5-|` zpUXnncRG9A!mEe>&&Y`!Q~Xmw``Edv{SWex-Ewy%6z`x2cuVU^rfX&f7t1m}zfj;- zI$a_{qmPaYdZYJ|c)T!!ZVp_>E>CP}jR=4md-?^$u9H$}OzpEvmJ4`f^*GO^LXq{( z=r54BVqMR4eg4K4TMvS_tCIaI3un++9#N$D3P6u`Z%;^JpT)}^c~2WpVOdTcMd|U7 z9~wdGUe^Rn8GaqU>sbx`_+eUUK0J<8IrZPL4ndm%Gpd;cf$CN!nWHt&R$NK8ayF#S z;lXuvw%B`aX*_^W#!QC};)`)@Y zenxpRP%9rm71Xbrl(d&xzBcZNQ~?PSrvXOm zDflP9fn!t^+roNSieUU5l_~u1YGSruJ~`>huWLe=BhIqj7?&L-j|=|9@QNd^nxZyn z+M|$(Ke7L=RHRsVs^DGiyDlgr@oyOXp%UTpK6Nim*s^fZT=oHIXlQ3K0qS4W$62 ziT(17-sVItOp*&sRH8J;590OvMZh9mT9yA%41C-mfhbQdk?qNo8m+donS0ZLe&04g z8?r3`TU zWhZ)J{J_8P>2v>cx+8}?#}QvdA&&?o2eY0n~ zTUJOu`{CDSgFyn+_uKS0w~_@N7|YZLDQO?LKbC%yuYrA}6z>6ayv*P}>EdOC^5h8< zYS~`4X{LK12sM2BykI5k6GbEbEs$$?f0?&%h55SGz^8o9_Iws`R<+;h%q#fgh z%at)w(89CdcDIl^>|buu%(F%FRq@%irU>;73zuT>}zXZULkMX8Bt`|+kNR}CRDYdA#>+H#aO+YXA1vS!j@Fe$!>_4vj-^7TKB^Hgi|7lf0} z^o4KBZjkqa)5}T&74k0qqp@z;xWrp}FL&mXvLb?h@e$J=WtP3;4%#@lA`jLf&gFji z3wi2}BcBr+O!CxH2$XD2yfsLP;Vi_*Zont5pe3|P%N=Oxb*qpqV~xskPC|BtzI!iV z>oj6I(7n^wNNmhn6u$kAJe>4*%rO7?gEM{J)0Nq?XWiDZyOVan=fo30yOkCfvXhwW zmb?ajVyTdtMz$(OBMls;P=BA80i7wTL`IOBJ3VqLA4|nyx;JyahNMG)lfbi!J-m(9 zn^?5eX9EyBMlkoTNGiD!iJDss_ou2VOyJUDh<3itubVb3Y z7UFWqGvLDSU~ma=7XJ`&mZQHWr2!vyX^QsW(*0ni;nJu-;(K= zNEqmye^j~>b-|n^Q!c#lH!1vF@wza22*7PsFh! zbGj_7>w#NA1ksxG~D4Fqv zA(AM={`@bxCDS8iu7Z=+xZFB^|AIkyZ!P>N!;r@lc6>pWCKT`i9zu(S|0wuPJLwwT zIOW_nlXNT7S8&=1vADEUDdQ&QsA9k1aGHuq404R>sw@kt*~`+{UR3CEyq{U;EajtT zs(2##FQ+>64`oGuxtwC92k~x3^4bv}IAlcru7#x^k`=6ejBNl|88VAapTgE0)nI>2 zVW~30r`cML_zr7ihbYufBoLBIG%@d6Ugvtnc^urP?bhNu&;8$R-az%`E@Gl2cx+h@ z?>`##q}_q?>q19CYQOE;l`Bo|h{>V=D=r%HVw;Lnz5Lkp%T7I&$r_g#Uru3G+W<^) zG9_hGcxTb2rX(ew3Z0b=Gg2~uFlzJ;;&O9)t^eO9!>gfMp|aT)G%EQ zzx#mZhWf|IcAXTC$LeBTk>3hS1VX=l?T!$G!|G1lu1gU-`Z>J=wmbtMV=ffR{E>d& z|LttjPBGgn)ZaL>(~$uB`O@nOuQ~o5WPTA#kuJ$vJ zMO{2t@B*aLBRlWYRStK|btC>tAO?o5cl^oOF2@Si!h0AnM@$a;ly(WI!Pbp?uX2d< z4BxaX|A@1%wrV&RSv9;1)jb2{P4rXLWD)WQiV!0$eSZ$JMF;?B(#LH6DU}c9ZatoJ zX?Xhd%Ry9?r|nsJf(`~nAx$Kw7t!s@&IF;@WhTR>T@k}_-j1=7F*3?Y!2Oq8N!I5_ zzVO6VIe&pw%AWix8){vK+6qze+B*&5n{C3+w5wy2n!2>*+`$l|x|1O&s zN3akmK#bjR?4=f9rDTuP5$<7SfUvCtr_wr^@HW3_xF0B(j8Fn!9r2!(XQ0OQZ=-OH=41fYtJs*`_UK+%ETzpB6<(^btD7BX!}DLZMSO{gr20(!9SC zA8S`+k(2rGhnqXzeX@nKp=+EMf&Xb~=#6m5y@%kPUD4jk?~TpRSUwofIZnA)PVNGR!&#e=ni}|i zBc0Vb8;Qt3_{~*QlG`A*=xGfc8W&4htCy**?{aK6!qt3n(0(u(35+q`Hg)?--bzkQ zhd>dFjOT>*13vC;O!>LHFMmC1K2hbat&+j%nv*N7dhkZpq$ zyoS$+#+W~sAZtOovtDs8wxtfowOoRjyaq9EED|_D`Oli`W9dh49sTHg>VC%YcOml~ zs!lDGjLB003C$6vg3idqp_ez9LVP9Z*BEgF6mdMx3#PMze&5T@Z5FD%Zd*c1Ug#Ak zpjT~4%heG#9aauL{Slwo(+`AWdIi33)u6s(cnnVkOSE!HAbhl~NG;&&&;?~r4b)X% z7&N2M4l;1xIxSu$6tvI%4b!@tf6OLIpI5@}i0Qb8cc*>b64q5YAcMt>^CTIt^$YG7HU0hCRNylP)y zSEBP=xUeR>MP&Vi>IkVjWVkxTaN!oDOa199^T?pwTViDmTwGBFLO7%V0rg>9yn-D6 z>9}Hxv7}^(l0We~LpX{^9g?)a{SOCo^;CYxBssEEBVt5~zVu@LWN6pNbK*v;nuDj4 zvya$Rl|=46QVMJK)lS>3X?=2+UN&s*9yI_PE!LVH{kKsUlS&aBwk7f?j1e4*Y3ucktp7=D<6A|h+rlw!*aKsQLQS`4i=rl*9#v<)Y zcwTj+htksggp8 zo6rLFm?AF9Un@cocc=Sxu6tZD={D^VJgHhO{$KfOV|Jrbb?RK<{`#Nvli#D>pftZj zC`Kgr3<>Pk;gKR-DCme6Zi|Oa_nsJ|#5rwEw7@sfl+RU`k zlcAyW4IjT}G%vdb8U})8`9Cj_ z%6aUa>u*d*%biY>E>rklD^7Ie>-|H;^LgM`pO4#b3hQviPfC`fq;r9`T$gBQxcb_p=L&msfrzjVOHKW58o8 z>7tM*J?>4hFvNey>Qr<{28{T^>Ogic#zNOx>kp}sSbMT@Ejq7dJ#3yDdd=0mw%W{h zNkt{K`sLHCK()yO1NuTlK$pU)0ZO1;Q&8-f%<#;rJ$&8v0>Fu$Ao;Hg@Tt!}v?*?X z1Bu;hj``%pH%#kV$}A{F>RI1ZE=L8nSHV!!Opefc_`v-iE+f7YX-znTRD3>P{YM6V zC`Dd07<$_qTIDy%W`6Z;YHhx6O^{$quH&kv2~WwLfn(!8Q*{$NZeC;7o}J+9R$CC} z^^8ar?L(Bi-K;|`09!A%xA44t)YW#vZ&;VGY26 zx-f;uk7q~mu|pnb>eGZa+}9Cu3^+Ua8+8%RN@t*17h1s(N{E;(Ue8NpXl+#yKKnBD z+bV`IuQY{Cti{S0OuZxa8$Gt^W*HthEe(u*@4nFGkfX^%-boNa7Aq3^@}h+|70GzwWZ_$0R4hxitt%v24AB>kOOmFE;yO zgfl3o%>O+pi^|siyDeXLJa;V9e{{ZmjH3IPn0#!6p3$Lb~SIU&>72K4?idW@CLs*?jCx>D`BgIC17tNN22cMIWB@MQDig zI+xo~=o7IjWE#X%khU*692$Z^q-c23QJE}`pgS@^9ORJIDoud$xIjD@)ymmRp4h;y zUwj=F4FVJb;V~n^yhj1ixONJru>5C3>fem1$c=wYgq2|wxFh8?dDcfI?^`mVke6@2 zPNA}IJ zXflbA5l3XZ!3Bi%jU!b@OsrA!zUI|v@Ze=-vMV=#O|<_Wv(?g<=+FD`t5xIn-SMM& z6}xF#oG^q_9Gp4KSYu8DGIB#Mm%BKTh6c<}<~&aJSP})ZMomUb7oSuvg4;;HRg2wl zo`QcwgO9JS*_M1qNgQI2uRL4%Cx*S68i(X+r%itMq|GX|B*h2{IE&);atsVe|3e2k z_v?fqR9=9X235ZZ^Y?rv@#+FE1}V!Pzq}xmQUaSI#-jb@^wb-p%5!--xZ-H+f3?-=1TKL z_JO{+Ejp;(CC%5_sPENqy>QvKB2Lf&WdL3N%2ZTB_8$BlXxscX5Uxh&ZcEZl`WB5+ z{Lk+kZ&3^F*%I*e-d4I}loR=6bW1CI@LX}bn83mavFf?g+SW0&xaNH1d?E{$x)S!T zs^lS^1H_4A)xDo;$DL}PI^%0cmkj-apts4ci!I7u&-nG2%eXetpPs9^dbP-}+10!!}yvlf^Hr?mr>o;dsv+^6Coqs7H~)Ed*Gz4Ywx(~*%+l~s}|ei4tK5J1mNVH;Gtp-cEA=? zL7Z6U zK|rjD*JM$aqYgW5eF_V#n5$}B2a-uOff@J6xO?!c)VYEo#$vNfr&?`N|CwTPLsbnd zO(L^t=nTvHEg7T1r9-2TKgwNmx@(WaS<9wR@6YahtH2)4Hy!P4JlGgTXE@YneHF|x zL?IH|TzwaR&%At^`z<%J>Or|uqSyoD5V2gzL2ZgN5{WsYUq)O#irhvQAFX5u8Bx10 zmpd1cy?Y0?RTW8+y^Y@ov3L5jRj07cg5)|gQiYE#r!k4`H~aFHkg4$rn%BqDEcxpq zXIfA8VrFlcr7!=QI2T@aR~kEG{h7QeNjVz0^2Qx#=iPw;hCBb4gc)vf&A|Fq`z$BM3;)c)*6l{)o;Jkju2lXozmm+ck#kO3; zaWA$j{c#x5e4}Pv#8(Hr{>H1%u%$a}=~atO&c}{Xm^yddKu%bdTkuE_t+K+f}EPg_rn_Uubni0Z_?Bafy>#?=t05YRXFCTi!Mg->gCZNr*^ zSqyjOsNZ|SG?IN)?h}i;plwrjn&>g!7c#E5&(6fS% zT+VJ(m}g1|5Mtv2IcNV^7#&19VulvD@#U60J2(I~7Q#>bp?PaB>AjVNo|faUXL$of z67gFX;wklZoCGF(Gvgx-2+2V^fFwM2X>K!K{U3N7ukh>bUt6v58w5s?ViH>|JT^uau_yIESHPT3 z9vbn_gm#6Ob!ev0$~vt`)KS@H!Q!{F-R}Qt^E2O2+C`doz2}cd*&Gii|Bt3GafIsq z;=VJ3LAFSCrVtUbWs4bYM3xZQNtUQ6`#M8fe9KZOCUy#3@>vj2f}q9pk**XbHQB?jPF5NlqG0}BbghS0sn<)FAddyYk&9TtGrQ*u z9|p^Vf}KhpLBZ;7%kDTE)q)#yfIHt9B3$1_ zXZ|s`bUp9~-zuT|*imTeaOUg-Uvm80-d-&6_TI75F8dWq4wDcK{s~|@yX%3HFnT~M z*U!<0RD%P0>N4n{u6T_&YqSmj_fIcgh&o!T!BsE}PaE5mH!0y(HwL~%6|$k;^FjGp zQvIX$p8`9bC<29h0^RxqD^j@`M=_P4(RaXcf+(u9JMIhULnU%YB-g5dI=hny0QD2a z%Wp$hPqhd^As?-wJvb{)64!~*Hh36a_bV?suikctSqcU9-EfmqnC$&|n0Vbn7rGRi zv8-jlx(TNbN@V)dzHG6NU0rvYc3h#P3$FNp%?^N%5?onh49YeYemB4GZ|ST{=UCWT ze~y5FQ-Fm!;KTc&VcOQ|;Iy-mETx}$ubVxCT^shgrDdM;Lxu;s9RgN9Wjysk-*kF@ zNusV00b$HWIvI=-zWTpy4|dLZf^eG4bknpfS!cQL0nb`;4r&}1)nDfSA-GdX5 zS>yBWP&-4G%*DnC^!U*;n|rGi)=t7NPs*}D*)>vk(H^l)tvS}2!lt+F==Fw;UCuBh z;@lnRJY&f2YO`k}mpywLU5IKh)fB#?!YH^Wgbxh0!hl^0`MmQ}rLI}!A6PzrpHCK+sJq^L_62f*|K{W#%`)LM679dV-kI#!Uo6O)WP4E%NI=k`=P3u5_J01oLQT! zve^Iz7ix@zO5aWe5`DaZ%c(uSUNSk*b1K`kp?<=aM<@M6s;2on+C?D2lz`kh{xy+9 za=pz|FUaarM$t-ING+pSar=i{Ncq#fLi_8I2BpUkBXT;HnnnpT;g1%D_0i!pAMdVT5 zKYr=+dhJdx{}IXW0uD};t=@0kqMmZMlJGTT6`oeCvl*pd1^sPtP1LsD65ctR} z_@&yV24m~8EJVr16-yonb@9`u;7_8X?jsCFc8;UOcr-nKbruiTU6K^PCaFAp4^0*ls672a^|b#t$b+@hEVy&x?KQ=jo}&W6p2qP^Y|gPxbOS@yDcHc=|}_FXU8 zKm6Nd)te@O{yOA$3MZ|LGgXwZti^Ew!>92Ypq?I?tg|YId*wbxhf5DgU8Wv=7L0en zzUN_<{@+8*IR8^klrClZoB2gsFr zBM#HnG(nWlyQ2hM?Qy^yushayBy7?g_9Q`IW;qm`$rOiv=-bzUp-# zD=DBQorYk`g~{6Ezl~dYH-1B}0Vd_EgK~|*N6_hdux&=H-{C{Zou4OtuA0!F#NZ{H z(TP6`lphrBT*8-5^JmSTF4b!U5%pC9t2v37va7Obs=P1X#+3M%3V{5niZMCp1Ct(N zL+ds>^&J7idhT_@kLg*l#^4gYhrA|a_M(o>Dv-3^9`omgW4B&-s_p|i;trI3p&$AO zME^ay!iaJ^c6n#{gBRt*Qbm#tF2lx^Q8K;nlZJY+wkbyA8=uN3-*QOZ9`Spw30w~m za$aeE3v#Fm&8t_`r8d)|HE>i%&1rZ<;JZX~(x+?W@u8Jw31y!yxZpYZjXV}k2= z-LZ)EA@glvs7(&$4#)99Py~xHqe=i;XoQQL2Ch)aBF7Bj^`n&T#UJSTw$x5@-V=o` zuE`(Gznv(m4)30xD#Ml;k|KMfA3xh6f+LceCX2NxrCbFi;`w$QQYcwQOasH2adsgn zFYQmP$?vmgO&s3NRR}Ju)4T4Q*SX}-GlOnT)*_@dc1~O=YtEl#5nOVvG0c~p&1dK; z+nzJcQjDpgb>$85_5M{8Up9ONC!zFj#9pd!`_R-9p@u_dx}ub!Kq(<5 z(>28JUIMvPR>fiHl@-SOJ;hVg(lqN(VR1>}(duatjUc;0mP>l)9x-)^j6lnx0;~X6D4H=B*0;do9?zWY&${_gol8!sF>K29* zm3^^q`KXk;rW)>B500}Xx38y<#l@|xk1mRHB;^~0s~5Tt zF{D)g7iveRMk{n*j>ONDt~pU^lOU=XblztW*w3~J@a^aYrhLJE+?x5h$u^2!cmU$Q zWW){h*>8BZ`t88V^#EVjqcvF?-hnVBrg@j8VKczbF(jJPS$;&3k0WP4;%Rzx6) zGZ|Ps)}P-E$a42-OGSvx5JrKe3lXsc-#YoKWu;*#+k+wPYkfPBBIvmnxbI?pC!8qH z@}It*kJLq&<(!a^{bZewH|~)XGARhh&YJ*OCUgKj8gtBbz>iDEcTmr|2OcS^VfEC8 z581Gy&NA52d<9|qJNA@4<%igsSjYv z(H55@DF+^#ls*gpul-wbOV#I9Q^IX0ihK}dvlMGvN&ykVE^qQN>+YRTZ*Rn%(L_{V zfYjDOJ0H>KmOW>H&1V=%0x!7Qx&P#GJ`gBHpr6!l_=1f>f1hm)Vl7vN7SDtDJPtvt z{{4C#Uz*En^N>MHbs4Wz=RDA|V()n+=-eVnZ4UnIC+`Z+ zfxPZVFv>eQ%WfYqt%9pjG|t}CJhiyicZe5UqQiVw8LJtBWQ{B6?)w_E(5)y|0~P~C zUHIII5mxeLiWfX(?tId4U_H3$@$9{MP{D~ro^@v564`EfsTjzFw}GGdQ2k3X^I0i2 zvG~OR_SKh^EVl0LQYj}2Dx4~>-cu^D{T-sjJq2_{l|#~DhHR-F@JR@xOVbBuLH7ei zZn;Dnl5Pp&!chhIcZ`TaoGQ8r#D3YXW=Z6nf9 zDydV?hxJ1*`89uzADKZ7S{2Cn0Q8XW;kf9+7~zhD3)|Nl?$UHO<%gOFYa7_>1W8R( zgTS3m;e@A7BpmW*W`8L|AI1s z&JIkBc8a;wr`N)mI@X82kI5zSKjg3IN+HKR8}SioyYCn0SwFRX;)=PKqxz)up9@*P zx@zqxHF9opMDb9Ve}7B?#MBvyHoW(H{s?%EzC*N&5eFDVp21pL)($%zDV5~o-;v~& zB_tpSV4zc8mi}m!-}WDpK%Km_vTDHNt6{=GRO3f}2Q`Rb-k!nrymgI!G~2H5Je0C* zBDV6y+UoChjp1V3EYuB+K3?KbE#I|OwBsd;x!FEZY!$nqewN&lk}<8(K|^ijhMJ>F zgnAwD=i_Ond^0opY)TLtiw2b&ZQXS-Js`uj5%5@5JJ+3ZFiJ^Gpd7TPk{tDdmR<_Q zUf#y}^4>2ARDBEwYBA8sE7h*5qI|lcd)RpU!W!53L(AwO({F+s!DHTEr5JnBg zYR4+oH9)76^b?|9zf^Bi|KsCs4m$CNQ9;*4dT2q07P;~(iN*ZQ4uV=hVXS$%|L&0Wh&nqC8TY& z@jC=#?`V~t)KnA@MY4D0NL%r4HmQ}|P*Teid z_UsDG%jFF0@Vv8kDRzzdDQE_}IzZkR_(BCVS%ln)eFQLl0HGRDUmWmXkeJq!^{>H# zK%ta;No*LWvw0O_3U|OmymZ$N32XkgZBsEC`4=~ArSPj%7$5WE;`43V7AJ(%%?KfH&uWyut^iP53JB%?H(Prg< zxD#a$L`a$i(W=is7PWdPj^x7i(U_ZAKG!Q;NR~f+$iol!3%B*ogZXffC&d&fUIA~u zSZ8dC=6|e*_HD!$Qv-q=6EWMpS}IO;2l|K1y~O~14h~D3ezPF zvhV2#!@-jDwd!^H0+c6QKZSkr_asNo@89m4d9q>rc3J(PBi3V9+_jIkKdMm&e$NH3 zuDYzib=0o^NCliSLZ|gb47x{y6bWtTQ(aaQ2jb7NcW;o zp&RQcEFQLR~?Wfd~oE`xTJMGkARVcMzG}?*3Mx zOBbD_53eT&rDR%6S6fgwSz+!fK~*4sC;*_xfg38Kb~9}`DK4Ik=Garcuds2PrcO@C z+K%<{z+~_E-y#g9j=L4wS{&=h^t>|$IX!}eY*S~Q-TYz`htGl(58E_54JM}b5p*1A zL*opZPx?bRDik%p{vq?BhHb%x9Xy7SmZ9yC7%zivhO5 zx2@f={@yo*uHGN67Gt7w!R7*T{ewfP7D?bxNGCA3jFNIuHX3r*g|ds=ui9vfP2Z30 zJRKs9c+xK%!h`_c`NvBP`*aMI>&D2g174kuMHvQZaseJXYu;CWT>R})`=6vaSF>uT zZU0~uT;kC1Ldl#w+wbbrbQqUX?98oCT(b_u-tF-N|CJyo3N&y!7V=Fg-}bKy4lrM& zZRk54QfK%vfd-X1K~(YhhRx6)zhtu4??E+6m6B%J?FFP=rF;9InJ(e}MK?!I#dP>k zF)de#^s{`}yGOSPuU_1?^)i$uN9Oa|Y?+DLnhl-M+fpUQa3Y#;<{8<^cAqJQW?~xv%>0d$= z_U8OJ%xN#*Q3{`AkTPu7PY&WzyF%_bBytNR)Lq$zfq)Ux>wEZ*)@CVC96aqdb2O|2 zb{e`b6g4qP;aky=tUhF*weg!dH%Q{%_x88Ci+e#ogZQXs+J9XS;SoCI8^zXCVbf0{ z)qVoX2W!;>-rt7fQyEQydtGUu%DnH*adkXBEAHXQrEj(5x9e7wP4sDd}{#tb*kXn{!AioJ^KoB>1JZESSFZa6{U8qp?gcb zam-C@u*mv%P#)S`^HeFtivQYGuapbumefOOkgukrsh^-T59R^1qr{dPGYYveh@dGS$^TzfJZXZew5HG+v*q5zd)_L?LXlE z!6o?e>M5M6z6(v&Ol|jsa$8riuqbE{2nj(K8}@TwVrmemKd9 zm?m8sSN4BfaL^8p&I$u%oYIc*SdeNfxyI+Swoc|yNF&(uV}!T<3ur1JDS%-z{l^J> z=coVKg7tVO!$92kVt4+1Mq}1W+_c?{)YaYBFA(Xjg#8&1;C%#%t(*VeP)B$|!(CQ@ z{HLP+x6%GtMykC$v-~zPiB#tc11D~xV2TXi>6fJl zyLoR-f*iC}KxLm9+~~ha7|H{XI<gX}+}>gtVs-Ys5E!q^M{o}<{rJpA z-qi3rP?B2u3HH_63C-NC5$H@B0z#rdqjyT*d?lZjgR1s#M3!)#N7%lMj@@Z#U`vh}@rH|hOL^Vo8GzM!4%gMj-VUif@p4m%c?Er{3ENox#`^tyJ2A*%%1h-l*e&)tlU1sy z5n9xt^3rlgMMmCGfy=@AK*hv8;7m^nVwf)GNcrpPkgc zNcG)$>$eN)hkSScHVeflywBK4hpzdCh^wY#07K(BSEL_bW6cjTHZ_{jQ{d13k)L^m&l2 zi-LIh=bmrI#Rc^ZxvwDZg)s*{G)Zw5%*Ja18*G&QcQng;6#>2TXtYBZop+!Ai6xse~w8} z?s9CWTn+;jA0W0r()CA=evJ_;k2eeIHe;}`c0$u%+yPq8G zYkzD8PNr{YWn7Ke^8Eio7oj^MbzBMOcp8$pFiho?0>$&;&i{NY0OS^4e&szYqQzdI zYi?o6Fl&ZITE8EWP2JUMVwD*>hguTEr7Ic_B!hPCqf98FE8i z@-}=r5&e=&n|&-$g4Dno&1LhW=a=K+jw?@#9{3+Z+C6krzE-td*)wBxEe_|VXkSpF z?A=rg4bI#_{Evn(Mp0l3#zrsSV#RVl*JPu0)?H0(5`1j~<&NLvkkNX9`|(xSXaOh+ zrCwrfLt}>3I%u5cgS3w@l@t{yL+q6!D;p`w_lTD(BHdzi28Fq-`MYqK(Wo!!D`X%-{DUxul86)K^ZLl z9xWi$<~eOsdDO5?jrou+HCgH|(?+6T`T3YhtJR1k6pD8?lFRcnBo zsAtz?d#Ygg1{Wf64}SiGl?)w5ZEU-z@)W2;D44A9abHXSXV5T^6tR`rW5?0z%mP}au`X4W?G~wp2Z{SJ^AuDybXC&bq;R+V(v3)F zy~eZ`31lQiS|474D|1?lyVgPLqa8>Bsga-sT780Y*$+;}!yLK@%?F+k#-*r6;%?28 zn6sA(G{+?TlmD9%B`!MtBFrn!-4d16^oqD~7Er6#cNVC)ZE4JOpqjQXe{Ln~24&+O zf>hD4=v=3yg|%rS_V2Olg|b&U98#Xx$)7?nvf4~yqmJW#%UoMR$TPw4h%H( zKvut{Ko&8#Jq&~J+tdCPqQLMJMcUer1jYi@J8g4QPp|E-CVw91Y&ntXwuVEaT0QjR z*++Ed@@CW_=?GAt^*{^@${ED8wS7P*(PsrkdLY-Q7=RMwJsotkiL&{i0gE?lUfw1Urip*Lj~Uj`MW?SBX8>xM$y$&YC0h zA3Wl$CS=gQCkNTi1HH{f1!jY!!Z@ahDKBu$vETjFpUP)^Y!`}6m~*q%pjhm=hZLvR zFr#Ew>#jicOkN6zvd6?O&@z~b^TWdB=PMn*ez~Vs?1zms^PFmz&9jD@fS&4icO05J zo7rEU$f4hJ&Z9Ms1{&sTpJ1I6zH3$}#?!QgotInUGJ$1vpE_d4)kCsl7v=ZtLJonlnMz*B!Y22Kp=dOr(H90}kSo}i1hr&N z&X0Y>!dQ~LA&aziXChm0k9E0bAp!@EP1k4TeeaKX=yvT`lfvV!C<@{QHo-18b^Ogm zQo?1!Akru>1f0{gaH(OcH_p@!QmFDMqrH^Q*{<3e9Z%e+p8C(X2tE{13ZBrbCD&~Q982Ns^>0Q7rnJ{ zyWdyPF0(WWK@eZC$(Ob-_sp*RMe|&x$0y$p(0u)p;=F^t8Q8ya_(Ki7z)gi$0X33g zyDfZ?XUhr?v1PgCzfdbMptlInv@y5`s9EWn+6o*iV`mp!vQ;Zpa?<=150f}(>P(GX^cMF`RwL>u^=!DU_=8$us^br)d_i3Pa4dT^Do zUg9=@(HJgjo%&!QmJHZG2n>&IpEIa5F#9AW5isDI$Ka?Hq2F-1`#RxlyV0@A;}yI8 z=Q~8~t7UR>(7`d(<4ILkcjUQVwJZEmxuyJuCpS(P3Q%~T6|SoW$_sUMCI~>U_+Av< z#A-tT%tYy)Y|rPy5?~t4l&=sJekt$UWKu$Mt*`ys(V)M^#CBGaoo{>WYXNfN0$NtT z?4TpD!Kw=~fi=t{acegovjxVQ2eVf*`^bdp-~ztPFSb~5b0r-#EMpJ1%!$q?a2pCx zu*B8!o?IfvpSTrbAL3nGwLarx*`W4PxJEf^<0)F)cee3Yr?lJSB&{otHV0hq0kq6NxGEk8O)wTK-YwX;4Q#TXM zCG#z{L%Fi$tS~p}r10s8l$F(H%I=``f?dEtlWP*?zmH86?t8NO zeA+8l7@Y^FKBDD^a~ttK^!F_@%^HVpfA; z@H?G&$NlO({EE^e#-#K+0>3QIk9~k}KZJdrhAKf%6vz{Y2+$cn*9d4%47_vz%ml1W z+hkwot_Oh_xaZk;N+M}D28>50ik{KRmtGXVH_-OQf6-X|{!VMoq~1io!gykb8uXg{ z-G$k=D{7g+Zx6rv?n6wB&}kAPN+!hErhA(^3pT98s$2b}rT!d<^>zz$Jm z&s&}d_`u{{7~qf)k{I}x2G|a%xq982;G1hCMy(cT-wjIrHQa9|)A;?BA?A1UmM&@Wk3IF#YtE}R^(XIT4&9M(_^EiYJ{v@K_aKKobTpX%MlU=oej@;oXDd+h6 zIq!7ur|0+LvmC3WZxH>vD(3^3WvkpfoO_gUXp&*1zPdYqdu4*Uio*Fk?9)9K@ovqZ z8?$&E1_dpu7eJawOgCvdPIUX-CC4w9v*kET-{Z#6bM-K%Q&%nNEi!IR3L47|N3uiE zr{<-l(XF<&yqtt(1(CCBl3U>=#j9_c<@ftM8Xo=}5lo(s@LF4T9#+O(uX@tAY=2Z^ zQBX>HIqsxu2Je%ZO47a#O9+NC7*?She!&+RteFRP;)UO6+?08Mx6y+k@v0l*u<`Th zZAS$oObj4RK5U<{i}m;OdhYD^XRmZd@x95QGA7tMRs2$Z)pv24>b#_zDkUEN%MiPi zwa#uz!{grazkKKaq85kOO^##?ZZpO11+THdAx*Yv8C*DNupX0%h&mm@6Drbo`c8^M zT&K79Ud+np)iXR;cp>`~KxuXfR7rZ<`cOeS6DQ8W&BggB+s7s)Ou?-bR(BEpzVx!}0HkDRzuY+_*kNVys3eTf~%8)|l~VK%CC`dLVudn~w} zb9vZ)xm-KOIg^BzVvCAbZceNS%+I!%N(N zbi$XIQ1*NSoJE`VH{FluPzr2VzHNk(q^GMxI9Wq#i;E`>T_U(w%%3?ZGc9A%_h_nn zS|Zz`eCey}@1y<4POK&d=#amaBQEo|R#r3{7VppTZ5dp$d!ZO_1?y3RUQt7Rp-hya z$Hwb&S)n|KenNxlI?0408abFPNdp0JUO~`HADa!jRhVykFI)(b& zTU?R1ZiYXF?!zD(h44=6D zoqU9T_vOk#aUHDnYF1>)(}t~A_GTlTG1wVBD;c>hLY#F0_@MrL>kGrez&aRHh%6X+>h!G(aS=f~o=z}W zq4@B3L(#KY4i4zL08jE-t%UsK&JfHhs|U^ZS+BSu*xϕGANk#*hih9eZ|^8BQZyr=I~ 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 CcTY+H literal 0 HcmV?d00001 diff --git a/packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..c1bf9e9cb1639ad1cdab9b5b441a730326a2ef58 GIT binary patch literal 549 zcmV+=0^0qFP)8Q&CZ2W@i5U`Sbc^tFNzI zid{1!Bcq0fhODgYw{PF>-@iY9{(Kh~7oZ?W?(;*gJ&{V1t?9>3pgS9ANoHndPEL-b zq$EW3pWlD^1^D1P8FmG+CMRQwQ8&ES;DMW&m`Pa{1>>TVMojU^= z6ayKIYWTkXwKQ}?*Q~GPimVgjg+G7)vVVTSurr83F#xC&D8#|dY;WVzHy_p6uO5H> z|NlRl{(nC|GaQKr>#St}O92(=8EJ|O%e;L11fluxiQS$N`W(C{q5byWVQ%9FCMgF7 zBt!Yd87vLlH|(8@(0u&-uCH&)Ie7oU75(}1hf&P@r=Tb&SSQe3fB*jd^ZOqg&tEHJ zHx$iR@0@!6;FFL%H{9jG@D~vl0;&gU`|{!U{Y#&>ZrghE_BEh6qC!$Ae*X9G@4-U{ zHEleZSr~z;|NZ;-=O-h>e+EXDzfW)eoHK1%-@KB~U*9vJ0z@J?es)*fdv6x@e>cy* z*|~Gq!^d|yIk?3+^e$XIwdqU;12%x9`NGZ@H<>2RYFfOp59nH~s&Q%thJHeU>%|*K niP46x83;(yiLRMcK#^tuX(!D5ARnK!00000NkvXXu0mjfKSu}4 literal 0 HcmV?d00001 diff --git a/packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..5c6282f2b5a0043f42b4073ca62746ddc499e838 GIT binary patch literal 1286 zcmV+h1^N1kP)*NqN1XLf`YiXIFckK5(x|f+UMuz-#&P#Br!ogHL+W-zn8FDtu8Ao zD=scpsZ`*t`geT7y6=UT%``pUd9vcdg|)YD5Kc}`uBoXp8jU!P`}w>3%c!nXmz5vl z&d5VQ|K#<0*9S|b()9Fn=sh|*TC3GM9FDQEF|!%cpiL%IOiYZgs%z9QP)7xY5xG>i zh5sl{cd4cDW#>Q`T6-2Mfs-9XTaEbo@Z!Q8y+U2B8)_a0xIJJ@(*s;BY8j8 z9}5m^G@A1A^1{MGnM}5}YiNPmN+cWvtlrg~bycIzN`w)hqU@st!sKD}W9fT?!wCrq zwY9YdgTa3`cLFDH+RYHkl`yCsl}G})zJju=&_WkmBG3-w6EdlsW?W*hPNz#uOcYlI z7?&^%6N(f|P3EJh^D`tNP~vUX*9@?flxfy4tw2Bn7izCA=i z{S-;0g1WOBEgN@;f|OEhR@&1+;P>`dIc<1Q7%fyAl7@AF%tuh?=R$=AwF<4Q7Ay#5 zIFp%{yS9fF@a3yb(S|*m2RuQmO)N~atnVv9#idBUI@iUZbSNo4Elj1mIXe*${Wo;x0lw zr?fYrhzu0}97=sNkcxy;h?Hw!Q|%LjCvBqxBfT1ZLQvS$V0to^4|}js7M>)2CCr*K z0%dLAgX09pdHll=tzBnQx4p&d>9yznV%TRLEEb~J_J)f`vLGWAf{H+tQk|;b(Q~ae zFl;{kYF?>_aY;i0!fF-uV%}c(;&ReUo9a$Li^mr%&%ql2hA^Bb6$B(L2DkT|XIa)c zgG-}=rvj%qTnx_=-%mKko%61lasJjM$vC7OBe6SdyqDLgv{1jyhjt&Y`6M9hbkCXl zE{4Trsu7vI%?}WJ2-lU^)N`-%|z^0L%Q+t<@fq| zIyJR7WIdY0^K8&f1tWuuAyJ!k-r6O%ScVQCKhWIq>#ECOOy(Ju`4VF*;UpH+-o*~)S)!&ugB^eM#3u`+e={0XW%eXzZ zL2_nTe&%9bE(xF*VI$cW^3P1-HZgD2Ldiowt4?w_4vb^d_ld@TRI_@Mgz-`2P?81H@7c?3rXLoB#j-07*qoM6N<$g3~TzrT_o{ literal 0 HcmV?d00001 diff --git a/packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..172904e8ee95c900410f529f9a2459c1f49c7519 GIT binary patch literal 2094 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 YAF7t4hg5Zzg8%>k07*qoM6N<$g5i(_2LJ#7 literal 0 HcmV?d00001 diff --git a/packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..abf717b11c8d6b4d705d3cf5c2d12a2f8e73f70e GIT binary patch literal 901 zcmV;01A6?4P)(LCn3<@kiEidf6D^I(E?!{t5@8t?L{Cao4-wRp^biFK^%4<7 zpM)-EC8T(%5S{nDt-MTWCUZJd(YCd7wsTJZOwjq zfA{ZlaU4%eOG{2p4i67!SyrdhSq+B!8qL}2YQ4p>5tkr{qN1YW;^N52NC+W@VQBH) z@MwRpp6_X6Sau`zq5>-`D^)6$NF@5cI@^s8Rp7FMa}CX-b93vsF)=aO+1YBfTA@&& zlNyc2F~eACS*ctu_t|IZ0!@X9ki_Lzqvfgr(7C3oR4PkKN^){?P!pGrxg3UZ1_jA{ z(3y6G0&yV7s|j8R%Sz3!d0ipwYBU||H2(co9N{mf?Ki=){;v%R? zzszx*&tq8;)M%dPvDr@0bP5De?n*r<3hEf802w=u2)Hcgnl@W#TOdgZvZ!RtHPtSD za}or|P*2hESNwxVU7C5s@if? z;Dl*}anhSZ!jt0Dy)E`}I|dqUbGLY&UfE*a6X2OAG;K=@jt}jaw(`z{$2T0b-Mh_d zUo@JAy_Y`j*u>z}$JvM!DuBSyEZY}(s|C_a(7NQ1h)E~`vnFQR@cCZd`R1+{f@czT zQCi>DsrDAQDAuG0)z6>Qw?5R5cA#3&YZ|d7E-qx>F z&rD2>c-PUpKWR3g&${9oZhu4ltC!cxPSA|wCyAeOm#p(wZXe?~R&e*mU6fx(h27th bf6e_0<#t@?)e3}P00000NkvXXu0mjfL8PyU literal 0 HcmV?d00001 diff --git a/packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..59230d7cc60f8454f3a69debbe5ab0e69fac4eaf GIT binary patch literal 2034 zcmV-belvrp;LP01GU_J$ zLx$nrd(Qct?|kR`&UewHuaxvp8bF(7anq?;+;nOdH=UZrO{bm~T$5hE_mx*fMR|4a zUQU)1J@z)md*&1N$g3_z*V=_c+voz9}7B7ZRW(sy3V$90i`KDbBme3A~+ zg}Z3cqFuXoty#0iY&H`Fk?1j5QL+k4boS6yUeGU)`aU`I%huK;-OfBNhG7j24O_Qv zbvPVJK%)`^-V<+*vM=fh(rhF@x-!(*+^j?*Nm|S>F4%JS?%j2Db?_y{qcVqD>hh@m z8vEU2s6HDjywpCBoE1$2cmDkO#l^+2dvbGgIgXLce z)KVK`%|^^kYkFKT5)v4{(wvMf*DZM+X12D@I4 zva+LS39!C{9_}ATBr`-sG_6=%)zN!c18%?{x^=@_{7k-9+-P?ME(+2^xDp$+Yaq^g z3oWRh%8FtuW6o4q4=R6dy#`zi!+-yae-c7|I2?{!OOpsfF9@Q=dM`%+YwM=gRwXe_t!_*_5RRS zJzOI!cly;2^=4s0b2Zy8Xs{yy; zY|9TeZ|8hOq)3_$t{%s3eugp@!htJ#Dp1E7mo*E+2&Lk=^$9zldZ};lG|SOgz^uqT zX3*@uxa2o67mz6j<(8wuZ=o07RLKg06a(2fS1K$ibX^Qx)LppMAa z#tNHE89u6m--Jy!Z!>Z(QO}CT!x_(wp|vaP)Z&6p_8bCSa9>-NHupV#s`KF9qwl}* zvY1_!k(s5wVO%hlEeClAQDs@}-#&g@EpErTXa&OiiEvm@e{2Yb=(f+=U;oiIW$r?O zPLPdL$z;WGqr7Zkh1Kk!*?=lsk9XwKwa*tXSRsilZc>YDG8zByn_ppA?9_tkqTwv% zIX$NMp&7-j3r&m}g2J0CmVfhT#~xL0+H2?9#Z8t`*q-+i|nL3$d zxR5O1lc!RIGgxI<^apo$+_drH0$6WejD&{m9M8P_!OsqS`hlvsCQve5@G6LWI^3qn zlS|xa_KFD(ZhR1j`-*^vWnDDXViDXB)|+I6Nv6z5*B%BFGGv2i+gso68|?ZrtSN9| zEl%_ts;z#F^J9kG`=H>6Trfi4Avv!_;m3PmxDd_wosKyM!Wh4Dxs&$Z;sqL+3a-Dk zZ^NWbGxNBh_A{RVE@We54;*6}7#8y3wi zUE!))npbC_myh@_G@tt2$k+_9rpE0$-xdvLenL?=Nm8i)k@QXbZO_QQw#I)S|2rhV zsZAiHT)y55KmS7S%?P3f+#pSX2QOPx!32Z8%XTqj*w@HCK_qXqVx9eQnW57zJ)VS?unxVM3bmiO|?`%%~0_!m-HE#daGf-^4-cU8M znVz6h<3e%q!-ndoffcEIzsvG;x;a$pY5BjJO3mV?Q?t0~)GTf~^%cYYKb&5gATe#< QiU0rr07*qoM6N<$g25;Ik^lez literal 0 HcmV?d00001 diff --git a/packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..84d0ec3508653ff0ec83a64a4fbcfcd399b86768 GIT binary patch literal 3284 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 literal 0 HcmV?d00001 diff --git a/packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..5c6282f2b5a0043f42b4073ca62746ddc499e838 GIT binary patch literal 1286 zcmV+h1^N1kP)*NqN1XLf`YiXIFckK5(x|f+UMuz-#&P#Br!ogHL+W-zn8FDtu8Ao zD=scpsZ`*t`geT7y6=UT%``pUd9vcdg|)YD5Kc}`uBoXp8jU!P`}w>3%c!nXmz5vl z&d5VQ|K#<0*9S|b()9Fn=sh|*TC3GM9FDQEF|!%cpiL%IOiYZgs%z9QP)7xY5xG>i zh5sl{cd4cDW#>Q`T6-2Mfs-9XTaEbo@Z!Q8y+U2B8)_a0xIJJ@(*s;BY8j8 z9}5m^G@A1A^1{MGnM}5}YiNPmN+cWvtlrg~bycIzN`w)hqU@st!sKD}W9fT?!wCrq zwY9YdgTa3`cLFDH+RYHkl`yCsl}G})zJju=&_WkmBG3-w6EdlsW?W*hPNz#uOcYlI z7?&^%6N(f|P3EJh^D`tNP~vUX*9@?flxfy4tw2Bn7izCA=i z{S-;0g1WOBEgN@;f|OEhR@&1+;P>`dIc<1Q7%fyAl7@AF%tuh?=R$=AwF<4Q7Ay#5 zIFp%{yS9fF@a3yb(S|*m2RuQmO)N~atnVv9#idBUI@iUZbSNo4Elj1mIXe*${Wo;x0lw zr?fYrhzu0}97=sNkcxy;h?Hw!Q|%LjCvBqxBfT1ZLQvS$V0to^4|}js7M>)2CCr*K z0%dLAgX09pdHll=tzBnQx4p&d>9yznV%TRLEEb~J_J)f`vLGWAf{H+tQk|;b(Q~ae zFl;{kYF?>_aY;i0!fF-uV%}c(;&ReUo9a$Li^mr%&%ql2hA^Bb6$B(L2DkT|XIa)c zgG-}=rvj%qTnx_=-%mKko%61lasJjM$vC7OBe6SdyqDLgv{1jyhjt&Y`6M9hbkCXl zE{4Trsu7vI%?}WJ2-lU^)N`-%|z^0L%Q+t<@fq| zIyJR7WIdY0^K8&f1tWuuAyJ!k-r6O%ScVQCKhWIq>#ECOOy(Ju`4VF*;UpH+-o*~)S)!&ugB^eM#3u`+e={0XW%eXzZ zL2_nTe&%9bE(xF*VI$cW^3P1-HZgD2Ldiowt4?w_4vb^d_ld@TRI_@Mgz-`2P?81H@7c?3rXLoB#j-07*qoM6N<$g3~TzrT_o{ literal 0 HcmV?d00001 diff --git a/packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..fe3a9ee3413c1dc92a12a6c4a2f34cc03de59fe9 GIT binary patch literal 2956 zcmV;73v={|P)0df%%F3IIyySK0FZ+DY49NgXRqX4FLCd4FLCd4FLCd4FLCd4FLCd4FKP2%C_0sXxh)R zD%;=Mz>kg`xq8;DI=B0YO`8B)%_TP%Fot1w%Njm>cur2v;K74aQ&W4+x?HZt#>UFZ z$}L;AAer`^88hI(nV!D&$tUM--t6*vyMdvqmCQ&g-5H5ejofEtoom|wQBBoBZ245o40)V@~o^Z zv)K%^F*tkcipMu*+(d66=;is7W5$g=QrXz-0w4A;jGD`D3~+IA@ro5I3JVKOCX;$p zkhl3*MYUTHMO%s~$b{NCZWCd8W8+4ZwCIKaFI~Fyg%@5(OH0#)D(R~aEW4i_mGSb4 z@Vy>iAk|{N($xC$>#y+~r@oJG6&O5r<;s1Qxry$;xm6bs>wpy(ad$sl3xCLktk&38vy$~GV{34dQ z9x)|`L59I;nXPRu^*tpHoRN_+Y0{+p{Cua=sie)`_6b>}rKP35zP_fW=D>ji`}gmE z^UXJB&YWqnShSfjsPSLu^PeEnA$|-<*sx(!r%rwDx#u{R$1pq*+Pc4@Jqr;f)AB&;Le6K= z{cDYWKW^r^0RF(l$G$0GKwY+M8Kh04(Wn##u}7~w0(cfm3BfXag0!R!k@hay><7{0 z_n~VD2UIExzy;2UI7V`ONM)C*fT4GoC5Wz2=)tjO4@3wIK@eG<=QYHthL5{wsdOZ; zU9{6aLIy$^5@n}-&4|FMqWt?09NVF?*Z8-eJbCh}RjabIvlByAq!>NRvTA`FHltln z$(C&Iq6JHaxs_>=Y(6RJ$ZZhAg8qRCk0uQmX7!a3!TsCU8*3>|_>BYx8} z>(Smth)Rp_TXeNYP!vg8Ii`c0RP>;RVZ=CBT3Whf$r7k<6Q0afFoy;EeRFoUBm|O*N{95#yXv3?+pY$yN>DVAarP)JFB2 zx@e8vemis~n!dTml6wn`&SV$77o_8&(NmHDTwY!d^?l!sS&@>wLZMJpV4&Uov~0=U zew+6+x^K;OX%(3rI-TOi6Ce9%`+I7J5et~{5L`$kqTWuk2oj?Mti^IYtFBpt_Aj~0 zZ-I8o`fDw@w@6Y-PIMbJzTgK&DurhJamNr9*g3rLx6gk-cZ5tS@w`s8z*t0)gGGE~ ztX62jk_o$9OUafDa~tozP_9z;006^r{)q91Pwt94hN!@+U)>HVj_C*scc{)K@g(Oa z6q%gPeb_|{`Bv=l+mB;da*rf8P7^xLg&|KBj+)#j;MTTghix#^K?nk!EMTyd$mI0Z z-=$RnDf_KN+l)rU@!JTQESOSbP8>7+&l^kQwvS3uRlWVLoI-&$g#5Y~VO6UD7~EJC zMJZ^Xejio*LZYP{U6wo|zTZYj+8A<3HRhVo*^o`^8e{EF$DZMGZ9iNOI%ivC|U=236NqOd0=(?8d>qjIUty z$ll|VYfRQ`HYe6wxLdkzk*2O16Wkb~pGCV+1#rzi02WyT)2UBla=NOBylrT{_2hZ%1d{mJ1Us@?FLPOT}or^QsC) zsH>smVtp7SrzAxgNjPC(f}GVF=_X*ee!oBHG6LlOlaE*v>2+D%mf?>)2?fMHhX4ujF0l zJx#dxLYfqf5UOuF4Qu)sIVPH5ofqwtDqvVupQx)Ua26{|#U#2hP8vcCYciPt8))0k znuD!IcyK3GTqFhodAHKvj(!BCZB)cuC7M;Hcf%mQskTc^9$!g!>; zl@@o?i+}hr)I5m*#gkfKaAT>)MDc4(zysq{z6BO>i~(#ygq$hpC7;xX^%$g09ybcO zQL<_=9RB*e=h(+YmQ$kLb7*Vn>IE^1;XX<&a8Gig+eu*vb1g7TAg_oGLmQ@pVtu#} z(qEe}d*th2TV3AF0$t5cUFX;Q?K$Bcl^cHZ?o)}=sE~$zjD3f<{jg+FNM0)Tt}%Pc zpin37zkF39QN(gg)8%@kWJ~=2S=VgEUB`77zwBzfbH~oozb)(&jS6W1t~#~@fFZfl zy=qJ_Tc{8i57v3!&icEa0yrV~{E4~)XBv(+G}T7Dt|(gqAQ>hZd& zd-A7LRhKV+`*AhzV{bNTexCsOCdFj^^&5|<|I?_ON}7Qo6mR`(-7QLs5&(9|HPfxD zo8|vJd}|s2?(Z4^?(Z4^?(Z4^?(Z4^?(h1}0sjxzbwFYd$%IM(0000rOPwKuUx?b=(>lqhXgQG08RQng3L zUNu@0>+Spg3GZ{xz0arn;okE*_nvd(4IXKMX&^KJ0069`t#0(s{r?+OB>!?FMQJnu za5G*at*}@Om*f_G*=(}=qyH~ywgCb`lp%SF0jfx9jDeM8L!457L zPlJfL-u&FuiVKPyk(afTCVr0V0nN(CCkKS9qK&Q6Gy$Y~$_aI_DL%qi2a3-A|E(>? ztqv>XF!N<&bWWt7RIvb>2Xol-Ya?abNnsCoHhfz_BP1H3RX*O_+zg~#J@iMR=1LA? z8!z&;pxkq`f9PiILhK`NP+`Q`WBV5NO8IS6B-@v zx=icIsy%a8qBn7s|2mgwwt9jMku#jF}E&#KA5_5N!^S-b{_ zbJ4qZ>!+fQefWyz34?Y~)%5*luQaH4UR+6p^w&sohM+TGkmQnVQPkg)34Jvi%G&#k zG&5QtBZX7;vl@Z!)kj8VnP?sKL-P||9&*X2HauURU*Ql?en=NKsP@gb7(SPXSM&)#g4MrgDO$qZ~{cSq%$;PRP>+5 z*B*baTGBiaRmVQowaU#1bZ|V$eazDh1KKJ!;+=mnD`^RqkCQ-Z*vQrz8er&2`b-XC zX5%a23f;I`#C(p>)^q`0m@`X>DY2?NqG1SsGV>|L2a7cXKm_Y7KGKkohx>|HhRgfn zjr+7r0)kz-UAR4~f7$ds+ov&bG1d5^XDaJwEpOj0la0`yB#%kjg|Nk|{~AcU^Um|p z&mzSjieQiZ`OgT}U^X(a_BOjh=^3@+6TIP+N#+(J&)b-bAGz@Tg^b_QmR}NEZRTX;ZJ2y8+$01MF<9DzKZh4EWqwoV-6%)t~ zX1AwbE~1jo664;gy2vS&4dpa+mEWcP7_&rS?=@r_g@c z@lDA#)vkIp-7eN?qVmV&B>eBRy@&cQL!C^|oTE3N#?BKxQTyd0r6&Ow@($dAn?3^p z=zT9Pkq37RuI814RPLMP4fVL1?SRnlfDc}Ym^XWGRp?~cGUudw7OV{3pl_Y1qum<& zhc{V$$t|2H24?(n8W!ABa`7?9aN=O_3&o`CZVtqb}2u>Fad+ zGmYBKhYOb!2kn1e8_s5ClDrA+FX3$|8EsFQYoMP9YHzSaQ4HzcJ`JVMCdJ@$?>|K1 z5tz1sgVnmr1M!+-wbBx9NesLRhr2=Fv1bbJQSZUVMUuJoJehY7V+eUi=5%BLB?Ws@ z1LPl%FC=^M*LhBnoFdrD!LPKYMB|%4%(3`k%eC|b$nmM$jh`kOWOT8T!U^o(Nwb6Z0}u;*bUhqXdW-I zNAkl=Cz;&REN^(=Z4QZu%Vls2BB_?1@`qS57yREmXs`hfdA!8j{jCkkZeu}kFXt}JI8cHk` z_Fd)uS}PFJC8gR+1|C^|?I^3MJ9M`HP{(0vy(YBud$$zd5yU&5y&rs489X#^`=xj* zE=?RHpNGhdk#ZsH^p9%ti1`Hj>_Bs}oh3?NYKu9rW8{17WKnON1&rJj;das9JVpy6|x&WkPXD2U#D)3YwEbnJil#8Rii^Oh^hXr?6Ib1|0AeHAY zt)-)keY;5Cp*N#(k@K)WuEI7&G85qaj)zIP5CtP_NWZAbvZpy&#GuX*Hg;LmI@#S) zxeTd32jj>;haaogDE)DCg72Bm;uKRPs{!6z72mndr;K}YCm{c=^B(SJ8&C0?Q-uTg zM=czD$?Pl;x;7^gf@(dsL-sf9 zQ~M!Brlebo(|iL^BrAlH+;_lISpaQhN>Tb-^^N{1k&*K18nRHKc~ zAzuirAQv5SwI55^^vcov!XP&L+Dz&YCAbh_&XAI}_wR7<4pmsoFFTf%jbXItOFPY3 zVA9}b*Z$YS9HvY^-ih+EXgq2R)Pm3rk18VXlpI~o~ok;g!x)nK^;+!&WW zv4ux0YSb89(rLk0y{37;pWPZ{V7t6<&AY^hL&Er(d&yAl=6><* zEZBENx^K_>qJ}Z2a0?IW^`$^Smv`Nnn`UmN=m(g>k%QRSVfST<;e9cra@@s8tvHA3 z)2?Vy<|OKDRXuB9$*~@EpNx^p1KxX<0HM2mmqa^q4 zVHwS~Rhvobpm2_%az?CxB`o@tLF#^<jY{^B5*`B5sps6q;J4nB=H3z!QL;w9G|^%d}(r zhODj!9Tlk2_ko+YW=g)|FLBYd-lTMHLbp3^?dQ-?NsI_(M` zZX?l-<=2lAA3gqU9>T11*FxLFD6cQfTsikQbbG?vfI8}_z4gWV;ip`w05gQzrbHvb zA7MColXZ}EiFDwrvIecIOvWJK3Hxmm7yb9y=9|w38bV)`;YGkX9V!X(WyV$T^ZZD9);VPrU2BiMlLX-#vbC?~FE zof=g^>NcC>vC@+3@jBx&o%Lphz|rjQ2URO(!_VGtc|#zQAC~aZshLpTtY{GsZgavu zXw;jXEtHIuq&Jg#!kK>wxUejuNLyDI((#oVMZPfA@U+vbp*A0m)H;eg*_138#Dwu> z=y=?GlDF@a!eZ7*FEyt(_wz$=>-fd-U3$J{eLskJjN0ptK(}tydz>GrAkTFjGx${C z<-o#tUapsH5o-?^`P7PU--x9&0oRkzufi2o1V*#F6t#>%We`|W@|FFLHOCFu5T^?{ospIxjpHfky z{4TqaUS?|kLWWs@)uTWw9fpp* zQylhC&AOvOEf4-Zs&w@`hV(c1X>*fEMHjaB-H60)6^dX#XBa-g3k_4lCIyNOF~4`c zJ{jgS6R&>UKr6q5r&fGe?fu(S`o1EA2D>1y&;pZg7%T5+CYZ0uu%wD_P7Mr;621W5 z(Emt3q#pa1^ZJlYZwh+vE|wiV-uK<975l8K!;*cOQSz(gcnTL8ta!73Ehm8Ovv1RgOJ`GC}!_B8*Pp%yU61ZDRj*&kQQU=6)I29v; zm4v(r*OU8hHmqZ}Bkk2ct^rRn)WH4voT@~x2S*@_kUi4VCF1GoxaD*kz4H7NVdU!l zPV@T>7i+^bJVNZ}C#+`qncJ%gJ?QdnG9XA}{Z=-dIi1j!@Urn!Tgy(00-Z~v6Lt8R z&y$6(1Jq-j?zn)VF0Uz01+yY$kXvMGp;7IfLkg~dKUnS_(Nl75$g^wnFL(bvP&l;88h)h!Wo%bnT zdN(4JW&*Ew$)75O%7eb}u(~$k(wEb+?v)%Ddq}>jj9@b-s!kwVx!JrZyyxOC`=V&a zQ7Gi~NfxKP(OELLBjWhUv!yCd7U%KMtMj#WvCli3-P;wNI zdGBMoP;!dya(Fd6DcEVi2bS#_GBmhll5!*gA#XnnvmYScONWn%4gR0Dbqyp9?HSV* T#0>xY%>Z;X9;xG0Z6p5!$?v1# literal 0 HcmV?d00001 diff --git a/packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png b/packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..cf4170393b5df46b4e0499f86b02570bc9eb766b GIT binary patch literal 1630 zcmV-k2BGJK{Fw>UtE(Hc+pE{FFG@;UlbHCy$&*3J9z0fFUfz~1TguAHVq;?o zg1|5g5TRWZML`h0sH!3mQRtaM9(PG{GDQ#$mVLNbSy@??m6gTC#cH)0$AiwSSiP=n zz+!J>+{>EIZ9RNADANPO0*GC^c2!hV==FMkY=VeqC(rJ_HMyEl>Bc%iP;D%bc>X($doM^Yc?uQW6pp zqN1Xp#b&da&E~eYHj~K&OhrXSAy&=L!~hezZ9=#vhP_tsRJ>hSnx353+0#51tmx?I z^78V{n>QyWCc@G{@X+nUNSuyS&8s;jG$laoUM-7Dzh zb}=EDPQ8w-P4_avH@Jq{z+|T7>$HoeTobaeAc2k_KMp~y zJk2EDWkS& zjn&lA@b;$NPCKRz2McUM95x|!G$JFAz(_KIR4P&(!RBSWKoTmJn`tpKv95NT9L{mg zs9H$iLKfWsDZP^#M+>48e4)y$kYqyBHlZ`}E*q7bzPjm3qXd?h=UO}eD$>8odp$~0 zF4m39f8<2*d}JQBv>4$b96vyGjKX?NT$NoSjRm^UdScDW*W43I!YFI@bEf8++U`9& z-@&x85we*;8VV;UFSysfgC9#{nK~Na(>a3C(V`ri(9^nopI1Upx65unI0a!Az1~7cL5S z!zn5W-}^;jPN^&`u!%QcdEYgHsl%y481Ab=I-2qyLSUvGPWw&8)R2~Euzzk|Ioncu zy|;D1(lb73hYosOWZdE;cpl75&7XOPK`+pJ3oTIoQo|m61u;&2!vZJ5M3j}HE!=$KYug_APFppylr$y6%i$hzBf!*7l#c^^i!;ZgyaS2&YsIdx6QV( zVJK<_y>UrQQugw~#q3&UMAtU>>!J3!GtGvDruU;U`Yn!ids)HWO*!p&?dczDPV5iN zm0OlxD5mx2f13}AT&#<2^<_m{NBeQ-u%@H4^|J%pdit+Es0+^>3!=pf{A9oG(8+K1 z{7?Z^{LwH;V2wNMuwIQ95B+qc>X8BYCE-b*9@sVq*O|X0upSE&TKMlYJS|{_qXn#R c^n_yl3y6%yuZ*0>c>n+a07*qoM6N<$f{q3o-v9sr literal 0 HcmV?d00001 diff --git a/packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png b/packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..422f0b50386b8f4cc2798e5a5104882e5c023846 GIT binary patch literal 3248 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 literal 0 HcmV?d00001 diff --git a/packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png b/packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..6bc5a04f2ba9d8d3389010f27cff986d403e5d20 GIT binary patch literal 4372 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 JN(IZ1{{RQ4bl3m@ literal 0 HcmV?d00001 diff --git a/packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..80a3b3e58c467d9ce6f774300a079f6c00eaebd0 GIT binary patch literal 4546 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 T#0>xY%>Z;X9;xG0Z6p5!$?v1# literal 0 HcmV?d00001 diff --git a/packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..07f5fe1f8bd07220b88acacd826b66f04b510c3d GIT binary patch literal 6569 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 literal 0 HcmV?d00001 diff --git a/packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png b/packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..3af047f586806f04ac44d4c728053491f4705f6d GIT binary patch literal 2533 zcmV&fd_v4&h+J^gwQyaGZR#M|KuAy;Dv+Ql&@`x3iy8^2AW_vyDTO8! z0u4!(KhiWQNP$8~pcq0MyESbHAz*_OFju+EX?wl*Tsud9JF_^(?C#9&+Q3%+Y8j7a z-pstuy!ZS5es2VU{!c|b=nf2(hQTsT!(f@FVX#coFj%H(7%bD2NnozR!e=H<+KAr(8D=V9~@Y&h(o^|`&&Qm8$>cJzOo%&B1)IRHL z{`~o?SFavFe!SIc1tgQnl(@Yo$SnHt&%FN7`J8<8Sb52*lfQ0m-rC--`=I*=R$X1a zX3d(4iVC~k4nt(*lHl!*mSfi?SH0$aRz@w#>Ea&vQG z?&*$FRNcpI`yMaLTiLGE_<~Hf!?t((hdY~_3_kIGfUR1!3Z`FHRuCs8BT0aGsA37NOE+ z;2o-&yU>`Y?rj(evuqB)s>&OTJUT8|b93{`l`B(-tAP(7ah?^BGuFA7RAcAFz7IiI z^CW*KDjipzmouuzb3^C3@lH%As19@Ro|0gQDR?!kB)|e>;5+JWMU9ZJAkFJjX|j*N zFhZ6^tjbm2*s?Y8b7OK1eO)@|bT|fn8G1>Du`uOR{q2#GFS?u5;lE@IX6;GrB zcC-7+#m>{?N0%|ZgdG|DbT%ym@#S_)K19ejJ9smr901of@Q9&h<#Z@iXq!H%D5 ziTqJatOuhl>6yMPP(A;N?o-)l+M6h^BITQzX_9h;1wS>ptS%KW80C{^4wp}?VLen< zk(f>i(%AUXlcRk$niQNabIA-u7%2AROARv?z`*o3zxRuH%@SGp;kE++riK}xGT6C` zmo~q*_xg;<&;Q{2jOZ-HEotR@)njc?TU|w90VDIrg3rZlmIw^O?57LYhzu^UDb`lt z@_*T}d)3c>(oi=I_7y)1>rN`|I<2p^n&PV8)AUZvHi^L6&wdsNc_AAzZrtWfCCuQG zUoKx}p=oU&CorDl(+7h)Xtfp0##F#SpSB)=5+qVvjY+Y#(x^0%6wYyiBW9(4kDzXb z;f1sgJF+ZmUy4w)_{8WO1YlEKahEVUeT8fm0rOFjY@c>*1$W?BHb$l2Pe8(P9MAKd zAMt)F%-|wNNjxTtCa`D|rkHSrpe2lyp)t%RSWv^vN*e6b){kMUh!_jC6`i=PzG7GU zs$f9iIKwa@kHU1(tUFs0?t;I1^Srj>ux96E<@X(j5+oHcSkGy-728WV^V6-Zkh<=? ztI}5mQ!W7N!u*}~a4=d8Kq7_t(t7I9l^f^W-dlIw1Sd<1C&7vn)-Nz(u^*({6$mr6 zwlYgnXb`~qSNiHe1%p9fPuP3W4yg%_czoTv4!*Ug=}+-|93)EN^H0er zZn34ippI7hf&e?cJ-+S^2dw&#Ixl|n=2G1+8OEg#2Ja8nosco0wvrzSConYat9_p$ z8Ci)eQ;-R1pTjk$CMk>wa-J@>>nkS`BUD?qzWDBkuMQTHCPNMmK@4C#WHX7o7fj=U z*(HW0-cRs;G8`gAmJoSNkxUUR_=n3lB@-4&2y>(@Y|lrZY{Ev4S8~S)tA0QKQ2bhU zXu)8fEdSv~@Lw)~sNB1dA~@kN+e?PJtdPeQDYm=7agl`|5pd(j_K6s-$dU=iL$B_5 zZYZdbL9k2LI&O4b9#t?dvY;Lj4KoORNTZ=H%HNp-J%%F?{jH~3ASTaUKG}Kmg2&$t zO9WUB<~Z~7M~oUh^3n2%wcjkAN}7wpJQ74^`#=78=**B%83jXXLHta^^W2@;2uO?v z^IpsjhayJVa&*r}P466TJpe{L;6h-7U+1k05U5&RH#Vn|!mXX&6P)NDT$uhc3U=(P ze*ze!ns7J>p60!54P1j|m8tFYzh8diN6>HMkG$eZ^buyTWEAYP69-|d$R?=tgE#G* z#|#s1%eI$3IQZ63b}w}q1@roQAabCJ>FLOVViX4ISASTPpg4HoN}^x~Zv-%)+PY_B zf;IU=q9ni|n?3iv7uUc2!jAo0hOR?{r6jHYKhOR4vtB2+P vD-ODb!7@$5V40?2uuRi1Sf*(hEYtKq5jCXBLcsv300000NkvXXu0mjf6yndl literal 0 HcmV?d00001 diff --git a/packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png b/packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..02c3d7ee96a1556759aa4ce3b70adc3eb0ab152f GIT binary patch literal 5459 zcmb_=QO~9xuRk6vcVm|5q>tdNT z!`q~L&U;Q|d;4n2JbP`&1{+5%94pc`%oVT0z}j0zq>NxrhVUGXA|OMstGUzJ{fS-u z?@2rbO)kDodH;BMHw?Wu&UUYGzWcuI*K^TS8N$g~ zRVHuNCBAXe35aE3Mnyf>2ab-8uC4<3(o#|eGsT{+%w%R|1qKGf-zq5FB))<7u^`a9 zSQ&eK1{oy*%CWNb?0ad2G#e_x^alc|YftwXsnZhaFqou%3LyPaGFBuX)bDIWDwwz+ z^%_%#&VSV!hZV_+rlx?S)n37&+qspY zY@_Fmtv6l7;Cmu%ja;k~IImID8v~FcKc+>f+7#LJzW|~sRu7qLqlv;y;2FA_uH-wE6miC`5`=u zMC~PcoXf;k=U>EA*B0f{wdpshsr}}jIoYP@VSWm<+aVVa@LIbsH6UYW=iPpxb~7Cv zg14JD(b3U)*ZJ3UFCH#jM93e$;E3zyO-Y$5n@}r!^2*1j!z<>IT-}v_bnUPS8D)4W zuGC1#yosULI(G6;p`!u6`%>k3%bU0B;q<+n@y(_6?JZrd^>_xEKV;$mu1^k;>ce`3cK1C%ldob%c)DcM>&PYmh(h%}hT`|NguIaqvzk?jaS34ob7@^%Q8sZ=n zc7Daznt#7&EKuP2<)q2;Dmu3uNbD?o<$bPJDOzGe1Vbk6a zA-w>52m`Y1xg>4Y+sdaE*-1%S@{S)`PewH$zdkCuyFZULmbzwDgO(CC{y4UOT3EPtbG{(&wW-a=U|Q$EIQ-F`sR1Na&<)idYvnhk&J(jb z2udDSY;&l+@Lo;drRMGA)l2iz^~VkHd(OaY;-0=M4+1#a*#TfSu{uh?B_*bmWQpRh zEBSnhfJ>ms`9g?%%gI?*mTMd1jG>FYf{0uj1zX6&G`8;FvUYIAH<1%G=Z}VL0=bu; z5h5(sv^KC72yVop%|g)epbbz%X+m)Pv+||qk-%lS95*Q(1<; z95oRcN2CyAp@K|FN?p}uV_V~MtFQYIaF6Q_G=piib3*<7{qe1hWm$fNr|qPkD}yEi zqK;IPJ-`s+a5&XxMCd)ru5nwJmUUEaWk~v)F}@%zH$DuU zi{1adHr*0x;!^|B9-}?bx^r_yW+Y0p;f44esAXsG2ktRxXy?@5{tB=lVo2_KXU=!w zztv9)b}n}~I{EwAv~erN2GPzMUkW?Wk$JM>&4UK1v8bcZB4ecvn`hB@!qSow|Lu}* zkydZhXunua1=b=Ei?X^GCpNUZPQS5e28DYoh6IFz89EaGFb8V9E~Z(%M$@05 zP(XU;U=>-yhJS-@(>BmFt3pZPvd^I&43#wK;;1)J87WU0!y)WaHS*S4s0-IdZv?^NuX>uDCHf3 zii#?X31o<6%I*;m2CpQ%%)Sy_r%e8-LT@pKBGma79 zfn^vQ;&Fk({p*DqB0o?lcJAg^E3g<<_8y|diH!gH2|Zm87Da~N=$vpDbx)0mRsNU2 zL>IexmM<#5nP_rs58V?ZbaZg|xN!1K4o@D@To!3tJlxf_qCz1pNcIW;t6SAKd% zl}N<8anm7Vca)Op(7hGcmi{S$`?;9$tj8ST3W*>C`R+`8Wkp3?->*MuJ8B|o?AOuL zACS&DafY>QW5AhF7)5U4+vglQ-6ExLbw`C;jEVUBImU*rA9Kg!uc zqNeMYj@*P+3fO0K!;mS;p^Fyz`jwKN+l4EHJ3rQ+_J#!S89GWQEcvN zJG0Gmdm=3|_;|S{S;F$5WH(|rBQX89ycMVxTz-VO>a*~vbU8KQo~MO zWs&Bqt9tuOZ)6de<@XNZH>+z$yjr*7MPpI#OqZZZzc~98V@GBE;KN|HaQ)#SjhYmG zpVq&`E&Tb;tcG9xgq`Mtckq|}i7s%+0+7Z+0?aApF{CUV{zhN_s8|#L_qx<9L`D@* zQa^oIC1V!!%(G9FR7IEt#&8&3KJX`l%ei0J!>2`MEXdKz3h|Gi;6cw3RoU(Z!Ksz7 zjW6Rb3L=ot9$Tu7ejlYEOP58DT4SJOjx#too)gS{%?7EK{>%DM-8}!vY5m`?dk$g% znG0ym6+~+BbAhqKX*3f>Zb#$2O4nb`o2x!%*qA#;vZ1Kz0w85?Z}c@h^F+Utz!)+f zT-*9Kz<^51rqgHh9r-yOVScEV$$U;cr{z+O&n+#Om3JV*nT~2*r)tDiucnjJwF+jbgUDWO>@9^MC4|XApz8RdpECYkKV$Sx*C1co-`Oc zD46|!9LzfehaaQPRj0<&qRW4p44rhrcZ0O1`HlELvXpg4zhJx*25M9CWLz$}BhNNT zN!-Xk@E9&{aYoCZWHsQzTyyQ$m#C!Tc6*T2<{)}pIWi(Ka{fLg#5A%%z~4GnGt3c+ z9k;0E`=d#Z2VAer50XRfIAilK`1XggSj{ylB|dL`dgC>?uZ^E=sV9x0Jir1T?rVZ0 zCkKANZ(%H`?-Yt*+REta|-jL_dh=ndp4f>IMTM;HbEo z)o(ti{cxi2scJ?%{(_qjdm~A0?bggXTeB8@QmfDlx0eceF3^O?ejvt;Z`3LtnytM+ zF)#dnCo9sgL8)8>cvbyp=_ro($KZ^QXvNIsz^)!MmOuPeg8RMTnCzqto7^&01HYs& ziG22+b;|%}3uMQ*5bJJ)zl;>o1}c{p+k5|GPo7?mxlr3x=A-O~`JzfJ4zIoY-#4#qnEn|d*cpa- zWqH_iU|S;wo6tK%Z9O8lc)!8(ZKL^+`hKz1djeY+)?bXIkQTL%3e@tsJ6h$oKX)yb zb7?8<1IN+q6dIm;1jah^*7^q~TJl#1C;Xi^FRRsnkCE#Z^1+-kZ8`4^3Bp&+|ClB* zdS80aWG$HLhEVW_e&st#{YzubWlz_OL?AU8h9Nw6R*)E8^GsW1oT6rgG?XV1O2&VG zSwW4ZtgU8^r;iGo{3CnJVaM!mM~atxRq%p4r$xcvl+wRK8YRbE=$x1?6WFm;IwaVN z8IS1w+^NTo(|Zi1lJj7*-s%P%Dm!d_yftvLq zu11k5r!tr{v|VKpEl`jW1b!gmfx>>$VtAdZBb*qGmBTpV=!hvmwCsHeVW3Cc&kf0n z2E@}4o)iagwy%muFm6pGq7~!w{;C2P8#A>i!+_->1H7xN0p{W+suT$JjRi?=1f+;! z-gKTR<#Nq$5b3K+>rae6Xq==Flx-ddT6XTOlG_kGxQ<5a`;-_WxHEX!$xNev;u(%#zoNZ*Q2gh_Apq>udS@)aT8wXk{}I_p3l}6aWMv!Kf>o# z;FeA~!@1yx7!_8wo<{LozFNzCJ1hw9jb`{+ms_{jW-}3_OQJ#-RQQvnM^!}9rK}V5 zo-|nUHK4`{eoK}s?dn?q7^*r;wcd?b;*6~}QxvY{O*Q!WsmX7hvF2N_N^1sjKz9pp z=5DhRr*jJ*$g;&L;<*z7T6B&EIzf5B(x3bu^liI87yJ@$GSY_6*rv(2Bw~q8J^he; z7r1Cgb9fD{_T4!gt@Vxt{_yoJGk-sGzwfc+`QCEZ)&k0iN-o_U(kz;!$^lBfJ*CaH zxr%3aBK&3h;buVP7VdQa#W%5ZFKGf-mPRy`i5#=ov$ZL$^W2?Ws_QY$bMZZj;b@G} zDm|;QaSsnti=ueZ;3cEWxpK3a>Vtpm5PrASGu8{YoeG6LCEMP^q?>l536V9tF~OS7 z(zlbxFFHRZ*c+=*Ws{JQEEf7ze%;q-KlyQJjA>OTJ%0n&ZJ9;Jjp&4iTkO^Ch7UkLb%X{yid?e-k-j>d|~mI1@v zR_E9F!FiyRmM?~YK;1X`AILu(k`*-f&qC9AzPsU!3S<#>U z>UW-G!j;K(Uubi$MpvWl3O(605DcmfXeXu2qF}DJ;?E~>8dGt^;R_dMoBx)vBgomI z8S|m%jGQdlpXk6_u+ZuXg`$B2fhi`xSHI-zxTRa6h4!`Vx0TI&ayW=@J_%(2G`)l` zo&{j3LtAa~f#+5m&?NMP4@Tr7!CdD~_mH{%kgW8#Fz^?pX9w7DWE&&zBjkGS;S-NI zr^InZP5H`JO&<034~+LW}cJqe~MAUk~2>)Ngnf%3BS@^uHkfzI+e6GesTql1Xf};o{0+GF1H2t~r~!E0ratdTc1fEPT3#z# z+H&?Y^}RNfEi5lLG3JcVN$L|2LWzYWvN9N1fJ?h*me?ATZ)YYgzx>N}I(pRC5n0rl z6(O#M*niZ?Lk24T{pt%h0aRvgi8}uCz~}m!{b4M6M^4mvS~NYAjNzLB zZhW9P%hM_+8pb$a- zI<@8e31nqZRG#%zi+4ZAgzKeW@Uwi%LEecDnp1~g(36##ZB6=}MIN$5PJ*@H^%eiD zp`Ghm?Ex!MJ7@FRq4_j|&PhtZjSyr6%{noc;R0RzQDtUi9J>DRiDiXIcByz=AHfg0 zEbg)-ce9pCFeW^L(}2yKSG?tVfBY6XXHscqJawQ+AIDj7tz8x1PaAY{=Me?R@|$d3 z*aWD9%V_`fk3CC1F>EoDD#SGs;%Ftni^==?P<*f7`e{xm; literal 0 HcmV?d00001 diff --git a/packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..1c6c934126c0f2926d66fc739cfad96bdce245cf GIT binary patch literal 2851 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 BW*h(j literal 0 HcmV?d00001 diff --git a/packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..274756ea6009a5f975e98cedca3e7d5ec7f0e37a GIT binary patch literal 5672 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 V=7g84?mq_@prN7zK`7gV{|_=P&|?4q literal 0 HcmV?d00001 diff --git a/packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/packages/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c327d9225aa8bb1d52bb6586faaeaf731f9c1315 GIT binary patch literal 4930 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 VI&f}2>*6;?W26t#tJZxU^FN!<*lYj* literal 0 HcmV?d00001 diff --git a/packages/app/ios/Runner/Assets.xcassets/LaunchBackground.imageset/Contents.json b/packages/app/ios/Runner/Assets.xcassets/LaunchBackground.imageset/Contents.json new file mode 100644 index 0000000..8bb185b --- /dev/null +++ b/packages/app/ios/Runner/Assets.xcassets/LaunchBackground.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "filename" : "background.png", + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "darkbackground.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/packages/app/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png b/packages/app/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png new file mode 100644 index 0000000000000000000000000000000000000000..f3967ffd046abdb68883d384f85e6862a964fc9c GIT binary patch literal 69 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1SBVv2j2ryJf1F&Ar*|t4`-ccV_+;}*m5G% R#S19T;OXk;vd$@?2>`dV4_E*I literal 0 HcmV?d00001 diff --git a/packages/app/ios/Runner/Assets.xcassets/LaunchBackground.imageset/darkbackground.png b/packages/app/ios/Runner/Assets.xcassets/LaunchBackground.imageset/darkbackground.png new file mode 100644 index 0000000000000000000000000000000000000000..74d41178b8e444eb589ccc4eed27e42cdf749175 GIT binary patch literal 69 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1SBVv2j2ryJf1F&Ar*|tf@K0M3=H=eGI_-o R^a8~hJYD@<);T3K0RV|P4Nw38 literal 0 HcmV?d00001 diff --git a/packages/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/packages/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 0000000..00cabce --- /dev/null +++ b/packages/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "LaunchImage.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "LaunchImage@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "LaunchImage@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/packages/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/packages/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png new file mode 100644 index 0000000000000000000000000000000000000000..5cdb723a23c808f8f6d20ffac81191a725b9a60f GIT binary patch literal 5128 zcmb`L_dgq6)W=C;@0r^D7FAnoS8I<3p|%>O_DDX(K@ zjE^uG85ai9k!{Xg zHEX6gx2QIM-(qSLfk|!Cyw!rT_+-wqSm!ut25h-)J^(GTYXpeS2~o4MW-m{!xRYM2 z%Bqa}%_q2oxP`1wT!l^LC^wBxESwdQ3Xk3$O{FlJiyC!mgVinmm1|m+nB!@4Y3*Z8 zOT{0H1yblI)~Z)wIPP$C0{-uZfo?C z^X*&UgpWd7NQflpGkdIBS~B+-cni03kl(d`*~E^u!1u6|>((n872OXCH!+zGO?apv zD;q!`mAjZcUN}GtcN|LPP+RH<*uJ|a1h`TLI4qy!1F?#Nr(Mk5#;^7@OiM{6&jymp zC*I1s|E_6U`3p^m6n{6yp*p)0n3bE$ZfH}JC!DT3kiEL^p0as#X1%WD_qE-BBPlmO zKROO$_14g{K4R?x9jRCOgf@0{PYk41cSpp1rWS`=c8Zkd2nYR_TU8JhQ_`EhK!3k- zj?nKYQ?K1e<0FUa9pZFW063h?o1q^TM_+tMHnx!(_yByN&PE=QJR8ZHs%3*NP% zyes{qIB_y$2BnksIc>+pr!@`F8*5}_L|Hcdwc48AqOF8((zQv6g=1~v~gYNJBP zHfqRT-oA0RZ~UcCkSI9cjP_}@zOT~}rk=@c0<;?l8-vV45uE$3X0C65+GCEn9a-MY#1-`z|T7vTeo;w2-~cf$Gt`% z#vJvQ0!g~(6AWTM@ue)?Ef^2LM z9v4BGi(R~jj22&BmU^!>zwpo|*3|go+%5n4xH$(LQHZ9Y?%?NhSJNU%Y1GQf4<8mW zVBUinC;mL3gu~^T7prQFHD^j3zR=8N$q>0ZB~DAcmJq|UBEl3#rl3HCwFV)I@?uZV z{ag17apwR$xN3kta}lmKVq@(Zl(bkUnMqG?=;_^qw2wwt*EH(!P^7ocyqm(p=I z9JiR$0MfVzwx^2DW0rR4jLL>}SYj)WMnK)Nyh=Cjsb_9|M=D{sm53c@Ns`iSSlnHT zjeFcvyp4}6%ps*_#oPtxC=hbKAuxlCPTbsy@dMsQlj7E?UnTGXzw{^iY^I;#z@K2o zLT!#BiwOzEdFcvjtJ%^Pv^w7Qy;!Xf2ABq39cczU17ox*rNQI7<_?4W6(;f63+j~t zPGupp+&&7Eg--S46dl(l1xt%#0X!X8s<6dpp>cIa|IOnZn&9ps>AcYXyc%$gB+d$s-Jax$FFU0aO_ieMX#6emF4PIgkIQy7OGSeo zk(@46qEzx{$Nz?!xMQ^eMy&J+h*M^KbxOW);PYh58k>{(e`iNlYg*q^xqO&E;h*gu z+rU*KCKh#ghSI3*m>;%n`cPRTq5T2mbG}7NiHug?Ff8rQ#`7fWoC2bl@y>oqu&v#Gm{}@!U ziGL%@P;=pJArFhV5m_oI?qze0aq=}7;vg7LTBm9n( z`$+evqk1>rO_W((`l^Y9QU4*FLn0OYktZ*S1sG4l*Lvk3s~UsgbPk1tMI1h7nu zfHgyx9o1raRl*OG)R5)ozK%#AR1!dFK)dhiL@>s=j(7$l7dfc49rQp{4tDAlmu@_2 z{JyyGSztK@lDlmO!8VAHyKlNYG#RM29WWkE(#U6lvj!~JW>mbrr{o^Gc$U|saQ8P0 zNBQDI+qN}zzw9g#Z{z-`M}IK=1G>b1ONd(^WLbL_KOKbp-0*Q7=JZogO#ghM1r(W> zRT)*pv(8@jAUkCemaIFA4{8KTeL#937HASP@;>wMgPvn#MUCSb1-AFCYLRQi9I{G< zBLO>#Zsliv5L3NbZ3@0f-QTA>@mCVOCeOiJ7pe^H65%qp$5(>{@r7Fwss<1E@9|;3 z)Kd2?(*TWjZzJ3`2T``Vdy4x?EJr707h1eSFt(DM!u)hcZhTfRA#XGOTb_-hrS>_9 ztBHJZf-Hmc37JR`7^+okt64htd%5%CMVmAY&QoT@UtyukZ>QE+W4~vx81t<7Z63Ne z0lu@^NGA1?G*|Q*FP6 z;tYbS$h3N6^HehyuTH_$R42^P93?!y^SkQvRU0sWW4So4EnZYTNkZ>xZ0(4I*9M$|DSe_|7@c-NERH!hBnq_(Rn?PCev(Z1$GC z@Hr0G`vvFAfQbrYmgsW610UvX_xUT0ab-&Mc?%GMa6s8)xtfEyhtSN2-v%q)x?F)5 zhR(A894zEjYE@@wWVa2IrW4KjX4e1?4rQL})%++=H^F1YvL3$)mk$nlcw@RS?g{_1 z3~Ooe)DOt2(5;}>LK}q>x6@S$QeO%A!Y|pL>E$*L1gPp7rYB^XB8>MluuN;2M+KB- zE56_3?NFXxsw)(}dwj&>I{w5Nf9C;JXa1z#{AoFwT=r?XyILbWvU3b{hmn`Bk|u}7 z|3kR_vZ7skv#LswMBS9|@BD!EGxkpQd~Wqq9#Mpw=H5yONiPU`msYnaz^dd38evoW zaLuey8Aug;&V|hW?jVTJy}kP%;EzoOhV zU<;2?`keD(!tK7P^@6 zs9+rEt9hwM{Ugy|0dg$Tsv^aDX^;_1v5Tm<^d!{K`y=P_!R`ECZgg?sY&N<4;%Oo` zphw^Pl?P_0eOq-qqm5b9AKgS$n1Aj1t0BiAj;t_{gT6v}D;F72A|(n2J3I@WL2Xd< ztJny?DV=mD*zaUwx+*6bw1|LpcUrX>8bR)$d z#{E$Sw73SBAynio`p(8SNhYSl9uyrHl+`@u{_)&&_oKQTbiJgkd_RFI7DxX?TQfSf z!e6gLks(qM;M=xzhWlBSIF(lA2!l{gg-z-i6e&%9lrJL%a7CNS?ok(3ejYYgLJ84z zO+-BS%m~;hf2_j;732;KT<#t*7O3uzn^E<@kU~^Q*Yc3xo-ZmY`Ze!5-4Fz8+~t?} zEAi#Rqqig2YG5b+T&*hu^Q^dVO)G3cV`FA%&mmDVO~ z7i9dt_M6m&HvG?P^EsUM?Gl{K)wu#o`D4z#<5T&8Gi-7 zUtrJCqmTPr!m?;RXpWqt4!74qG5?*6s@h5Cca zSVG?SczVFy8m#9TbBn;H%>FAEIl7PGN^eFIK~Dy2uMXgSAZ_L*1PEtK3{D?Ghyr}B1UNo|=CGnWStIq8b17v4|s9Kdo&y0edyg3T%2Z%Z1{lB`8hjVejT=uIoxwI}Bk6 zRe6(DcuiB{!GZBL1$7Fxuvr z=@zbxI}Afb{w2o!mrI)`?GJ)4N&p!>`kVb3J1#|(jDFuWpO*4GKTM3yn_H>(pjb-o zQT`}>OArF!J6CB;D7Y?D<7iU;=?IES5Bb{SR-IrH%6W*`n2G}GiQ`E=C&AAP=j2?f z1!gG8d8^jNjh2+7TqVf5>0^sCFDnjT3t>cGRbB(sbZuK8B*Loy<8l#XLa|~VW|New z2|PT$#Fg!~HtK|_bh%%Q!+-WTGdB_v@)l7y`_5#G$zH{$^?b{`yD zQ;PbF4MuE?_-jeF-X5t{p7dN{IXJ#8}Ba4MNFRvoX_x@|;(j*O>P?08qK?RnFdeqL7^Tum6R7^iSeSa&&~1 zMDLBdjXsl8z1%x$dw}eD7pgn=x}EJ=UD#!dFuF{>RsV@I9L%QU^qTN1ow36Y>%w6lyd1BS zXwF)bUOC>7rm5))-q}^@CFvZ-Z%K`o=JfJ&L)mC~?Q8Wxmoj^n!a>UB_OFlgruLx$ zy!LHhvSxWZ9n!37yGX)S`*pisLtD@Ub-8r1<%^%*1~`MWUTuq$>UMRe1?2D%0nC|e z^}Ty~n=H~|T~rE_*yFhp1>3t2BMyp7VLV~nfup~5^9^$ud@Y75+I#Fj0P-_8&-JUs hM&JK`jKBUyTkUuz88deft|xqC5FI1!T205e{{f#|{oeop literal 0 HcmV?d00001 diff --git a/packages/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/packages/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..757c555c3a1fb58a79627678be3048ffd4d6fb70 GIT binary patch literal 10015 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 LOQBl+eaQa-XF=y= literal 0 HcmV?d00001 diff --git a/packages/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/packages/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..68d99eea1eb2d21466f229b510cbf003d73c3dfe GIT binary patch literal 17375 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%0DOved?z5i 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/app/ios/Runner/Base.lproj/Main.storyboard b/packages/app/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 0000000..f3c2851 --- /dev/null +++ b/packages/app/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/app/ios/Runner/Info.plist b/packages/app/ios/Runner/Info.plist new file mode 100644 index 0000000..a187b57 --- /dev/null +++ b/packages/app/ios/Runner/Info.plist @@ -0,0 +1,53 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Our Democracy + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + our_democracy + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + CADisableMinimumFrameDurationOnPhone + + UIApplicationSupportsIndirectInputEvents + + UIStatusBarHidden + + UIViewControllerBasedStatusBarAppearance + + + diff --git a/packages/app/ios/Runner/Runner-Bridging-Header.h b/packages/app/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 0000000..308a2a5 --- /dev/null +++ b/packages/app/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/packages/app/ios/RunnerTests/RunnerTests.swift b/packages/app/ios/RunnerTests/RunnerTests.swift new file mode 100644 index 0000000..86a7c3b --- /dev/null +++ b/packages/app/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/packages/app/l10n.yaml b/packages/app/l10n.yaml new file mode 100644 index 0000000..a4f9658 --- /dev/null +++ b/packages/app/l10n.yaml @@ -0,0 +1,8 @@ +arb-dir: lib/src/l10n/arb +template-arb-file: app_en.arb +output-localization-file: app_localizations.dart +nullable-getter: false +synthetic-package: false +output-class: AppLocalizations +output-dir: lib/src/l10n +untranslated-messages-file: untranslated.json diff --git a/packages/app/lib/main.dart b/packages/app/lib/main.dart new file mode 100644 index 0000000..719cd80 --- /dev/null +++ b/packages/app/lib/main.dart @@ -0,0 +1,11 @@ +import 'package:flutter/widgets.dart'; +import 'package:shared_preferences/shared_preferences.dart'; + +import 'src/app/app.dart'; + +Future main() async { + await const MyApp().bootstrap( + runApp, + SharedPreferences.getInstance, + ); +} diff --git a/packages/app/lib/src/app/app.dart b/packages/app/lib/src/app/app.dart new file mode 100644 index 0000000..19aec21 --- /dev/null +++ b/packages/app/lib/src/app/app.dart @@ -0,0 +1,68 @@ +import 'package:flutter/material.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; + +import '../features/settings/application/settings_service.dart'; +import '../l10n/l10n.dart'; +import '../utils/design.dart'; +import '../utils/router.dart'; +import 'bootstrap.dart'; + +/// The Widget that configures your application. +class MyApp extends ConsumerStatefulWidget with Bootstrap { + const MyApp({ + super.key, + }); + + @override + ConsumerState createState() => _MyAppState(); +} + +class _MyAppState extends ConsumerState with RestorationMixin { + @override + String get restorationId => 'wrapper'; + + @override + void restoreState(RestorationBucket? oldBucket, bool initialRestore) { + // The router manages its own restoration state. + } + + @override + Widget build(BuildContext context) { + return MaterialApp.router( + // Providing a restorationScopeId allows the Navigator built by the + // MaterialApp to restore the navigation stack when a user leaves and + // returns to the app after it has been killed while running in the + // background. + restorationScopeId: 'app', + + // Provide the generated AppLocalizations to the MaterialApp. This + // allows descendant Widgets to display the correct translations + // depending on the user's locale. + localizationsDelegates: AppLocalizations.localizationsDelegates, + supportedLocales: AppLocalizations.supportedLocales, + + // Use AppLocalizations to configure the correct application title + // depending on the user's locale. + // + // The appTitle is defined in .arb files found in the localization + // directory. + onGenerateTitle: (context) => context.l10n.appTitle, + + // Define a light and dark color theme. Then, read the user's + // preferred ThemeMode (light, dark, or system default) from the + // SettingsController to display the correct theme. + theme: theme, + darkTheme: darkTheme, + + // Glue the SettingsService to the MaterialApp. + // + // The Riverpod ref provides reactive primitives. + // This code watches the SettingsService for changes. + // Whenever the user updates their settings, this causes the MaterialApp to rebuild. + themeMode: ref.watch(settingsServiceProvider).themeMode, + + // Routing is done via the GoRouter package. + routerConfig: ref.read(routerProvider).config(), + ); + } +} diff --git a/packages/app/lib/src/app/bootstrap.dart b/packages/app/lib/src/app/bootstrap.dart new file mode 100644 index 0000000..4fc89be --- /dev/null +++ b/packages/app/lib/src/app/bootstrap.dart @@ -0,0 +1,53 @@ +// ignore_for_file: scoped_providers_should_specify_dependencies +import 'package:flutter/services.dart'; +import 'package:flutter/widgets.dart'; +import 'package:flutter_web_plugins/url_strategy.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; +import 'package:shared_preferences/shared_preferences.dart'; + +import '../features/settings/application/settings_service.dart'; +import '../features/settings/data/preferences_repository.dart'; + +/// Turn any widget into a flow-blown app. +mixin Bootstrap on Widget { + /// Bootstrap the app. + /// + /// This involves + /// - setting [FlutterError.onError] to log errors to the console, + /// - calling [usePathUrlStrategy] to use path-style URLs, + /// - setting up the [SettingsService] and loading the user's preferences, + /// - initializing riverpod's [ProviderScope], and + /// - running the app with [runApp]. + Future bootstrap( + void Function(Widget app) runApp, + Future Function() getSharedPreferences, + ) async { + // Don't use hash style routes. + usePathUrlStrategy(); + + // Reset notification bar on Android. + WidgetsFlutterBinding.ensureInitialized(); + await SystemChrome.setEnabledSystemUIMode( + SystemUiMode.manual, + overlays: [SystemUiOverlay.bottom, SystemUiOverlay.top], + ); + + // Load the user's preferences. + final prefs = await getSharedPreferences(); + final initialSettings = await loadSettings(prefs); + + // Run the app. + runApp( + ProviderScope( + overrides: [ + sharedPreferencesProvider.overrideWithValue(prefs), + initialSettingsProvider.overrideWithValue(initialSettings), + ], + child: RestorationScope( + restorationId: 'root', + child: this, + ), + ), + ); + } +} diff --git a/packages/app/lib/src/app/router.dart b/packages/app/lib/src/app/router.dart new file mode 100644 index 0000000..78e7438 --- /dev/null +++ b/packages/app/lib/src/app/router.dart @@ -0,0 +1,45 @@ +import 'package:auto_route/auto_route.dart'; + +import '../features/sample/presentation/items/sample_item_details_page.dart'; +import '../features/sample/presentation/items/sample_items_list_page.dart'; +import '../features/settings/presentation/preferences/settings_page.dart'; +import 'wrapper_page.dart'; + +part 'router.gr.dart'; + +/// The router for the application. +@AutoRouterConfig(replaceInRouteName: 'Page,Route') +class AppRouter extends _$AppRouter { + /// Create a new instance of [AppRouter]. + AppRouter(); + + @override + final defaultRouteType = const RouteType.material(); + + @override + List get routes => [ + AutoRoute( + page: WrapperRoute.page, + path: '/', + children: [ + AutoRoute( + page: SampleItemsListRoute.page, + path: '', + title: (context, data) => 'Sample Items', + initial: true, + ), + AutoRoute( + page: SampleItemDetailsRoute.page, + path: 'sample-item', + title: (context, data) => 'Item Details', + ), + AutoRoute( + page: SettingsRoute.page, + path: 'settings', + title: (context, data) => 'Settings', + ), + ], + ), + RedirectRoute(path: '/*', redirectTo: '/'), + ]; +} diff --git a/packages/app/lib/src/app/wrapper_page.dart b/packages/app/lib/src/app/wrapper_page.dart new file mode 100644 index 0000000..55b87f4 --- /dev/null +++ b/packages/app/lib/src/app/wrapper_page.dart @@ -0,0 +1,50 @@ +import 'package:auto_route/auto_route.dart'; +import 'package:flutter/material.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; + +import 'router.dart'; + +@RoutePage() +class WrapperPage extends ConsumerWidget { + const WrapperPage({ + super.key, + }); + + @override + Widget build(BuildContext context, WidgetRef ref) { + return AutoRouter( + builder: (context, child) { + return Scaffold( + appBar: AppBar( + title: Text(context.topRoute.title(context)), + leading: const AutoLeadingButton(), + actions: _getActions(context.router.currentUrl), + ), + body: child, + ); + }, + ); + } +} + +List _getActions(String? path) { + return switch (path) { + '/' => [ + Builder( + builder: (context) => IconButton( + icon: const Icon( + Icons.settings, + semanticLabel: 'Settings', + ), + onPressed: () async { + // Navigate to the settings page. If the user leaves and returns + // to the app after it has been killed while running in the + // background, the navigation stack is restored. + await context.router.push(const SettingsRoute()); + }, + ), + ), + ], + _ => [], + }; +} diff --git a/packages/app/lib/src/features/sample/application/sample_items_service.dart b/packages/app/lib/src/features/sample/application/sample_items_service.dart new file mode 100644 index 0000000..d9492a0 --- /dev/null +++ b/packages/app/lib/src/features/sample/application/sample_items_service.dart @@ -0,0 +1,20 @@ +import 'package:riverpod_annotation/riverpod_annotation.dart'; + +import '../domain/sample_item_entity.dart'; +import '../domain/sample_items_model.dart'; + +part 'sample_items_service.g.dart'; + +@riverpod +class SampleItemsService extends _$SampleItemsService { + @override + SampleItemsModel build() { + return const SampleItemsModel( + items: [ + SampleItemEntity(1), + SampleItemEntity(2), + SampleItemEntity(3), + ], + ); + } +} diff --git a/packages/app/lib/src/features/sample/domain/sample_item_entity.dart b/packages/app/lib/src/features/sample/domain/sample_item_entity.dart new file mode 100644 index 0000000..f2c1ee1 --- /dev/null +++ b/packages/app/lib/src/features/sample/domain/sample_item_entity.dart @@ -0,0 +1,5 @@ +import 'package:meta/meta.dart'; + +/// A placeholder class that represents an entity or model. +@immutable +extension type const SampleItemEntity(int id) {} diff --git a/packages/app/lib/src/features/sample/domain/sample_items_model.dart b/packages/app/lib/src/features/sample/domain/sample_items_model.dart new file mode 100644 index 0000000..5b0e252 --- /dev/null +++ b/packages/app/lib/src/features/sample/domain/sample_items_model.dart @@ -0,0 +1,13 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +import 'sample_item_entity.dart'; + +part 'sample_items_model.freezed.dart'; + +@freezed +@immutable +class SampleItemsModel with _$SampleItemsModel { + const factory SampleItemsModel({ + required List items, + }) = _SampleItemModel; +} diff --git a/packages/app/lib/src/features/sample/presentation/items/sample_item_details_page.dart b/packages/app/lib/src/features/sample/presentation/items/sample_item_details_page.dart new file mode 100644 index 0000000..de05a50 --- /dev/null +++ b/packages/app/lib/src/features/sample/presentation/items/sample_item_details_page.dart @@ -0,0 +1,15 @@ +import 'package:auto_route/auto_route.dart'; +import 'package:flutter/material.dart'; + +/// Displays detailed information about a SampleItem. +@RoutePage() +class SampleItemDetailsPage extends StatelessWidget { + const SampleItemDetailsPage({super.key}); + + @override + Widget build(BuildContext context) { + return const Center( + child: Text('More Information Here'), + ); + } +} diff --git a/packages/app/lib/src/features/sample/presentation/items/sample_items_list_page.dart b/packages/app/lib/src/features/sample/presentation/items/sample_items_list_page.dart new file mode 100644 index 0000000..f60ee7f --- /dev/null +++ b/packages/app/lib/src/features/sample/presentation/items/sample_items_list_page.dart @@ -0,0 +1,55 @@ +import 'package:auto_route/auto_route.dart'; +import 'package:flutter/material.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; + +import '../../../../../gen/assets.gen.dart'; +import '../../../../app/router.dart'; +import '../../application/sample_items_service.dart'; + +/// Displays a list of SampleItems. +@RoutePage() +class SampleItemsListPage extends ConsumerWidget { + const SampleItemsListPage({ + super.key, + }); + + @override + Widget build(BuildContext context, WidgetRef ref) { + final items = ref.watch(sampleItemsServiceProvider).items; + + // To work with lists that may contain a large number of items, itโ€™s best + // to use the ListView.builder constructor. + // + // In contrast to the default ListView constructor, which requires + // building all Widgets up front, the ListView.builder constructor lazily + // builds Widgets as theyโ€™re scrolled into view. + return ListView.builder( + // Providing a restorationId allows the ListView to restore the + // scroll position when a user leaves and returns to the app after it + // has been killed while running in the background. + restorationId: 'sampleItemListView', + itemCount: items.length, + itemBuilder: (BuildContext context, int index) { + final item = items[index]; + final title = 'SampleItem ${item.id}'; + + return ListTile( + title: Text(title), + leading: Semantics( + label: title, + child: CircleAvatar( + // Display the Flutter Logo image asset. + foregroundImage: Assets.icons.logo.provider(), + ), + ), + onTap: () async { + // Navigate to the details page. If the user leaves and returns to + // the app after it has been killed while running in the + // background, the navigation stack is restored. + await context.router.push(const SampleItemDetailsRoute()); + }, + ); + }, + ); + } +} diff --git a/packages/app/lib/src/features/settings/application/settings_service.dart b/packages/app/lib/src/features/settings/application/settings_service.dart new file mode 100644 index 0000000..7dc421b --- /dev/null +++ b/packages/app/lib/src/features/settings/application/settings_service.dart @@ -0,0 +1,40 @@ +import 'dart:convert'; + +import 'package:flutter/material.dart'; +import 'package:riverpod_annotation/riverpod_annotation.dart'; + +import '../data/preferences_repository.dart'; +import '../domain/settings_model.dart'; + +part 'settings_service.g.dart'; + +/// A class that many Widgets can interact with to read user settings, update user settings, or listen to user settings changes. +/// +/// Services are the part of the application layer that glues repositories from the data layer to Flutter [Widget]s in the presentation layer. +/// The SettingsService uses the PreferencesRepository to store and retrieve user settings. +@Riverpod(keepAlive: true) +class SettingsService extends _$SettingsService { + @override + SettingsModel build() { + return ref.watch(initialSettingsProvider); + } + + /// Update and persist the ThemeMode based on the user's selection. + Future updateThemeMode(ThemeMode mode) async { + // Do not perform any work if new and old ThemeMode are identical + if (mode == state.themeMode) return; + + // Otherwise, store the new ThemeMode in memory + state = state.copyWith(themeMode: mode); + + // Persist the changes to a local database or the internet using the PreferencesRepository. + await ref + .read(preferencesRepositoryProvider) + .setString('prefs', json.encode(state)); + } +} + +@Riverpod(keepAlive: true) +SettingsModel initialSettings(InitialSettingsRef ref) { + throw UnimplementedError(); +} diff --git a/packages/app/lib/src/features/settings/data/preferences_repository.dart b/packages/app/lib/src/features/settings/data/preferences_repository.dart new file mode 100644 index 0000000..fda6a3a --- /dev/null +++ b/packages/app/lib/src/features/settings/data/preferences_repository.dart @@ -0,0 +1,61 @@ +import 'dart:convert'; + +import 'package:flutter/material.dart'; +import 'package:meta/meta.dart'; +import 'package:riverpod_annotation/riverpod_annotation.dart'; +import 'package:shared_preferences/shared_preferences.dart'; + +import '../domain/settings_model.dart'; + +part 'preferences_repository.g.dart'; + +abstract interface class PreferencesRepository { + /// Load the user's settings from a local database or the internet. + Future load(); + + /// Persist the user's settings to a local database or the internet. + Future setString(String key, String value); +} + +class _SharedPreferencesRepository implements PreferencesRepository { + _SharedPreferencesRepository(this.prefs); + + final SharedPreferences prefs; + + @override + Future load() async { + return loadSettings(prefs); + } + + @override + Future setString(String key, String value) { + return prefs.setString(key, value); + } +} + +@Riverpod(keepAlive: true) +PreferencesRepository preferencesRepository(PreferencesRepositoryRef ref) { + final prefs = ref.read(sharedPreferencesProvider); + + return _SharedPreferencesRepository(prefs); +} + +@internal +Future loadSettings(SharedPreferences prefs) async { + final data = prefs.getString('prefs'); + if (data != null) { + final Object? decoded = json.decode(data); + if (decoded is Map) { + return SettingsModel.fromJson(decoded); + } + } + + return defaultSettings; +} + +@riverpod +SharedPreferences sharedPreferences(SharedPreferencesRef ref) { + throw UnimplementedError(); +} + +const defaultSettings = SettingsModel(themeMode: ThemeMode.system); diff --git a/packages/app/lib/src/features/settings/domain/settings_model.dart b/packages/app/lib/src/features/settings/domain/settings_model.dart new file mode 100644 index 0000000..c6504a2 --- /dev/null +++ b/packages/app/lib/src/features/settings/domain/settings_model.dart @@ -0,0 +1,14 @@ +import 'package:flutter/material.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'settings_model.freezed.dart'; +part 'settings_model.g.dart'; + +@freezed +@immutable +class SettingsModel with _$SettingsModel { + const factory SettingsModel({required ThemeMode themeMode}) = _SettingsModel; + + factory SettingsModel.fromJson(Map json) => + _$SettingsModelFromJson(json); +} diff --git a/packages/app/lib/src/features/settings/presentation/preferences/settings_page.dart b/packages/app/lib/src/features/settings/presentation/preferences/settings_page.dart new file mode 100644 index 0000000..7de3d10 --- /dev/null +++ b/packages/app/lib/src/features/settings/presentation/preferences/settings_page.dart @@ -0,0 +1,60 @@ +import 'package:auto_route/auto_route.dart'; +import 'package:flutter/material.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; + +import '../../application/settings_service.dart'; + +/// Displays the various settings that can be customized by the user. +/// +/// When a user changes a setting, the SettingService is updated and +/// Widgets that watch the SettingsService are rebuilt. +@RoutePage() +class SettingsPage extends ConsumerWidget { + const SettingsPage({super.key}); + + @override + Widget build(BuildContext context, WidgetRef ref) { + final settingsService = ref.watch(settingsServiceProvider); + final themeMode = settingsService.themeMode; + + return Padding( + padding: const EdgeInsets.all(16), + // Glue the SettingsController to the theme selection DropdownButton. + // + // When a user selects a theme from the dropdown list, the + // SettingsController is updated, which rebuilds the MaterialApp. + child: Container( + alignment: Alignment.topLeft, + child: DropdownButton( + // Read the selected themeMode from the controller + value: themeMode, + // Call the updateThemeMode method any time the user selects a theme. + onChanged: (theme) async { + final newTheme = theme ?? settingsService.themeMode; + + return ref + .read(settingsServiceProvider.notifier) + .updateThemeMode(newTheme); + }, + items: const [ + DropdownMenuItem( + key: ValueKey(ThemeMode.system), + value: ThemeMode.system, + child: Text('System Theme'), + ), + DropdownMenuItem( + key: ValueKey(ThemeMode.light), + value: ThemeMode.light, + child: Text('Light Theme'), + ), + DropdownMenuItem( + key: ValueKey(ThemeMode.dark), + value: ThemeMode.dark, + child: Text('Dark Theme'), + ), + ], + ), + ), + ); + } +} diff --git a/packages/app/lib/src/l10n/arb/app_en.arb b/packages/app/lib/src/l10n/arb/app_en.arb new file mode 100644 index 0000000..7f8750c --- /dev/null +++ b/packages/app/lib/src/l10n/arb/app_en.arb @@ -0,0 +1,6 @@ +{ + "appTitle": "Our Democracy", + "@appTitle": { + "description": "The title of the application" + } +} diff --git a/packages/app/lib/src/l10n/l10n.dart b/packages/app/lib/src/l10n/l10n.dart new file mode 100644 index 0000000..ff9a61b --- /dev/null +++ b/packages/app/lib/src/l10n/l10n.dart @@ -0,0 +1,19 @@ +import 'package:flutter/widgets.dart'; + +import 'app_localizations.dart'; + +export 'app_localizations.dart'; + +/// Extension for [BuildContext] to access l10n via a getter. +extension AppLocalizationsX on BuildContext { + /// Get the [AppLocalizations] for this [BuildContext]. + /// + /// Recommended usage: + /// + /// ```dart + /// import "../../../../l10n/l10n.dart"; + /// ... + /// final l10n = context.l10n; + /// ``` + AppLocalizations get l10n => AppLocalizations.of(this); +} diff --git a/packages/app/lib/src/utils/design.dart b/packages/app/lib/src/utils/design.dart new file mode 100644 index 0000000..142301b --- /dev/null +++ b/packages/app/lib/src/utils/design.dart @@ -0,0 +1,24 @@ +import 'package:flutter/material.dart'; + +/// The app's color scheme. +final ColorScheme scheme = ColorScheme.fromSeed( + seedColor: Colors.deepPurple.shade300, +); + +/// The app's dark color scheme. +final ColorScheme darkScheme = ColorScheme.fromSeed( + seedColor: Colors.deepPurple.shade700, + brightness: Brightness.dark, +); + +/// The app's theme. +final ThemeData theme = ThemeData( + useMaterial3: true, + colorScheme: scheme, +); + +/// The app's dark theme. +final ThemeData darkTheme = ThemeData( + useMaterial3: true, + colorScheme: darkScheme, +); diff --git a/packages/app/lib/src/utils/router.dart b/packages/app/lib/src/utils/router.dart new file mode 100644 index 0000000..7f167a3 --- /dev/null +++ b/packages/app/lib/src/utils/router.dart @@ -0,0 +1,11 @@ +import 'package:riverpod_annotation/riverpod_annotation.dart'; + +import '../app/router.dart'; + +part 'router.g.dart'; + +/// Get the app's router. +@Riverpod(keepAlive: true) +Raw router(RouterRef ref) { + return AppRouter(); +} diff --git a/packages/app/linux/.gitignore b/packages/app/linux/.gitignore new file mode 100644 index 0000000..d3896c9 --- /dev/null +++ b/packages/app/linux/.gitignore @@ -0,0 +1 @@ +flutter/ephemeral diff --git a/packages/app/linux/CMakeLists.txt b/packages/app/linux/CMakeLists.txt new file mode 100644 index 0000000..9bc3ec6 --- /dev/null +++ b/packages/app/linux/CMakeLists.txt @@ -0,0 +1,145 @@ +# Project-level configuration. +cmake_minimum_required(VERSION 3.10) +project(runner LANGUAGES CXX) + +# The name of the executable created for the application. Change this to change +# the on-disk name of your application. +set(BINARY_NAME "our_democracy") +# The unique GTK application identifier for this application. See: +# https://wiki.gnome.org/HowDoI/ChooseApplicationID +set(APPLICATION_ID "org.psdr3.our_democracy") + +# Explicitly opt in to modern CMake behaviors to avoid warnings with recent +# versions of CMake. +cmake_policy(SET CMP0063 NEW) + +# Load bundled libraries from the lib/ directory relative to the binary. +set(CMAKE_INSTALL_RPATH "$ORIGIN/lib") + +# Root filesystem for cross-building. +if(FLUTTER_TARGET_PLATFORM_SYSROOT) + set(CMAKE_SYSROOT ${FLUTTER_TARGET_PLATFORM_SYSROOT}) + set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT}) + set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) + set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +endif() + +# Define build configuration options. +if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + set(CMAKE_BUILD_TYPE "Debug" CACHE + STRING "Flutter build mode" FORCE) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS + "Debug" "Profile" "Release") +endif() + +# Compilation settings that should be applied to most targets. +# +# Be cautious about adding new options here, as plugins use this function by +# default. In most cases, you should add new options to specific targets instead +# of modifying this function. +function(APPLY_STANDARD_SETTINGS TARGET) + target_compile_features(${TARGET} PUBLIC cxx_std_14) + target_compile_options(${TARGET} PRIVATE -Wall -Werror) + target_compile_options(${TARGET} PRIVATE "$<$>:-O3>") + target_compile_definitions(${TARGET} PRIVATE "$<$>:NDEBUG>") +endfunction() + +# Flutter library and tool build rules. +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") +add_subdirectory(${FLUTTER_MANAGED_DIR}) + +# System-level dependencies. +find_package(PkgConfig REQUIRED) +pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) + +add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}") + +# Define the application target. To change its name, change BINARY_NAME above, +# not the value here, or `flutter run` will no longer work. +# +# Any new source files that you add to the application should be added here. +add_executable(${BINARY_NAME} + "main.cc" + "my_application.cc" + "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" +) + +# Apply the standard set of build settings. This can be removed for applications +# that need different build settings. +apply_standard_settings(${BINARY_NAME}) + +# Add dependency libraries. Add any application-specific dependencies here. +target_link_libraries(${BINARY_NAME} PRIVATE flutter) +target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK) + +# Run the Flutter tool portions of the build. This must not be removed. +add_dependencies(${BINARY_NAME} flutter_assemble) + +# Only the install-generated bundle's copy of the executable will launch +# correctly, since the resources must in the right relative locations. To avoid +# people trying to run the unbundled copy, put it in a subdirectory instead of +# the default top-level location. +set_target_properties(${BINARY_NAME} + PROPERTIES + RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run" +) + + +# Generated plugin build rules, which manage building the plugins and adding +# them to the application. +include(flutter/generated_plugins.cmake) + + +# === Installation === +# By default, "installing" just makes a relocatable bundle in the build +# directory. +set(BUILD_BUNDLE_DIR "${PROJECT_BINARY_DIR}/bundle") +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) +endif() + +# Start with a clean build bundle directory every time. +install(CODE " + file(REMOVE_RECURSE \"${BUILD_BUNDLE_DIR}/\") + " COMPONENT Runtime) + +set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") +set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib") + +install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES}) + install(FILES "${bundled_library}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endforeach(bundled_library) + +# Copy the native assets provided by the build.dart from all packages. +set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/linux/") +install(DIRECTORY "${NATIVE_ASSETS_DIR}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +# Fully re-copy the assets directory on each build to avoid having stale files +# from a previous install. +set(FLUTTER_ASSET_DIR_NAME "flutter_assets") +install(CODE " + file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") + " COMPONENT Runtime) +install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" + DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) + +# Install the AOT library on non-Debug builds only. +if(NOT CMAKE_BUILD_TYPE MATCHES "Debug") + install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endif() diff --git a/packages/app/linux/flutter/CMakeLists.txt b/packages/app/linux/flutter/CMakeLists.txt new file mode 100644 index 0000000..d5bd016 --- /dev/null +++ b/packages/app/linux/flutter/CMakeLists.txt @@ -0,0 +1,88 @@ +# This file controls Flutter-level build steps. It should not be edited. +cmake_minimum_required(VERSION 3.10) + +set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") + +# Configuration provided via flutter tool. +include(${EPHEMERAL_DIR}/generated_config.cmake) + +# TODO: Move the rest of this into files in ephemeral. See +# https://github.com/flutter/flutter/issues/57146. + +# Serves the same purpose as list(TRANSFORM ... PREPEND ...), +# which isn't available in 3.10. +function(list_prepend LIST_NAME PREFIX) + set(NEW_LIST "") + foreach(element ${${LIST_NAME}}) + list(APPEND NEW_LIST "${PREFIX}${element}") + endforeach(element) + set(${LIST_NAME} "${NEW_LIST}" PARENT_SCOPE) +endfunction() + +# === Flutter Library === +# System-level dependencies. +find_package(PkgConfig REQUIRED) +pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) +pkg_check_modules(GLIB REQUIRED IMPORTED_TARGET glib-2.0) +pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0) + +set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/libflutter_linux_gtk.so") + +# Published to parent scope for install step. +set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) +set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) +set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) +set(AOT_LIBRARY "${PROJECT_DIR}/build/lib/libapp.so" PARENT_SCOPE) + +list(APPEND FLUTTER_LIBRARY_HEADERS + "fl_basic_message_channel.h" + "fl_binary_codec.h" + "fl_binary_messenger.h" + "fl_dart_project.h" + "fl_engine.h" + "fl_json_message_codec.h" + "fl_json_method_codec.h" + "fl_message_codec.h" + "fl_method_call.h" + "fl_method_channel.h" + "fl_method_codec.h" + "fl_method_response.h" + "fl_plugin_registrar.h" + "fl_plugin_registry.h" + "fl_standard_message_codec.h" + "fl_standard_method_codec.h" + "fl_string_codec.h" + "fl_value.h" + "fl_view.h" + "flutter_linux.h" +) +list_prepend(FLUTTER_LIBRARY_HEADERS "${EPHEMERAL_DIR}/flutter_linux/") +add_library(flutter INTERFACE) +target_include_directories(flutter INTERFACE + "${EPHEMERAL_DIR}" +) +target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}") +target_link_libraries(flutter INTERFACE + PkgConfig::GTK + PkgConfig::GLIB + PkgConfig::GIO +) +add_dependencies(flutter flutter_assemble) + +# === Flutter tool backend === +# _phony_ is a non-existent file to force this command to run every time, +# since currently there's no way to get a full input/output list from the +# flutter tool. +add_custom_command( + OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} + ${CMAKE_CURRENT_BINARY_DIR}/_phony_ + COMMAND ${CMAKE_COMMAND} -E env + ${FLUTTER_TOOL_ENVIRONMENT} + "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.sh" + ${FLUTTER_TARGET_PLATFORM} ${CMAKE_BUILD_TYPE} + VERBATIM +) +add_custom_target(flutter_assemble DEPENDS + "${FLUTTER_LIBRARY}" + ${FLUTTER_LIBRARY_HEADERS} +) diff --git a/packages/app/linux/flutter/generated_plugin_registrant.cc b/packages/app/linux/flutter/generated_plugin_registrant.cc new file mode 100644 index 0000000..e71a16d --- /dev/null +++ b/packages/app/linux/flutter/generated_plugin_registrant.cc @@ -0,0 +1,11 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#include "generated_plugin_registrant.h" + + +void fl_register_plugins(FlPluginRegistry* registry) { +} diff --git a/packages/app/linux/flutter/generated_plugin_registrant.h b/packages/app/linux/flutter/generated_plugin_registrant.h new file mode 100644 index 0000000..e0f0a47 --- /dev/null +++ b/packages/app/linux/flutter/generated_plugin_registrant.h @@ -0,0 +1,15 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#ifndef GENERATED_PLUGIN_REGISTRANT_ +#define GENERATED_PLUGIN_REGISTRANT_ + +#include + +// Registers Flutter plugins. +void fl_register_plugins(FlPluginRegistry* registry); + +#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/packages/app/linux/flutter/generated_plugins.cmake b/packages/app/linux/flutter/generated_plugins.cmake new file mode 100644 index 0000000..2e1de87 --- /dev/null +++ b/packages/app/linux/flutter/generated_plugins.cmake @@ -0,0 +1,23 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST +) + +list(APPEND FLUTTER_FFI_PLUGIN_LIST +) + +set(PLUGIN_BUNDLED_LIBRARIES) + +foreach(plugin ${FLUTTER_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin}) + target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) + list(APPEND PLUGIN_BUNDLED_LIBRARIES $) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) +endforeach(plugin) + +foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin}) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) +endforeach(ffi_plugin) diff --git a/packages/app/linux/main.cc b/packages/app/linux/main.cc new file mode 100644 index 0000000..e7c5c54 --- /dev/null +++ b/packages/app/linux/main.cc @@ -0,0 +1,6 @@ +#include "my_application.h" + +int main(int argc, char** argv) { + g_autoptr(MyApplication) app = my_application_new(); + return g_application_run(G_APPLICATION(app), argc, argv); +} diff --git a/packages/app/linux/my_application.cc b/packages/app/linux/my_application.cc new file mode 100644 index 0000000..11981b0 --- /dev/null +++ b/packages/app/linux/my_application.cc @@ -0,0 +1,124 @@ +#include "my_application.h" + +#include +#ifdef GDK_WINDOWING_X11 +#include +#endif + +#include "flutter/generated_plugin_registrant.h" + +struct _MyApplication { + GtkApplication parent_instance; + char** dart_entrypoint_arguments; +}; + +G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) + +// Implements GApplication::activate. +static void my_application_activate(GApplication* application) { + MyApplication* self = MY_APPLICATION(application); + GtkWindow* window = + GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application))); + + // Use a header bar when running in GNOME as this is the common style used + // by applications and is the setup most users will be using (e.g. Ubuntu + // desktop). + // If running on X and not using GNOME then just use a traditional title bar + // in case the window manager does more exotic layout, e.g. tiling. + // If running on Wayland assume the header bar will work (may need changing + // if future cases occur). + gboolean use_header_bar = TRUE; +#ifdef GDK_WINDOWING_X11 + GdkScreen* screen = gtk_window_get_screen(window); + if (GDK_IS_X11_SCREEN(screen)) { + const gchar* wm_name = gdk_x11_screen_get_window_manager_name(screen); + if (g_strcmp0(wm_name, "GNOME Shell") != 0) { + use_header_bar = FALSE; + } + } +#endif + if (use_header_bar) { + GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new()); + gtk_widget_show(GTK_WIDGET(header_bar)); + gtk_header_bar_set_title(header_bar, "Our Democracy"); + gtk_header_bar_set_show_close_button(header_bar, TRUE); + gtk_window_set_titlebar(window, GTK_WIDGET(header_bar)); + } else { + gtk_window_set_title(window, "Our Democracy"); + } + + gtk_window_set_default_size(window, 1280, 720); + gtk_widget_show(GTK_WIDGET(window)); + + g_autoptr(FlDartProject) project = fl_dart_project_new(); + fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); + + FlView* view = fl_view_new(project); + gtk_widget_show(GTK_WIDGET(view)); + gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); + + gtk_widget_grab_focus(GTK_WIDGET(view)); +} + +// Implements GApplication::local_command_line. +static gboolean my_application_local_command_line(GApplication* application, gchar*** arguments, int* exit_status) { + MyApplication* self = MY_APPLICATION(application); + // Strip out the first argument as it is the binary name. + self->dart_entrypoint_arguments = g_strdupv(*arguments + 1); + + g_autoptr(GError) error = nullptr; + if (!g_application_register(application, nullptr, &error)) { + g_warning("Failed to register: %s", error->message); + *exit_status = 1; + return TRUE; + } + + g_application_activate(application); + *exit_status = 0; + + return TRUE; +} + +// Implements GApplication::startup. +static void my_application_startup(GApplication* application) { + //MyApplication* self = MY_APPLICATION(object); + + // Perform any actions required at application startup. + + G_APPLICATION_CLASS(my_application_parent_class)->startup(application); +} + +// Implements GApplication::shutdown. +static void my_application_shutdown(GApplication* application) { + //MyApplication* self = MY_APPLICATION(object); + + // Perform any actions required at application shutdown. + + G_APPLICATION_CLASS(my_application_parent_class)->shutdown(application); +} + +// Implements GObject::dispose. +static void my_application_dispose(GObject* object) { + MyApplication* self = MY_APPLICATION(object); + g_clear_pointer(&self->dart_entrypoint_arguments, g_strfreev); + G_OBJECT_CLASS(my_application_parent_class)->dispose(object); +} + +static void my_application_class_init(MyApplicationClass* klass) { + G_APPLICATION_CLASS(klass)->activate = my_application_activate; + G_APPLICATION_CLASS(klass)->local_command_line = my_application_local_command_line; + G_APPLICATION_CLASS(klass)->startup = my_application_startup; + G_APPLICATION_CLASS(klass)->shutdown = my_application_shutdown; + G_OBJECT_CLASS(klass)->dispose = my_application_dispose; +} + +static void my_application_init(MyApplication* self) {} + +MyApplication* my_application_new() { + return MY_APPLICATION(g_object_new(my_application_get_type(), + "application-id", APPLICATION_ID, + "flags", G_APPLICATION_NON_UNIQUE, + nullptr)); +} diff --git a/packages/app/linux/my_application.h b/packages/app/linux/my_application.h new file mode 100644 index 0000000..72271d5 --- /dev/null +++ b/packages/app/linux/my_application.h @@ -0,0 +1,18 @@ +#ifndef FLUTTER_MY_APPLICATION_H_ +#define FLUTTER_MY_APPLICATION_H_ + +#include + +G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION, + GtkApplication) + +/** + * my_application_new: + * + * Creates a new Flutter-based application. + * + * Returns: a new #MyApplication. + */ +MyApplication* my_application_new(); + +#endif // FLUTTER_MY_APPLICATION_H_ diff --git a/packages/app/macos/.gitignore b/packages/app/macos/.gitignore new file mode 100644 index 0000000..746adbb --- /dev/null +++ b/packages/app/macos/.gitignore @@ -0,0 +1,7 @@ +# Flutter-related +**/Flutter/ephemeral/ +**/Pods/ + +# Xcode-related +**/dgph +**/xcuserdata/ diff --git a/packages/app/macos/Flutter/Flutter-Debug.xcconfig b/packages/app/macos/Flutter/Flutter-Debug.xcconfig new file mode 100644 index 0000000..4b81f9b --- /dev/null +++ b/packages/app/macos/Flutter/Flutter-Debug.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/packages/app/macos/Flutter/Flutter-Release.xcconfig b/packages/app/macos/Flutter/Flutter-Release.xcconfig new file mode 100644 index 0000000..5caa9d1 --- /dev/null +++ b/packages/app/macos/Flutter/Flutter-Release.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/packages/app/macos/Flutter/GeneratedPluginRegistrant.swift b/packages/app/macos/Flutter/GeneratedPluginRegistrant.swift new file mode 100644 index 0000000..724bb2a --- /dev/null +++ b/packages/app/macos/Flutter/GeneratedPluginRegistrant.swift @@ -0,0 +1,12 @@ +// +// Generated file. Do not edit. +// + +import FlutterMacOS +import Foundation + +import shared_preferences_foundation + +func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) +} diff --git a/packages/app/macos/Podfile b/packages/app/macos/Podfile new file mode 100644 index 0000000..c795730 --- /dev/null +++ b/packages/app/macos/Podfile @@ -0,0 +1,43 @@ +platform :osx, '10.14' + +# 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', 'ephemeral', '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 Flutter-Generated.xcconfig, then run \"flutter pub get\"" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_macos_podfile_setup + +target 'Runner' do + use_frameworks! + use_modular_headers! + + flutter_install_all_macos_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_macos_build_settings(target) + end +end diff --git a/packages/app/macos/Podfile.lock b/packages/app/macos/Podfile.lock new file mode 100644 index 0000000..5e24f0b --- /dev/null +++ b/packages/app/macos/Podfile.lock @@ -0,0 +1,23 @@ +PODS: + - FlutterMacOS (1.0.0) + - shared_preferences_foundation (0.0.1): + - Flutter + - FlutterMacOS + +DEPENDENCIES: + - FlutterMacOS (from `Flutter/ephemeral`) + - shared_preferences_foundation (from `Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin`) + +EXTERNAL SOURCES: + FlutterMacOS: + :path: Flutter/ephemeral + shared_preferences_foundation: + :path: Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin + +SPEC CHECKSUMS: + FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24 + shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78 + +PODFILE CHECKSUM: 236401fc2c932af29a9fcf0e97baeeb2d750d367 + +COCOAPODS: 1.15.2 diff --git a/packages/app/macos/Runner.xcodeproj/project.pbxproj b/packages/app/macos/Runner.xcodeproj/project.pbxproj new file mode 100644 index 0000000..08b789d --- /dev/null +++ b/packages/app/macos/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,801 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXAggregateTarget section */ + 33CC111A2044C6BA0003C045 /* Flutter Assemble */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */; + buildPhases = ( + 33CC111E2044C6BF0003C045 /* ShellScript */, + ); + dependencies = ( + ); + name = "Flutter Assemble"; + productName = FLX; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 290AC304D25807A95B42000C /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 14DAF2598B45A1C403419B5D /* Pods_Runner.framework */; }; + 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; }; + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; + 4D0C8460A76B8A506EC75080 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D64175C28A3265F2B46CF915 /* Pods_RunnerTests.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 33CC10E52044A3C60003C045 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 33CC10EC2044A3C60003C045; + remoteInfo = Runner; + }; + 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 33CC10E52044A3C60003C045 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 33CC111A2044C6BA0003C045; + remoteInfo = FLX; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 33CC110E2044A8840003C045 /* Bundle Framework */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Bundle Framework"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 14DAF2598B45A1C403419B5D /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 318E1A005760B60BA09FD5DA /* 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 = ""; }; + 331C80D5294CF71000263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; + 33CC10ED2044A3C60003C045 /* our_democracy.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = our_democracy.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; }; + 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; + 33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = ""; }; + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = ""; }; + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = ""; }; + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = ""; }; + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = ""; }; + 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; + 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; + 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; + 3C97BDE56FD3DBF7554136F0 /* 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 = ""; }; + 72C4A7E1A57DE4921B01FBFD /* 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 = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; + 98DA6D27A24E1047022266F0 /* 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 = ""; }; + B7D399B367AE94CB4F03D79C /* 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 = ""; }; + D2F241078B7DD89E70DF19A3 /* 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 = ""; }; + D64175C28A3265F2B46CF915 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 331C80D2294CF70F00263BE5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 4D0C8460A76B8A506EC75080 /* Pods_RunnerTests.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10EA2044A3C60003C045 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 290AC304D25807A95B42000C /* Pods_Runner.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 331C80D6294CF71000263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C80D7294CF71000263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 33BA886A226E78AF003329D5 /* Configs */ = { + isa = PBXGroup; + children = ( + 33E5194F232828860026EE4D /* AppInfo.xcconfig */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */, + ); + path = Configs; + sourceTree = ""; + }; + 33CC10E42044A3C60003C045 = { + isa = PBXGroup; + children = ( + 33FAB671232836740065AC1E /* Runner */, + 33CEB47122A05771004F2AC0 /* Flutter */, + 331C80D6294CF71000263BE5 /* RunnerTests */, + 33CC10EE2044A3C60003C045 /* Products */, + D73912EC22F37F3D000D13A0 /* Frameworks */, + C043542F6772619E7AE58026 /* Pods */, + ); + sourceTree = ""; + }; + 33CC10EE2044A3C60003C045 /* Products */ = { + isa = PBXGroup; + children = ( + 33CC10ED2044A3C60003C045 /* our_democracy.app */, + 331C80D5294CF71000263BE5 /* RunnerTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 33CC11242044D66E0003C045 /* Resources */ = { + isa = PBXGroup; + children = ( + 33CC10F22044A3C60003C045 /* Assets.xcassets */, + 33CC10F42044A3C60003C045 /* MainMenu.xib */, + 33CC10F72044A3C60003C045 /* Info.plist */, + ); + name = Resources; + path = ..; + sourceTree = ""; + }; + 33CEB47122A05771004F2AC0 /* Flutter */ = { + isa = PBXGroup; + children = ( + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */, + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */, + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */, + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */, + ); + path = Flutter; + sourceTree = ""; + }; + 33FAB671232836740065AC1E /* Runner */ = { + isa = PBXGroup; + children = ( + 33CC10F02044A3C60003C045 /* AppDelegate.swift */, + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */, + 33E51913231747F40026EE4D /* DebugProfile.entitlements */, + 33E51914231749380026EE4D /* Release.entitlements */, + 33CC11242044D66E0003C045 /* Resources */, + 33BA886A226E78AF003329D5 /* Configs */, + ); + path = Runner; + sourceTree = ""; + }; + C043542F6772619E7AE58026 /* Pods */ = { + isa = PBXGroup; + children = ( + 318E1A005760B60BA09FD5DA /* Pods-Runner.debug.xcconfig */, + D2F241078B7DD89E70DF19A3 /* Pods-Runner.release.xcconfig */, + 3C97BDE56FD3DBF7554136F0 /* Pods-Runner.profile.xcconfig */, + 72C4A7E1A57DE4921B01FBFD /* Pods-RunnerTests.debug.xcconfig */, + 98DA6D27A24E1047022266F0 /* Pods-RunnerTests.release.xcconfig */, + B7D399B367AE94CB4F03D79C /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; + D73912EC22F37F3D000D13A0 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 14DAF2598B45A1C403419B5D /* Pods_Runner.framework */, + D64175C28A3265F2B46CF915 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C80D4294CF70F00263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + 784C6A8DB396060A26E219C0 /* [CP] Check Pods Manifest.lock */, + 331C80D1294CF70F00263BE5 /* Sources */, + 331C80D2294CF70F00263BE5 /* Frameworks */, + 331C80D3294CF70F00263BE5 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 331C80DA294CF71000263BE5 /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 331C80D5294CF71000263BE5 /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 33CC10EC2044A3C60003C045 /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 799D38ADC0F36F58EEDCD5A8 /* [CP] Check Pods Manifest.lock */, + 33CC10E92044A3C60003C045 /* Sources */, + 33CC10EA2044A3C60003C045 /* Frameworks */, + 33CC10EB2044A3C60003C045 /* Resources */, + 33CC110E2044A8840003C045 /* Bundle Framework */, + 3399D490228B24CF009A79C7 /* ShellScript */, + 09338B6FE3109C1CCE2F6A92 /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 33CC11202044C79F0003C045 /* PBXTargetDependency */, + ); + name = Runner; + productName = Runner; + productReference = 33CC10ED2044A3C60003C045 /* our_democracy.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 33CC10E52044A3C60003C045 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastSwiftUpdateCheck = 0920; + LastUpgradeCheck = 1510; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 331C80D4294CF70F00263BE5 = { + CreatedOnToolsVersion = 14.0; + TestTargetID = 33CC10EC2044A3C60003C045; + }; + 33CC10EC2044A3C60003C045 = { + CreatedOnToolsVersion = 9.2; + LastSwiftMigration = 1100; + ProvisioningStyle = Automatic; + SystemCapabilities = { + com.apple.Sandbox = { + enabled = 1; + }; + }; + }; + 33CC111A2044C6BA0003C045 = { + CreatedOnToolsVersion = 9.2; + ProvisioningStyle = Manual; + }; + }; + }; + buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 33CC10E42044A3C60003C045; + productRefGroup = 33CC10EE2044A3C60003C045 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 33CC10EC2044A3C60003C045 /* Runner */, + 331C80D4294CF70F00263BE5 /* RunnerTests */, + 33CC111A2044C6BA0003C045 /* Flutter Assemble */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 331C80D3294CF70F00263BE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10EB2044A3C60003C045 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */, + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 09338B6FE3109C1CCE2F6A92 /* [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; + }; + 3399D490228B24CF009A79C7 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; + }; + 33CC111E2044C6BF0003C045 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + Flutter/ephemeral/FlutterInputs.xcfilelist, + ); + inputPaths = ( + Flutter/ephemeral/tripwire, + ); + outputFileListPaths = ( + Flutter/ephemeral/FlutterOutputs.xcfilelist, + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; + }; + 784C6A8DB396060A26E219C0 /* [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; + }; + 799D38ADC0F36F58EEDCD5A8 /* [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; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 331C80D1294CF70F00263BE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10E92044A3C60003C045 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */, + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */, + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 331C80DA294CF71000263BE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 33CC10EC2044A3C60003C045 /* Runner */; + targetProxy = 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */; + }; + 33CC11202044C79F0003C045 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */; + targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 33CC10F42044A3C60003C045 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 33CC10F52044A3C60003C045 /* Base */, + ); + name = MainMenu.xib; + path = Runner; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 331C80DB294CF71000263BE5 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 72C4A7E1A57DE4921B01FBFD /* Pods-RunnerTests.debug.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = org.psdr3.our_democracy.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/our_democracy.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/our_democracy"; + }; + name = Debug; + }; + 331C80DC294CF71000263BE5 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 98DA6D27A24E1047022266F0 /* Pods-RunnerTests.release.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = org.psdr3.our_democracy.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/our_democracy.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/our_democracy"; + }; + name = Release; + }; + 331C80DD294CF71000263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B7D399B367AE94CB4F03D79C /* Pods-RunnerTests.profile.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = org.psdr3.our_democracy.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/our_democracy.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/our_democracy"; + }; + name = Profile; + }; + 338D0CE9231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + 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_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_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Profile; + }; + 338D0CEA231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Profile; + }; + 338D0CEB231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Profile; + }; + 33CC10F92044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + 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_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_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu11; + 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_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 33CC10FA2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + 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_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_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Release; + }; + 33CC10FC2044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 33CC10FD2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + 33CC111C2044C6BA0003C045 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 33CC111D2044C6BA0003C045 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C80DB294CF71000263BE5 /* Debug */, + 331C80DC294CF71000263BE5 /* Release */, + 331C80DD294CF71000263BE5 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10F92044A3C60003C045 /* Debug */, + 33CC10FA2044A3C60003C045 /* Release */, + 338D0CE9231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10FC2044A3C60003C045 /* Debug */, + 33CC10FD2044A3C60003C045 /* Release */, + 338D0CEA231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC111C2044C6BA0003C045 /* Debug */, + 33CC111D2044C6BA0003C045 /* Release */, + 338D0CEB231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 33CC10E52044A3C60003C045 /* Project object */; +} diff --git a/packages/app/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/app/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/packages/app/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/packages/app/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/app/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 0000000..46c7132 --- /dev/null +++ b/packages/app/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/app/macos/Runner.xcworkspace/contents.xcworkspacedata b/packages/app/macos/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..21a3cc1 --- /dev/null +++ b/packages/app/macos/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/packages/app/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/app/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/packages/app/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/packages/app/macos/Runner/AppDelegate.swift b/packages/app/macos/Runner/AppDelegate.swift new file mode 100644 index 0000000..d53ef64 --- /dev/null +++ b/packages/app/macos/Runner/AppDelegate.swift @@ -0,0 +1,9 @@ +import Cocoa +import FlutterMacOS + +@NSApplicationMain +class AppDelegate: FlutterAppDelegate { + override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { + return true + } +} diff --git a/packages/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/packages/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..96d3fee --- /dev/null +++ b/packages/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "info": { + "version": 1, + "author": "xcode" + }, + "images": [ + { + "size": "16x16", + "idiom": "mac", + "filename": "app_icon_16.png", + "scale": "1x" + }, + { + "size": "16x16", + "idiom": "mac", + "filename": "app_icon_32.png", + "scale": "2x" + }, + { + "size": "32x32", + "idiom": "mac", + "filename": "app_icon_32.png", + "scale": "1x" + }, + { + "size": "32x32", + "idiom": "mac", + "filename": "app_icon_64.png", + "scale": "2x" + }, + { + "size": "128x128", + "idiom": "mac", + "filename": "app_icon_128.png", + "scale": "1x" + }, + { + "size": "128x128", + "idiom": "mac", + "filename": "app_icon_256.png", + "scale": "2x" + }, + { + "size": "256x256", + "idiom": "mac", + "filename": "app_icon_256.png", + "scale": "1x" + }, + { + "size": "256x256", + "idiom": "mac", + "filename": "app_icon_512.png", + "scale": "2x" + }, + { + "size": "512x512", + "idiom": "mac", + "filename": "app_icon_512.png", + "scale": "1x" + }, + { + "size": "512x512", + "idiom": "mac", + "filename": "app_icon_1024.png", + "scale": "2x" + } + ] +} \ No newline at end of file diff --git a/packages/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/packages/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png new file mode 100644 index 0000000000000000000000000000000000000000..c1e2ec9f314ea7fc6079caf57dbf3e0def9e071a GIT binary patch literal 98879 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

hq+1qKJz_YDFL}{xQT<4nLy#?JoBrP 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 N4Nq4;mvv4FO#n4v(i8vy literal 0 HcmV?d00001 diff --git a/packages/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/packages/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png new file mode 100644 index 0000000000000000000000000000000000000000..8968c7cb7c7251ed6255dd7b426de5ce391f4eb8 GIT binary patch literal 2811 zcmVe256+V)lo;J%C-Y^W<20R#pS!!@F5S9vTY=eiTLm?qe8;1Pol$jHN~X!Mw2AEm9CpkaoUqu1fX!m#O}1CJ>8Yx-Cx7|#S1M8)Z)XF? z3ioHHr4{1Ge~$q9`T2PpHf-30UN>qq8X&}b$o2G^P$S`IA7L%b$| zU9;)Ag`E<}6GTOTHEY(a*t~i32e{7FWNk|V*8xzm5P#wMayH6D)#nwy(DO(s)gZEbB$b#?Xm z#>U1@B)@XYmMtIRI7P5^-Y*FG@&y3)MgUa;$S@KzmDM0m*a-G^HB6thU}4S83%8_9 z8Il0$>FGmPty=YLQBl#d@#Dwmp%<0Jlf5%_4@k!LdcEZG-nvy+jUr`-M4o9y&ldnV zngsG>89-7F$O=D&mOI3M&O4~69bN*%-`+Ce7w!Njq7^E7H5&2kQ>*r`Pc zfMKq|Z2dd*`b(Iw=x#!iK_bNMb_)?9dhIhUkI1VDd0Yl@8A$$9fjogqtpr-{0-u$R z$;~!Cb?Q=Cl~|hw6aZ`U_+7hp?Mq8b8!y)5fk2)m#GOtjsMYF$A7D-Xu;uoF6d(up^tdd-v{7utvv9&ej2-R4RbyLs@<0LXetDx=6I6f|#$Wt|cYsW4qZSOk^T1;Q2%g6}@3f<*yThJ%egN_WWG?j(jtBs=a*7v) zEkMDnl?#{Uzqpa@v_Xs^NVtXoC5?H2b%9pf>r1AsJKH09HSv6xf6bGyAAmdou}_}_ z(0S7bQzy*L$8xB|a_Ac9xnL1M7|Yo%8p{?Bp_ab>K;~jt?ol2fO-`B7|4GR6=y@%Y zUyKP)J5=<%T0I4n#)FZgjKi*Q)`^RsoEYetfC5~+dgLU2u)I~Nal4s_3Lqp^?*RJ?2@D>`& zmLsA9(9Tv+bM;v2;s6pS`$-%3hDDx$w8g48C+1LKSHE-ozF9>VAI0^N2T9@dqV*#Of@ANKa)Kxm8O9Yg@gnK0M5|L{AZ3*bc7 z)wL(S!1eTuqn!ecE;8ltK=~oicGSSqdD*}vejoHHnPJb_0}`dNL%m?B_X&AGAyj^l1z|GLvuMbrc0T{CiJR`aOyEh5wFn7Yiio>w_2TOoWodXQ+Tw{W@#UVheS7I=^ zK@W!1tc+<{H8(F@4>Wc_Hs??P{P1BOkhxt9gvlSwT^88(W+@nAV}(9|Kq!Y1Y&TUZ z6_!H|Tn?oW1z`zrx9OW^lllIQnLwemK^Hm8#8bX|>|tZiSrE3{4z? zy8?(KH&wJcZt8@2Gped9PWShIQB1HOIF27YDz0*JUZBD&)qUXK9V+@gB_iKFu-L)U zNMm;w2VR#z+V%DIs>-TM`JgXEX}3c);@pq+<~B83(UA?FCem&?6tjEiL%+R-Tk zH|qww{A$(DeqXQ{bB{G7RuUjd0PG5h0P8tR-%}z&oHR4GR?OB-ap-MfS}#V-SC~A{ z)i=~!@36EsVMEpB@wmOilG9`KI>YdhDH)lQGG|OpP8>h=cBM?H+!nU+#;;ymP-Jzq z+au1lA4rRUD@Ur_9=8MYfR41qJ%^jNHaS@C48ek|fX0@(OP`(EyZf_~d;fuZ@s@rk zsy*4~U!6LR&PpmOvGJycTkR(=d3_#V=#->Ek^pwb%HOE3K9fCmdI5uB?up^Rd`l-} zYpc!Nuw~CH>&lP+wM?oJ4$kVl)cDZ>sn10Ml3ThjYmOfy0ys=GSZ-@E!6|)5&hFp- z=6mZl;F^{6^~w=$gF z`O+U2FSuS`E$IgdPZ}f(;PHBVr>o2VzUSZ@+iu>yQul2b^<5&QZQW~s`q8VToJHE0 zXdom3{#VEoJP|*Xj3x#Jh_(UI#-ISvHXzy<6d>9LL>q$wMB9L9 + + + + + + + + + + + + + + + + + + + + + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/app/macos/Runner/Configs/AppInfo.xcconfig b/packages/app/macos/Runner/Configs/AppInfo.xcconfig new file mode 100644 index 0000000..862b5f3 --- /dev/null +++ b/packages/app/macos/Runner/Configs/AppInfo.xcconfig @@ -0,0 +1,14 @@ +// Application-level settings for the Runner target. +// +// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the +// future. If not, the values below would default to using the project name when this becomes a +// 'flutter create' template. + +// The application's name. By default this is also the title of the Flutter window. +PRODUCT_NAME = our_democracy + +// The application's bundle identifier +PRODUCT_BUNDLE_IDENTIFIER = org.psdr3.our_democracy + +// The copyright displayed in application information +PRODUCT_COPYRIGHT = Copyright ยฉ 2024 PHS-TSA. All rights reserved. diff --git a/packages/app/macos/Runner/Configs/Debug.xcconfig b/packages/app/macos/Runner/Configs/Debug.xcconfig new file mode 100644 index 0000000..36b0fd9 --- /dev/null +++ b/packages/app/macos/Runner/Configs/Debug.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Debug.xcconfig" +#include "Warnings.xcconfig" diff --git a/packages/app/macos/Runner/Configs/Release.xcconfig b/packages/app/macos/Runner/Configs/Release.xcconfig new file mode 100644 index 0000000..dff4f49 --- /dev/null +++ b/packages/app/macos/Runner/Configs/Release.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Release.xcconfig" +#include "Warnings.xcconfig" diff --git a/packages/app/macos/Runner/Configs/Warnings.xcconfig b/packages/app/macos/Runner/Configs/Warnings.xcconfig new file mode 100644 index 0000000..42bcbf4 --- /dev/null +++ b/packages/app/macos/Runner/Configs/Warnings.xcconfig @@ -0,0 +1,13 @@ +WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings +GCC_WARN_UNDECLARED_SELECTOR = YES +CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES +CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE +CLANG_WARN__DUPLICATE_METHOD_MATCH = YES +CLANG_WARN_PRAGMA_PACK = YES +CLANG_WARN_STRICT_PROTOTYPES = YES +CLANG_WARN_COMMA = YES +GCC_WARN_STRICT_SELECTOR_MATCH = YES +CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES +CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES +GCC_WARN_SHADOW = YES +CLANG_WARN_UNREACHABLE_CODE = YES diff --git a/packages/app/macos/Runner/DebugProfile.entitlements b/packages/app/macos/Runner/DebugProfile.entitlements new file mode 100644 index 0000000..08c3ab1 --- /dev/null +++ b/packages/app/macos/Runner/DebugProfile.entitlements @@ -0,0 +1,14 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.cs.allow-jit + + com.apple.security.network.server + + com.apple.security.network.client + + + diff --git a/packages/app/macos/Runner/Info.plist b/packages/app/macos/Runner/Info.plist new file mode 100644 index 0000000..4789daa --- /dev/null +++ b/packages/app/macos/Runner/Info.plist @@ -0,0 +1,32 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIconFile + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + NSHumanReadableCopyright + $(PRODUCT_COPYRIGHT) + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/packages/app/macos/Runner/MainFlutterWindow.swift b/packages/app/macos/Runner/MainFlutterWindow.swift new file mode 100644 index 0000000..3cc05eb --- /dev/null +++ b/packages/app/macos/Runner/MainFlutterWindow.swift @@ -0,0 +1,15 @@ +import Cocoa +import FlutterMacOS + +class MainFlutterWindow: NSWindow { + override func awakeFromNib() { + let flutterViewController = FlutterViewController() + let windowFrame = self.frame + self.contentViewController = flutterViewController + self.setFrame(windowFrame, display: true) + + RegisterGeneratedPlugins(registry: flutterViewController) + + super.awakeFromNib() + } +} diff --git a/packages/app/macos/Runner/Release.entitlements b/packages/app/macos/Runner/Release.entitlements new file mode 100644 index 0000000..233726e --- /dev/null +++ b/packages/app/macos/Runner/Release.entitlements @@ -0,0 +1,10 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.network.client + + + diff --git a/packages/app/macos/RunnerTests/RunnerTests.swift b/packages/app/macos/RunnerTests/RunnerTests.swift new file mode 100644 index 0000000..5418c9f --- /dev/null +++ b/packages/app/macos/RunnerTests/RunnerTests.swift @@ -0,0 +1,12 @@ +import FlutterMacOS +import Cocoa +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/packages/app/pubspec.lock b/packages/app/pubspec.lock new file mode 100644 index 0000000..8f61303 --- /dev/null +++ b/packages/app/pubspec.lock @@ -0,0 +1,1327 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + sha256: "0b2f2bd91ba804e53a61d757b986f89f1f9eaed5b11e4b2f5a2468d86d6c9fc7" + url: "https://pub.dev" + source: hosted + version: "67.0.0" + analyzer: + dependency: transitive + description: + name: analyzer + sha256: "37577842a27e4338429a1cbc32679d508836510b056f1eedf0c8d20e39c1383d" + url: "https://pub.dev" + source: hosted + version: "6.4.1" + analyzer_plugin: + dependency: transitive + description: + name: analyzer_plugin + sha256: "9661b30b13a685efaee9f02e5d01ed9f2b423bd889d28a304d02d704aee69161" + url: "https://pub.dev" + source: hosted + version: "0.11.3" + ansicolor: + dependency: transitive + description: + name: ansicolor + sha256: "8bf17a8ff6ea17499e40a2d2542c2f481cd7615760c6d34065cb22bfd22e6880" + url: "https://pub.dev" + source: hosted + version: "2.0.2" + archive: + dependency: transitive + description: + name: archive + sha256: "6bd38d335f0954f5fad9c79e614604fbf03a0e5b975923dd001b6ea965ef5b4b" + url: "https://pub.dev" + source: hosted + version: "3.6.0" + args: + dependency: transitive + description: + name: args + sha256: "7cf60b9f0cc88203c5a190b4cd62a99feea42759a7fa695010eb5de1c0b2252a" + url: "https://pub.dev" + source: hosted + version: "2.5.0" + async: + dependency: transitive + description: + name: async + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.dev" + source: hosted + version: "2.11.0" + auto_route: + dependency: "direct main" + description: + name: auto_route + sha256: a9001a90539ca3effc168f7e1029a5885c7326b9032c09ac895e303c1d137704 + url: "https://pub.dev" + source: hosted + version: "8.3.0" + auto_route_generator: + dependency: "direct dev" + description: + name: auto_route_generator + sha256: a21d7a936c917488653c972f62d884d8adcf8c5d37acc7cd24da33cf784546c0 + url: "https://pub.dev" + source: hosted + version: "8.1.0" + bazel_worker: + dependency: transitive + description: + name: bazel_worker + sha256: "4eef19cc486c289e4b06c69d0f6f3192e85cc93c25d4d15d02afb205e388d2f0" + url: "https://pub.dev" + source: hosted + version: "1.1.1" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + build: + dependency: transitive + description: + name: build + sha256: "80184af8b6cb3e5c1c4ec6d8544d27711700bc3e6d2efad04238c7b5290889f0" + url: "https://pub.dev" + source: hosted + version: "2.4.1" + build_cli_annotations: + dependency: transitive + description: + name: build_cli_annotations + sha256: b59d2769769efd6c9ff6d4c4cede0be115a566afc591705c2040b707534b1172 + url: "https://pub.dev" + source: hosted + version: "2.1.0" + build_config: + dependency: transitive + description: + name: build_config + sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1 + url: "https://pub.dev" + source: hosted + version: "1.1.1" + build_daemon: + dependency: transitive + description: + name: build_daemon + sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9" + url: "https://pub.dev" + source: hosted + version: "4.0.2" + build_modules: + dependency: transitive + description: + name: build_modules + sha256: "9987d67a29081872e730468295fc565e9a2b377ca3673337c1d4e41d57c6cd7c" + url: "https://pub.dev" + source: hosted + version: "5.0.8" + build_resolvers: + dependency: transitive + description: + name: build_resolvers + sha256: "339086358431fa15d7eca8b6a36e5d783728cf025e559b834f4609a1fcfb7b0a" + url: "https://pub.dev" + source: hosted + version: "2.4.2" + build_runner: + dependency: "direct dev" + description: + name: build_runner + sha256: "644dc98a0f179b872f612d3eb627924b578897c629788e858157fa5e704ca0c7" + url: "https://pub.dev" + source: hosted + version: "2.4.11" + build_runner_core: + dependency: transitive + description: + name: build_runner_core + sha256: "4ae8ffe5ac758da294ecf1802f2aff01558d8b1b00616aa7538ea9a8a5d50799" + url: "https://pub.dev" + source: hosted + version: "7.3.0" + build_version: + dependency: "direct main" + description: + name: build_version + sha256: "4e8eafbf722eac3bd60c8d38f108c04bd69b80100f8792b32be3407725c7fa6a" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + build_web_compilers: + dependency: "direct dev" + description: + name: build_web_compilers + sha256: "9071a94aa67787cebdd9e76837c9d2af61fb5242db541244f6a0b6249afafb46" + url: "https://pub.dev" + source: hosted + version: "4.0.10" + built_collection: + dependency: transitive + description: + name: built_collection + sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100" + url: "https://pub.dev" + source: hosted + version: "5.1.1" + built_value: + dependency: transitive + description: + name: built_value + sha256: c7913a9737ee4007efedaffc968c049fd0f3d0e49109e778edc10de9426005cb + url: "https://pub.dev" + source: hosted + version: "8.9.2" + characters: + dependency: transitive + description: + name: characters + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + url: "https://pub.dev" + source: hosted + version: "1.3.0" + checked_yaml: + dependency: transitive + description: + name: checked_yaml + sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff + url: "https://pub.dev" + source: hosted + version: "2.0.3" + ci: + dependency: transitive + description: + name: ci + sha256: "145d095ce05cddac4d797a158bc4cf3b6016d1fe63d8c3d2fbd7212590adca13" + url: "https://pub.dev" + source: hosted + version: "0.1.0" + cli_completion: + dependency: transitive + description: + name: cli_completion + sha256: "158deec74a75cdc69bce061645fea08f94190dd6833f988f517c2dfcb45e9117" + url: "https://pub.dev" + source: hosted + version: "0.5.0" + cli_util: + dependency: transitive + description: + name: cli_util + sha256: c05b7406fdabc7a49a3929d4af76bcaccbbffcbcdcf185b082e1ae07da323d19 + url: "https://pub.dev" + source: hosted + version: "0.4.1" + clock: + dependency: transitive + description: + name: clock + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" + source: hosted + version: "1.1.1" + code_builder: + dependency: transitive + description: + name: code_builder + sha256: f692079e25e7869c14132d39f223f8eec9830eb76131925143b2129c4bb01b37 + url: "https://pub.dev" + source: hosted + version: "4.10.0" + collection: + dependency: transitive + description: + name: collection + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a + url: "https://pub.dev" + source: hosted + version: "1.18.0" + color: + dependency: transitive + description: + name: color + sha256: ddcdf1b3badd7008233f5acffaf20ca9f5dc2cd0172b75f68f24526a5f5725cb + url: "https://pub.dev" + source: hosted + version: "3.0.0" + convert: + dependency: transitive + description: + name: convert + sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" + url: "https://pub.dev" + source: hosted + version: "3.1.1" + coverage: + dependency: transitive + description: + name: coverage + sha256: "3945034e86ea203af7a056d98e98e42a5518fff200d6e8e6647e1886b07e936e" + url: "https://pub.dev" + source: hosted + version: "1.8.0" + crypto: + dependency: transitive + description: + name: crypto + sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab + url: "https://pub.dev" + source: hosted + version: "3.0.3" + csslib: + dependency: transitive + description: + name: csslib + sha256: "706b5707578e0c1b4b7550f64078f0a0f19dec3f50a178ffae7006b0a9ca58fb" + url: "https://pub.dev" + source: hosted + version: "1.0.0" + cupertino_icons: + dependency: "direct main" + description: + name: cupertino_icons + sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6 + url: "https://pub.dev" + source: hosted + version: "1.0.8" + custom_lint: + dependency: "direct dev" + description: + name: custom_lint + sha256: "7c0aec12df22f9082146c354692056677f1e70bc43471644d1fdb36c6fdda799" + url: "https://pub.dev" + source: hosted + version: "0.6.4" + custom_lint_builder: + dependency: transitive + description: + name: custom_lint_builder + sha256: d7dc41e709dde223806660268678be7993559e523eb3164e2a1425fd6f7615a9 + url: "https://pub.dev" + source: hosted + version: "0.6.4" + custom_lint_core: + dependency: transitive + description: + name: custom_lint_core + sha256: a85e8f78f4c52f6c63cdaf8c872eb573db0231dcdf3c3a5906d493c1f8bc20e6 + url: "https://pub.dev" + source: hosted + version: "0.6.3" + dart_style: + dependency: transitive + description: + name: dart_style + sha256: "99e066ce75c89d6b29903d788a7bb9369cf754f7b24bf70bf4b6d6d6b26853b9" + url: "https://pub.dev" + source: hosted + version: "2.3.6" + dartx: + dependency: transitive + description: + name: dartx + sha256: "8b25435617027257d43e6508b5fe061012880ddfdaa75a71d607c3de2a13d244" + url: "https://pub.dev" + source: hosted + version: "1.2.0" + dhttpd: + dependency: "direct dev" + description: + name: dhttpd + sha256: "2e24765d7569b8e0a02a441e3cf96f09cca69dfecba646e7e9f6b3ab45a2f3fe" + url: "https://pub.dev" + source: hosted + version: "4.1.0" + equatable: + dependency: transitive + description: + name: equatable + sha256: c2b87cb7756efdf69892005af546c56c0b5037f54d2a88269b4f347a505e3ca2 + url: "https://pub.dev" + source: hosted + version: "2.0.5" + fake_async: + dependency: transitive + description: + name: fake_async + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" + source: hosted + version: "1.3.1" + ffi: + dependency: transitive + description: + name: ffi + sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + file: + dependency: transitive + description: + name: file + sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" + url: "https://pub.dev" + source: hosted + version: "7.0.0" + fixnum: + dependency: transitive + description: + name: fixnum + sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_gen_core: + dependency: transitive + description: + name: flutter_gen_core + sha256: d8e828ad015a8511624491b78ad8e3f86edb7993528b1613aefbb4ad95947795 + url: "https://pub.dev" + source: hosted + version: "5.6.0" + flutter_gen_runner: + dependency: "direct dev" + description: + name: flutter_gen_runner + sha256: "931b03f77c164df0a4815aac0efc619a6ac8ec4cada55025119fca4894dada90" + url: "https://pub.dev" + source: hosted + version: "5.6.0" + flutter_hooks: + dependency: "direct main" + description: + name: flutter_hooks + sha256: cde36b12f7188c85286fba9b38cc5a902e7279f36dd676967106c041dc9dde70 + url: "https://pub.dev" + source: hosted + version: "0.20.5" + flutter_launcher_icons: + dependency: "direct dev" + description: + name: flutter_launcher_icons + sha256: "526faf84284b86a4cb36d20a5e45147747b7563d921373d4ee0559c54fcdbcea" + url: "https://pub.dev" + source: hosted + version: "0.13.1" + flutter_localizations: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_native_splash: + dependency: "direct dev" + description: + name: flutter_native_splash + sha256: aa06fec78de2190f3db4319dd60fdc8d12b2626e93ef9828633928c2dcaea840 + url: "https://pub.dev" + source: hosted + version: "2.4.1" + flutter_riverpod: + dependency: transitive + description: + name: flutter_riverpod + sha256: "0f1974eff5bbe774bf1d870e406fc6f29e3d6f1c46bd9c58e7172ff68a785d7d" + url: "https://pub.dev" + source: hosted + version: "2.5.1" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + flutter_web_plugins: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + freezed: + dependency: "direct dev" + description: + name: freezed + sha256: a434911f643466d78462625df76fd9eb13e57348ff43fe1f77bbe909522c67a1 + url: "https://pub.dev" + source: hosted + version: "2.5.2" + freezed_annotation: + dependency: "direct main" + description: + name: freezed_annotation + sha256: c2e2d632dd9b8a2b7751117abcfc2b4888ecfe181bd9fca7170d9ef02e595fe2 + url: "https://pub.dev" + source: hosted + version: "2.4.4" + freezed_lint: + dependency: "direct dev" + description: + name: freezed_lint + sha256: "44e2eecff492d54716ac13a553fd9a0475c44318a0f2f5fc6125f605aae1fc96" + url: "https://pub.dev" + source: hosted + version: "0.0.1" + frontend_server_client: + dependency: transitive + description: + name: frontend_server_client + sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694 + url: "https://pub.dev" + source: hosted + version: "4.0.0" + glob: + dependency: transitive + description: + name: glob + sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + graphs: + dependency: transitive + description: + name: graphs + sha256: aedc5a15e78fc65a6e23bcd927f24c64dd995062bcd1ca6eda65a3cff92a4d19 + url: "https://pub.dev" + source: hosted + version: "2.3.1" + hashcodes: + dependency: transitive + description: + name: hashcodes + sha256: "80f9410a5b3c8e110c4b7604546034749259f5d6dcca63e0d3c17c9258f1a651" + url: "https://pub.dev" + source: hosted + version: "2.0.0" + hooks_riverpod: + dependency: "direct main" + description: + name: hooks_riverpod + sha256: "45b2030a18bcd6dbd680c2c91bc3b33e3fe7c323e3acb5ecec93a613e2fbaa8a" + url: "https://pub.dev" + source: hosted + version: "2.5.1" + hotreloader: + dependency: transitive + description: + name: hotreloader + sha256: ed56fdc1f3a8ac924e717257621d09e9ec20e308ab6352a73a50a1d7a4d9158e + url: "https://pub.dev" + source: hosted + version: "4.2.0" + html: + dependency: transitive + description: + name: html + sha256: "3a7812d5bcd2894edf53dfaf8cd640876cf6cef50a8f238745c8b8120ea74d3a" + url: "https://pub.dev" + source: hosted + version: "0.15.4" + http: + dependency: transitive + description: + name: http + sha256: "761a297c042deedc1ffbb156d6e2af13886bb305c2a343a4d972504cd67dd938" + url: "https://pub.dev" + source: hosted + version: "1.2.1" + http_multi_server: + dependency: transitive + description: + name: http_multi_server + sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b" + url: "https://pub.dev" + source: hosted + version: "3.2.1" + http_parser: + dependency: transitive + description: + name: http_parser + sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" + url: "https://pub.dev" + source: hosted + version: "4.0.2" + image: + dependency: transitive + description: + name: image + sha256: "2237616a36c0d69aef7549ab439b833fb7f9fb9fc861af2cc9ac3eedddd69ca8" + url: "https://pub.dev" + source: hosted + version: "4.2.0" + image_size_getter: + dependency: transitive + description: + name: image_size_getter + sha256: f98c4246144e9b968899d2dfde69091e22a539bb64bc9b0bea51505fbb490e57 + url: "https://pub.dev" + source: hosted + version: "2.1.3" + intl: + dependency: "direct main" + description: + name: intl + sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf + url: "https://pub.dev" + source: hosted + version: "0.19.0" + io: + dependency: transitive + description: + name: io + sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e" + url: "https://pub.dev" + source: hosted + version: "1.0.4" + js: + dependency: transitive + description: + name: js + sha256: c1b2e9b5ea78c45e1a0788d29606ba27dc5f71f019f32ca5140f61ef071838cf + url: "https://pub.dev" + source: hosted + version: "0.7.1" + json_annotation: + dependency: "direct main" + description: + name: json_annotation + sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1" + url: "https://pub.dev" + source: hosted + version: "4.9.0" + json_serializable: + dependency: "direct dev" + description: + name: json_serializable + sha256: ea1432d167339ea9b5bb153f0571d0039607a873d6e04e0117af043f14a1fd4b + url: "https://pub.dev" + source: hosted + version: "6.8.0" + lcov_parser: + dependency: transitive + description: + name: lcov_parser + sha256: b2a4225376e47630dbe71217bcf2296e1d79b50e6c20781c0304094b8be05968 + url: "https://pub.dev" + source: hosted + version: "0.1.2" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a" + url: "https://pub.dev" + source: hosted + version: "10.0.4" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8" + url: "https://pub.dev" + source: hosted + version: "3.0.3" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + url: "https://pub.dev" + source: hosted + version: "3.0.1" + lints: + dependency: transitive + description: + name: lints + sha256: "976c774dd944a42e83e2467f4cc670daef7eed6295b10b36ae8c85bcbf828235" + url: "https://pub.dev" + source: hosted + version: "4.0.0" + logging: + dependency: transitive + description: + name: logging + sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340" + url: "https://pub.dev" + source: hosted + version: "1.2.0" + markdown: + dependency: transitive + description: + name: markdown + sha256: ef2a1298144e3f985cc736b22e0ccdaf188b5b3970648f2d9dc13efd1d9df051 + url: "https://pub.dev" + source: hosted + version: "7.2.2" + mason: + dependency: transitive + description: + name: mason + sha256: "2508bb0bf51028fe6a433d694bd4d586d1ad99abb7699ee24d7ed3bfda0ea39e" + url: "https://pub.dev" + source: hosted + version: "0.1.0-dev.57" + mason_logger: + dependency: transitive + description: + name: mason_logger + sha256: "56c44e588e908ef0d1dbb593e1b4473b8ee5fb48fcc8d645c925ab6c8041ebdf" + url: "https://pub.dev" + source: hosted + version: "0.2.15" + matcher: + dependency: transitive + description: + name: matcher + sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb + url: "https://pub.dev" + source: hosted + version: "0.12.16+1" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" + url: "https://pub.dev" + source: hosted + version: "0.8.0" + meta: + dependency: "direct main" + description: + name: meta + sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136" + url: "https://pub.dev" + source: hosted + version: "1.12.0" + mime: + dependency: transitive + description: + name: mime + sha256: "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2" + url: "https://pub.dev" + source: hosted + version: "1.0.5" + mocktail: + dependency: "direct dev" + description: + name: mocktail + sha256: "890df3f9688106f25755f26b1c60589a92b3ab91a22b8b224947ad041bf172d8" + url: "https://pub.dev" + source: hosted + version: "1.0.4" + mustache_template: + dependency: transitive + description: + name: mustache_template + sha256: a46e26f91445bfb0b60519be280555b06792460b27b19e2b19ad5b9740df5d1c + url: "https://pub.dev" + source: hosted + version: "2.0.0" + node_preamble: + dependency: transitive + description: + name: node_preamble + sha256: "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db" + url: "https://pub.dev" + source: hosted + version: "2.0.2" + package_config: + dependency: transitive + description: + name: package_config + sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" + url: "https://pub.dev" + source: hosted + version: "2.1.0" + pana: + dependency: transitive + description: + name: pana + sha256: "0b9a31cc6112ba64d291ce0daaf14ed4a92c910c021c5f0a31bf6aceb357663a" + url: "https://pub.dev" + source: hosted + version: "0.22.8" + path: + dependency: transitive + description: + name: path + sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" + url: "https://pub.dev" + source: hosted + version: "1.9.0" + path_parsing: + dependency: transitive + description: + name: path_parsing + sha256: e3e67b1629e6f7e8100b367d3db6ba6af4b1f0bb80f64db18ef1fbabd2fa9ccf + url: "https://pub.dev" + source: hosted + version: "1.0.1" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 + url: "https://pub.dev" + source: hosted + version: "2.2.1" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170" + url: "https://pub.dev" + source: hosted + version: "2.2.1" + petitparser: + dependency: transitive + description: + name: petitparser + sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27 + url: "https://pub.dev" + source: hosted + version: "6.0.2" + platform: + dependency: transitive + description: + name: platform + sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec" + url: "https://pub.dev" + source: hosted + version: "3.1.4" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" + url: "https://pub.dev" + source: hosted + version: "2.1.8" + pool: + dependency: transitive + description: + name: pool + sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" + url: "https://pub.dev" + source: hosted + version: "1.5.1" + process: + dependency: transitive + description: + name: process + sha256: "21e54fd2faf1b5bdd5102afd25012184a6793927648ea81eea80552ac9405b32" + url: "https://pub.dev" + source: hosted + version: "5.0.2" + protobuf: + dependency: transitive + description: + name: protobuf + sha256: "68645b24e0716782e58948f8467fd42a880f255096a821f9e7d0ec625b00c84d" + url: "https://pub.dev" + source: hosted + version: "3.1.0" + pub_semver: + dependency: transitive + description: + name: pub_semver + sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + pub_updater: + dependency: transitive + description: + name: pub_updater + sha256: "54e8dc865349059ebe7f163d6acce7c89eb958b8047e6d6e80ce93b13d7c9e60" + url: "https://pub.dev" + source: hosted + version: "0.4.0" + pubspec_parse: + dependency: transitive + description: + name: pubspec_parse + sha256: c63b2876e58e194e4b0828fcb080ad0e06d051cb607a6be51a9e084f47cb9367 + url: "https://pub.dev" + source: hosted + version: "1.2.3" + retry: + dependency: transitive + description: + name: retry + sha256: "822e118d5b3aafed083109c72d5f484c6dc66707885e07c0fbcb8b986bba7efc" + url: "https://pub.dev" + source: hosted + version: "3.1.2" + riverpod: + dependency: transitive + description: + name: riverpod + sha256: f21b32ffd26a36555e501b04f4a5dca43ed59e16343f1a30c13632b2351dfa4d + url: "https://pub.dev" + source: hosted + version: "2.5.1" + riverpod_analyzer_utils: + dependency: transitive + description: + name: riverpod_analyzer_utils + sha256: "8b71f03fc47ae27d13769496a1746332df4cec43918aeba9aff1e232783a780f" + url: "https://pub.dev" + source: hosted + version: "0.5.1" + riverpod_annotation: + dependency: "direct main" + description: + name: riverpod_annotation + sha256: e5e796c0eba4030c704e9dae1b834a6541814963292839dcf9638d53eba84f5c + url: "https://pub.dev" + source: hosted + version: "2.3.5" + riverpod_generator: + dependency: "direct dev" + description: + name: riverpod_generator + sha256: d451608bf17a372025fc36058863737636625dfdb7e3cbf6142e0dfeb366ab22 + url: "https://pub.dev" + source: hosted + version: "2.4.0" + riverpod_lint: + dependency: "direct dev" + description: + name: riverpod_lint + sha256: "3c67c14ccd16f0c9d53e35ef70d06cd9d072e2fb14557326886bbde903b230a5" + url: "https://pub.dev" + source: hosted + version: "2.3.10" + rxdart: + dependency: transitive + description: + name: rxdart + sha256: "0c7c0cedd93788d996e33041ffecda924cc54389199cde4e6a34b440f50044cb" + url: "https://pub.dev" + source: hosted + version: "0.27.7" + safe_url_check: + dependency: transitive + description: + name: safe_url_check + sha256: "49a3e060a7869cbafc8f4845ca1ecbbaaa53179980a32f4fdfeab1607e90f41d" + url: "https://pub.dev" + source: hosted + version: "1.1.2" + scratch_space: + dependency: transitive + description: + name: scratch_space + sha256: "8510fbff458d733a58fc427057d1ac86303b376d609d6e1bc43f240aad9aa445" + url: "https://pub.dev" + source: hosted + version: "1.0.2" + shared_preferences: + dependency: "direct main" + description: + name: shared_preferences + sha256: d3bbe5553a986e83980916ded2f0b435ef2e1893dfaa29d5a7a790d0eca12180 + url: "https://pub.dev" + source: hosted + version: "2.2.3" + shared_preferences_android: + dependency: transitive + description: + name: shared_preferences_android + sha256: "1ee8bf911094a1b592de7ab29add6f826a7331fb854273d55918693d5364a1f2" + url: "https://pub.dev" + source: hosted + version: "2.2.2" + shared_preferences_foundation: + dependency: transitive + description: + name: shared_preferences_foundation + sha256: "0a8a893bf4fd1152f93fec03a415d11c27c74454d96e2318a7ac38dd18683ab7" + url: "https://pub.dev" + source: hosted + version: "2.4.0" + shared_preferences_linux: + dependency: transitive + description: + name: shared_preferences_linux + sha256: "9f2cbcf46d4270ea8be39fa156d86379077c8a5228d9dfdb1164ae0bb93f1faa" + url: "https://pub.dev" + source: hosted + version: "2.3.2" + shared_preferences_platform_interface: + dependency: transitive + description: + name: shared_preferences_platform_interface + sha256: "22e2ecac9419b4246d7c22bfbbda589e3acf5c0351137d87dd2939d984d37c3b" + url: "https://pub.dev" + source: hosted + version: "2.3.2" + shared_preferences_web: + dependency: transitive + description: + name: shared_preferences_web + sha256: "9aee1089b36bd2aafe06582b7d7817fd317ef05fc30e6ba14bff247d0933042a" + url: "https://pub.dev" + source: hosted + version: "2.3.0" + shared_preferences_windows: + dependency: transitive + description: + name: shared_preferences_windows + sha256: "841ad54f3c8381c480d0c9b508b89a34036f512482c407e6df7a9c4aa2ef8f59" + url: "https://pub.dev" + source: hosted + version: "2.3.2" + shelf: + dependency: transitive + description: + name: shelf + sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4 + url: "https://pub.dev" + source: hosted + version: "1.4.1" + shelf_packages_handler: + dependency: transitive + description: + name: shelf_packages_handler + sha256: "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e" + url: "https://pub.dev" + source: hosted + version: "3.0.2" + shelf_static: + dependency: transitive + description: + name: shelf_static + sha256: a41d3f53c4adf0f57480578c1d61d90342cd617de7fc8077b1304643c2d85c1e + url: "https://pub.dev" + source: hosted + version: "1.1.2" + shelf_web_socket: + dependency: transitive + description: + name: shelf_web_socket + sha256: "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1" + url: "https://pub.dev" + source: hosted + version: "1.0.4" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.99" + source_gen: + dependency: transitive + description: + name: source_gen + sha256: "14658ba5f669685cd3d63701d01b31ea748310f7ab854e471962670abcf57832" + url: "https://pub.dev" + source: hosted + version: "1.5.0" + source_helper: + dependency: transitive + description: + name: source_helper + sha256: "6adebc0006c37dd63fe05bca0a929b99f06402fc95aa35bf36d67f5c06de01fd" + url: "https://pub.dev" + source: hosted + version: "1.3.4" + source_map_stack_trace: + dependency: transitive + description: + name: source_map_stack_trace + sha256: "84cf769ad83aa6bb61e0aa5a18e53aea683395f196a6f39c4c881fb90ed4f7ae" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + source_maps: + dependency: transitive + description: + name: source_maps + sha256: "708b3f6b97248e5781f493b765c3337db11c5d2c81c3094f10904bfa8004c703" + url: "https://pub.dev" + source: hosted + version: "0.10.12" + source_span: + dependency: transitive + description: + name: source_span + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + url: "https://pub.dev" + source: hosted + version: "1.10.0" + sprintf: + dependency: transitive + description: + name: sprintf + sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23" + url: "https://pub.dev" + source: hosted + version: "7.0.0" + stack_trace: + dependency: transitive + description: + name: stack_trace + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" + url: "https://pub.dev" + source: hosted + version: "1.11.1" + state_notifier: + dependency: transitive + description: + name: state_notifier + sha256: b8677376aa54f2d7c58280d5a007f9e8774f1968d1fb1c096adcb4792fba29bb + url: "https://pub.dev" + source: hosted + version: "1.0.0" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + url: "https://pub.dev" + source: hosted + version: "2.1.2" + stream_transform: + dependency: transitive + description: + name: stream_transform + sha256: "14a00e794c7c11aa145a170587321aedce29769c08d7f58b1d141da75e3b1c6f" + url: "https://pub.dev" + source: hosted + version: "2.1.0" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" + source: hosted + version: "1.2.0" + tar: + dependency: transitive + description: + name: tar + sha256: "8e67ab1baa07d3ef2c5d52cfb84e7ed4742799141e9e2ac3d0801a1a7ccb7575" + url: "https://pub.dev" + source: hosted + version: "2.0.0" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" + source: hosted + version: "1.2.1" + test: + dependency: transitive + description: + name: test + sha256: "7ee446762c2c50b3bd4ea96fe13ffac69919352bd3b4b17bac3f3465edc58073" + url: "https://pub.dev" + source: hosted + version: "1.25.2" + test_api: + dependency: transitive + description: + name: test_api + sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f" + url: "https://pub.dev" + source: hosted + version: "0.7.0" + test_core: + dependency: transitive + description: + name: test_core + sha256: "2bc4b4ecddd75309300d8096f781c0e3280ca1ef85beda558d33fcbedc2eead4" + url: "https://pub.dev" + source: hosted + version: "0.6.0" + time: + dependency: transitive + description: + name: time + sha256: ad8e018a6c9db36cb917a031853a1aae49467a93e0d464683e029537d848c221 + url: "https://pub.dev" + source: hosted + version: "2.1.4" + timing: + dependency: transitive + description: + name: timing + sha256: "70a3b636575d4163c477e6de42f247a23b315ae20e86442bebe32d3cabf61c32" + url: "https://pub.dev" + source: hosted + version: "1.0.1" + typed_data: + dependency: transitive + description: + name: typed_data + sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c + url: "https://pub.dev" + source: hosted + version: "1.3.2" + universal_io: + dependency: transitive + description: + name: universal_io + sha256: "1722b2dcc462b4b2f3ee7d188dad008b6eb4c40bbd03a3de451d82c78bba9aad" + url: "https://pub.dev" + source: hosted + version: "2.2.2" + uuid: + dependency: transitive + description: + name: uuid + sha256: "814e9e88f21a176ae1359149021870e87f7cddaf633ab678a5d2b0bff7fd1ba8" + url: "https://pub.dev" + source: hosted + version: "4.4.0" + vector_graphics_codec: + dependency: transitive + description: + name: vector_graphics_codec + sha256: c86987475f162fadff579e7320c7ddda04cd2fdeffbe1129227a85d9ac9e03da + url: "https://pub.dev" + source: hosted + version: "1.1.11+1" + vector_graphics_compiler: + dependency: transitive + description: + name: vector_graphics_compiler + sha256: "12faff3f73b1741a36ca7e31b292ddeb629af819ca9efe9953b70bd63fc8cd81" + url: "https://pub.dev" + source: hosted + version: "1.1.11+1" + vector_math: + dependency: transitive + description: + name: vector_math + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + very_good_analysis: + dependency: "direct dev" + description: + name: very_good_analysis + sha256: "1fb637c0022034b1f19ea2acb42a3603cbd8314a470646a59a2fb01f5f3a8629" + url: "https://pub.dev" + source: hosted + version: "6.0.0" + very_good_cli: + dependency: "direct dev" + description: + name: very_good_cli + sha256: e0f5d8e2e012ce5bb687085f7adaa101bd98fce4b6122f59498a2d86418b3dfd + url: "https://pub.dev" + source: hosted + version: "0.22.1" + very_good_test_runner: + dependency: transitive + description: + name: very_good_test_runner + sha256: "3e1e3519f5a790abaafa94442edaae7a9af817f6241b8b787c01a465f3332059" + url: "https://pub.dev" + source: hosted + version: "0.2.0" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec" + url: "https://pub.dev" + source: hosted + version: "14.2.1" + watcher: + dependency: transitive + description: + name: watcher + sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + web: + dependency: transitive + description: + name: web + sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27" + url: "https://pub.dev" + source: hosted + version: "0.5.1" + web_socket_channel: + dependency: transitive + description: + name: web_socket_channel + sha256: "58c6666b342a38816b2e7e50ed0f1e261959630becd4c879c4f26bfa14aa5a42" + url: "https://pub.dev" + source: hosted + version: "2.4.5" + webkit_inspection_protocol: + dependency: transitive + description: + name: webkit_inspection_protocol + sha256: "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572" + url: "https://pub.dev" + source: hosted + version: "1.2.1" + win32: + dependency: transitive + description: + name: win32 + sha256: a79dbe579cb51ecd6d30b17e0cae4e0ea15e2c0e66f69ad4198f22a6789e94f4 + url: "https://pub.dev" + source: hosted + version: "5.5.1" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d + url: "https://pub.dev" + source: hosted + version: "1.0.4" + xml: + dependency: transitive + description: + name: xml + sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226 + url: "https://pub.dev" + source: hosted + version: "6.5.0" + yaml: + dependency: transitive + description: + name: yaml + sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" + url: "https://pub.dev" + source: hosted + version: "3.1.2" +sdks: + dart: ">=3.4.0 <3.6.0" + flutter: ">=3.19.0" diff --git a/packages/app/pubspec.yaml b/packages/app/pubspec.yaml new file mode 100644 index 0000000..80d747b --- /dev/null +++ b/packages/app/pubspec.yaml @@ -0,0 +1,271 @@ +name: "our_democracy" +description: "An application to encourage participation in the American democratic system" + +# Prevent accidental publishing to pub.dev. +publish_to: "none" + +# The following defines the version and build number for your application. +# A version number is three numbers separated by dots, like 1.2.43 +# followed by an optional build number separated by a +. +# Both the version and the builder number may be overridden in flutter +# build by specifying --build-name and --build-number, respectively. +# In Android, build-name is used as versionName while build-number used as versionCode. +# Read more about Android versioning at https://developer.android.com/studio/publish/versioning +# In iOS, build-name is used as CFBundleShortVersionString while build-number is used as CFBundleVersion. +# Read more about iOS versioning at +# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html +# In Windows, build-name is used as the major, minor, and patch parts +# of the product and file versions while build-number is used as the build suffix. +version: 0.0.1+1 +homepage: https://PHS-TSA.github.io +documentation: https://github.com/PHS-TSA/our_democracy +issue_tracker: https://github.com/PHS-TSA/our_democracy/issues +repository: https://github.com/PHS-TSA/our_democracy.git + +environment: + sdk: ">=3.4.0 <4.0.0" + +# Dependencies specify other packages that your package needs in order to work. +# To automatically upgrade your package dependencies to the latest versions +# consider running `flutter pub upgrade --major-versions`. Alternatively, +# dependencies can be manually updated by changing the version numbers below to +# the latest version available on pub.dev. To see which dependencies have newer +# versions available, run `flutter pub outdated`. + +dependencies: + auto_route: ^8.3.0 + build_version: ^2.1.1 + # The following adds the Cupertino Icons font to your application. + # Use with the CupertinoIcons class for iOS style icons. + cupertino_icons: ^1.0.2 # Only required if you use Cupertino (iOS style) icons + flutter: + sdk: flutter + flutter_hooks: ^0.20.5 + flutter_localizations: # Required to enable localization + sdk: flutter + flutter_web_plugins: + sdk: flutter + freezed_annotation: ^2.4.4 + hooks_riverpod: ^2.5.1 + intl: ^0.19.0 + json_annotation: ^4.9.0 + meta: ^1.12.0 + riverpod_annotation: ^2.3.5 + shared_preferences: ^2.2.3 + +dev_dependencies: + auto_route_generator: ^8.1.0 + build_runner: ^2.4.11 + build_web_compilers: ^4.0.10 + custom_lint: ^0.6.4 + dhttpd: ^4.1.0 + flutter_gen_runner: ^5.6.0 + flutter_launcher_icons: ^0.13.1 + flutter_native_splash: ^2.4.1 + flutter_test: # Required for a Flutter project that includes tests + sdk: flutter + freezed: ^2.5.2 + freezed_lint: ^0.0.1 + json_serializable: ^6.8.0 + mocktail: ^1.0.4 + riverpod_generator: ^2.4.0 + riverpod_lint: ^2.3.10 + very_good_analysis: ^6.0.0 + very_good_cli: ^0.22.1 + +# For information on the generic Dart part of this file, see the +# following page: https://dart.dev/tools/pub/pubspec + +# The following section is specific to Flutter packages. +flutter: + # The following line ensures that the Material Icons font is + # included with your application, so that you can use the icons in + # the material Icons class. + uses-material-design: true # Required if you use the Material icon font + + # Enable generation of localized strings from arb files. + generate: false + + # To add assets to your application, add an assets section, like this: + assets: # Lists assets such as image files + - assets/icons/ + + # An image asset can refer to one or more resolution-specific "variants", see + # https://flutter.dev/assets-and-images/#resolution-aware + + # For details regarding adding assets from package dependencies, see + # https://flutter.dev/assets-and-images/#from-packages + +# dart run flutter_launcher_icons +flutter_launcher_icons: + image_path: "assets/icons/logo.png" + + android: "launcher_icon" + image_path_android: "assets/icons/logo.png" + min_sdk_android: 21 # android min sdk min:16, default 21 + # adaptive_icon_background: "assets/icons/background.png" + # adaptive_icon_foreground: "assets/icons/foreground.png" + + ios: true + image_path_ios: "assets/icons/logo.png" + remove_alpha_ios: true + + web: + generate: true + image_path: "assets/icons/logo.png" + background_color: "#0a9f06" + theme_color: "#0a9f06" + + windows: + generate: true + image_path: "assets/icons/logo.png" + icon_size: 48 # min:48, max:256, default: 48 + + macos: + generate: true + image_path: "assets/icons/logo.png" + +flutter_native_splash: + # This package generates native code to customize Flutter's default white native splash screen + # with background color and splash image. + # Customize the parameters below, and run the following command in the terminal: + # dart run flutter_native_splash:create + # To restore Flutter's default white splash screen, run the following command in the terminal: + # dart run flutter_native_splash:remove + + # IMPORTANT NOTE: These parameters do not affect the configuration of Android 12 and later, which + # handle splash screens differently that prior versions of Android. Android 12 and later must be + # configured specifically in the android_12 section below. + + # color or background_image is the only required parameter. Use color to set the background + # of your splash screen to a solid color. Use background_image to set the background of your + # splash screen to a png image. This is useful for gradients. The image will be stretch to the + # size of the app. Only one parameter can be used, color and background_image cannot both be set. + color: "#0a9f06" + #background_image: "assets/background.png" + + # Optional parameters are listed below. To enable a parameter, uncomment the line by removing + # the leading # character. + + # The image parameter allows you to specify an image used in the splash screen. It must be a + # png file and should be sized for 4x pixel density. + image: assets/icons/logo.png + + # The branding property allows you to specify an image used as branding in the splash screen. + # It must be a png file. It is supported for Android, iOS and the Web. For Android 12, + # see the Android 12 section below. + #branding: assets/dart.png + + # To position the branding image at the bottom of the screen you can use bottom, bottomRight, + # and bottomLeft. The default values is bottom if not specified or specified something else. + branding_mode: bottom + + # The color_dark, background_image_dark, image_dark, branding_dark are parameters that set the background + # and image when the device is in dark mode. If they are not specified, the app will use the + # parameters from above. If the image_dark parameter is specified, color_dark or + # background_image_dark must be specified. color_dark and background_image_dark cannot both be + # set. + color_dark: "#134011" + #background_image_dark: "assets/dark-background.png" + #image_dark: assets/splash-invert.png + #branding_dark: assets/dart_dark.png + + # Android 12 handles the splash screen differently than previous versions. Please visit + # https://developer.android.com/guide/topics/ui/splash-screen + # Following are Android 12 specific parameter. + android_12: + # The image parameter sets the splash screen icon image. If this parameter is not specified, + # the app's launcher icon will be used instead. + # Please note that the splash screen will be clipped to a circle on the center of the screen. + # App icon with an icon background: This should be 960ร—960 pixels, and fit within a circle + # 640 pixels in diameter. + # App icon without an icon background: This should be 1152ร—1152 pixels, and fit within a circle + # 768 pixels in diameter. + #image: assets/android12splash.png + + # Splash screen background color. + #color: "#0a9f06" + + # App icon background color. + icon_background_color: "#111111" + + # The branding property allows you to specify an image used as branding in the splash screen. + #branding: assets/dart.png + + # The image_dark, color_dark, icon_background_color_dark, and branding_dark set values that + # apply when the device is in dark mode. If they are not specified, the app will use the + # parameters from above. + #image_dark: assets/android12splash-invert.png + #color_dark: "#134011" + #icon_background_color_dark: "#eeeeee" + + # The android, ios and web parameters can be used to disable generating a splash screen on a given + # platform. + #android: false + #ios: false + #web: false + + # Platform specific images can be specified with the following parameters, which will override + # the respective parameter. You may specify all, selected, or none of these parameters: + #color_android: "#0a9f06" + #color_dark_android: "#134011" + #color_ios: "#0a9f06" + #color_dark_ios: "#134011" + #color_web: "#0a9f06" + #color_dark_web: "#134011" + #image_android: assets/splash-android.png + #image_dark_android: assets/splash-invert-android.png + #image_ios: assets/splash-ios.png + #image_dark_ios: assets/splash-invert-ios.png + #image_web: assets/splash-web.gif + #image_dark_web: assets/splash-invert-web.gif + #background_image_android: "assets/background-android.png" + #background_image_dark_android: "assets/dark-background-android.png" + #background_image_ios: "assets/background-ios.png" + #background_image_dark_ios: "assets/dark-background-ios.png" + #background_image_web: "assets/background-web.png" + #background_image_dark_web: "assets/dark-background-web.png" + #branding_android: assets/brand-android.png + #branding_dark_android: assets/dart_dark-android.png + #branding_ios: assets/brand-ios.png + #branding_dark_ios: assets/dart_dark-ios.png + #branding_web: assets/brand-web.gif + #branding_dark_web: assets/dart_dark-web.gif + + # The position of the splash image can be set with android_gravity, ios_content_mode, and + # web_image_mode parameters. All default to center. + # + # android_gravity can be one of the following Android Gravity (see + # https://developer.android.com/reference/android/view/Gravity): bottom, center, + # center_horizontal, center_vertical, clip_horizontal, clip_vertical, end, fill, fill_horizontal, + # fill_vertical, left, right, start, or top. + android_gravity: center + # + # ios_content_mode can be one of the following iOS UIView.ContentMode (see + # https://developer.apple.com/documentation/uikit/uiview/contentmode): scaleToFill, + # scaleAspectFit, scaleAspectFill, center, top, bottom, left, right, topLeft, topRight, + # bottomLeft, or bottomRight. + ios_content_mode: center + # + # web_image_mode can be one of the following modes: center, contain, stretch, and cover. + web_image_mode: center + + # The screen orientation can be set in Android with the android_screen_orientation parameter. + # Valid parameters can be found here: + # https://developer.android.com/guide/topics/manifest/activity-element#screen + #android_screen_orientation: sensorLandscape + + # To hide the notification bar, use the fullscreen parameter. Has no effect in web since web + # has no notification bar. Defaults to false. + # NOTE: Unlike Android, iOS will not automatically show the notification bar when the app loads. + # To show the notification bar, add the following code to your Flutter app: + # WidgetsFlutterBinding.ensureInitialized(); + # SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: [SystemUiOverlay.bottom, SystemUiOverlay.top], ); + fullscreen: true + + # If you have changed the name(s) of your info.plist file(s), you can specify the filename(s) + # with the info_plist_files parameter. Remove only the # characters in the three lines below, + # do not remove any spaces: + #info_plist_files: + # - 'ios/Runner/Info-Debug.plist' + # - 'ios/Runner/Info-Release.plist' diff --git a/packages/app/test/helpers/accessibility.dart b/packages/app/test/helpers/accessibility.dart new file mode 100644 index 0000000..c2b8ae9 --- /dev/null +++ b/packages/app/test/helpers/accessibility.dart @@ -0,0 +1,41 @@ +import 'package:flutter/widgets.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; + +import 'pump_app.dart'; + +void testAccessibilityGuidelines( + Widget widget, { + List overrides = const [], +}) { + group('is accessible', () { + testWidgets('on Android.', (tester) async { + await tester.pumpApp(widget, overrides: overrides); + + final handle = tester.ensureSemantics(); + await expectLater(tester, meetsGuideline(androidTapTargetGuideline)); + handle.dispose(); + }); + testWidgets('on iOS.', (tester) async { + await tester.pumpApp(widget, overrides: overrides); + + final handle = tester.ensureSemantics(); + await expectLater(tester, meetsGuideline(iOSTapTargetGuideline)); + handle.dispose(); + }); + testWidgets('according to the WCAG.', (tester) async { + await tester.pumpApp(widget, overrides: overrides); + + final handle = tester.ensureSemantics(); + await expectLater(tester, meetsGuideline(textContrastGuideline)); + handle.dispose(); + }); + testWidgets('with regard to labeling buttons.', (tester) async { + await tester.pumpApp(widget, overrides: overrides); + + final handle = tester.ensureSemantics(); + await expectLater(tester, meetsGuideline(labeledTapTargetGuideline)); + handle.dispose(); + }); + }); +} diff --git a/packages/app/test/helpers/mocks.dart b/packages/app/test/helpers/mocks.dart new file mode 100644 index 0000000..ae7c2ce --- /dev/null +++ b/packages/app/test/helpers/mocks.dart @@ -0,0 +1,4 @@ +import 'package:mocktail/mocktail.dart'; +import 'package:shared_preferences/shared_preferences.dart'; + +class MockSharedPreferences extends Mock implements SharedPreferences {} diff --git a/packages/app/test/helpers/pump_app.dart b/packages/app/test/helpers/pump_app.dart new file mode 100644 index 0000000..c152024 --- /dev/null +++ b/packages/app/test/helpers/pump_app.dart @@ -0,0 +1,52 @@ +/// This library contains utilities for configuring a [WidgetTester]. +library; + +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; +import 'package:our_democracy/src/l10n/l10n.dart'; +import 'package:our_democracy/src/utils/design.dart'; + +import 'riverpod.dart'; + +/// Extension method for [WidgetTester.pumpWidget]. +extension PumpApp on WidgetTester { + /// Pump a [Widget] in a [ProviderScope]. + Future pumpApp( + Widget child, { + Overrides overrides = const [], + List? observers, + }) async { + await pumpWidget( + ProviderScope( + overrides: overrides, + observers: observers, + child: _Widget( + child: child, + ), + ), + ); + + await pumpAndSettle(); + } +} + +class _Widget extends StatelessWidget { + const _Widget({ + required this.child, + }); + + final Widget child; + + @override + Widget build(BuildContext context) { + return MaterialApp( + home: child, + onGenerateTitle: (context) => context.l10n.appTitle, + theme: theme, + locale: const Locale('en', 'US'), + localizationsDelegates: AppLocalizations.localizationsDelegates, + supportedLocales: AppLocalizations.supportedLocales, + ); + } +} diff --git a/packages/app/test/helpers/riverpod.dart b/packages/app/test/helpers/riverpod.dart new file mode 100644 index 0000000..7603ff7 --- /dev/null +++ b/packages/app/test/helpers/riverpod.dart @@ -0,0 +1,27 @@ +/// This library contains utilities for testing with Riverpod. +library; + +import 'package:flutter_test/flutter_test.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; + +typedef Overrides = List; + +/// A testing utility which creates a [ProviderContainer] and automatically +/// disposes it at the end of the test. +ProviderContainer createContainer({ + ProviderContainer? parent, + Overrides overrides = const [], + List? observers, +}) { + // Create a ProviderContainer, and optionally allow specifying parameters. + final container = ProviderContainer( + parent: parent, + overrides: overrides, + observers: observers, + ); + + // When the test ends, dispose the container. + addTearDown(container.dispose); + + return container; +} diff --git a/packages/app/test/src/app/app_test.dart b/packages/app/test/src/app/app_test.dart new file mode 100644 index 0000000..e842f1b --- /dev/null +++ b/packages/app/test/src/app/app_test.dart @@ -0,0 +1,51 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; +import 'package:our_democracy/src/app/app.dart'; +import 'package:our_democracy/src/features/settings/application/settings_service.dart'; +import 'package:our_democracy/src/features/settings/data/preferences_repository.dart'; +import 'package:our_democracy/src/l10n/l10n.dart'; + +import '../../helpers/mocks.dart'; + +extension _WidgetTesterX on WidgetTester { + Future pumpWidgetPage() async { + final mockSharedPreferences = MockSharedPreferences(); + + await pumpWidget( + ProviderScope( + overrides: [ + sharedPreferencesProvider.overrideWithValue(mockSharedPreferences), + initialSettingsProvider.overrideWithValue(defaultSettings), + ], + child: const MyApp(), + ), + ); + } +} + +void main() { + testWidgets('MyApp should build MaterialApp.router', (tester) async { + await tester.pumpWidgetPage(); + expect(find.byType(MaterialApp), findsOneWidget); + }); + + testWidgets('MyApp should have correct restorationScopeId', (tester) async { + await tester.pumpWidgetPage(); + final app = tester.widget(find.byType(MaterialApp)); + expect(app.restorationScopeId, 'app'); + }); + + testWidgets('MyApp should have correct localizationsDelegates', + (tester) async { + await tester.pumpWidgetPage(); + final app = tester.widget(find.byType(MaterialApp)); + expect(app.localizationsDelegates, AppLocalizations.localizationsDelegates); + }); + + testWidgets('MyApp should have correct supportedLocales', (tester) async { + await tester.pumpWidgetPage(); + final app = tester.widget(find.byType(MaterialApp)); + expect(app.supportedLocales, AppLocalizations.supportedLocales); + }); +} diff --git a/packages/app/test/src/app/bootstrap_test.dart b/packages/app/test/src/app/bootstrap_test.dart new file mode 100644 index 0000000..6c321ae --- /dev/null +++ b/packages/app/test/src/app/bootstrap_test.dart @@ -0,0 +1,29 @@ +import 'package:flutter/widgets.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:our_democracy/src/app/app.dart'; +import 'package:shared_preferences/shared_preferences.dart'; + +import '../../helpers/mocks.dart'; + +Future getSharedPreferences() async { + return MockSharedPreferences(); +} + +void main() { + setUpAll(() { + registerFallbackValue(Container()); + }); + + test('main does not throw', () async { + const app = MyApp(); + + await expectLater( + app.bootstrap( + (_) {}, + getSharedPreferences, + ), + completes, + ); + }); +} diff --git a/packages/app/test/src/app/router_test.dart b/packages/app/test/src/app/router_test.dart new file mode 100644 index 0000000..179951d --- /dev/null +++ b/packages/app/test/src/app/router_test.dart @@ -0,0 +1,47 @@ +import 'package:auto_route/auto_route.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:our_democracy/src/app/router.dart'; + +void main() { + group('router', () { + final tested = AppRouter(); + + group('config', () { + test( + 'defaultRouteType is a RouteType.material.', + () { + expect(tested.defaultRouteType, isInstanceOf()); + }, + ); + + test('should contain the correct number of routes.', () { + expect(tested.routes.length, equals(2)); + }); + }); + + group('path', () { + test('should be correct for WrapperRoute.', () { + final wrapperRoute = tested.routes[0]; + expect(wrapperRoute.path, equals('/')); + }); + test('should be correct for SampleItemListRoute.', () { + final sampleItemListRoute = + tested.routes[0].children?.routes.toList()[0]; + expect(sampleItemListRoute?.path, equals('')); + }); + test('should be correct for SampleItemDetailsRoute.', () { + final sampleItemDetailsRoute = + tested.routes[0].children?.routes.toList()[1]; + expect(sampleItemDetailsRoute?.path, equals('sample-item')); + }); + test('should be correct for SettingsRoute.', () { + final settingsRoute = tested.routes[0].children?.routes.toList()[2]; + expect(settingsRoute?.path, equals('settings')); + }); + test('should redirect on 404', () { + final redirectRoute = tested.routes[1]; + expect(redirectRoute.path, equals('/*')); + }); + }); + }); +} diff --git a/packages/app/test/src/app/wrapper_page_test.dart b/packages/app/test/src/app/wrapper_page_test.dart new file mode 100644 index 0000000..293669c --- /dev/null +++ b/packages/app/test/src/app/wrapper_page_test.dart @@ -0,0 +1,76 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; +import 'package:our_democracy/src/app/router.dart'; +import 'package:our_democracy/src/app/wrapper_page.dart'; +import 'package:our_democracy/src/l10n/l10n.dart'; +import 'package:our_democracy/src/utils/design.dart'; +import 'package:our_democracy/src/utils/router.dart'; + +import '../../helpers/riverpod.dart'; + +extension _WidgetTesterX on WidgetTester { + Future pumpWidgetPage() async { + final container = createContainer( + overrides: [], + ); + final routerSubscription = container.listen(routerProvider, (_, __) {}); + final router = routerSubscription.read(); + + await pumpWidget( + UncontrolledProviderScope( + container: container, + child: MaterialApp.router( + routerConfig: router.config(), + onGenerateTitle: (context) => context.l10n.appTitle, + theme: theme, + locale: const Locale('en', 'US'), + localizationsDelegates: AppLocalizations.localizationsDelegates, + supportedLocales: AppLocalizations.supportedLocales, + ), + ), + ); + + await router.pushAll([ + const WrapperRoute(), + ]); + await pumpAndSettle(); + expect(router.urlState.url, equals('/')); + expect(find.byType(WrapperPage), findsOneWidget); + } +} + +void main() { + group('wrapper page', () { + group('is accessible', () { + testWidgets('on Android.', (tester) async { + await tester.pumpWidgetPage(); + + final handle = tester.ensureSemantics(); + await expectLater(tester, meetsGuideline(androidTapTargetGuideline)); + handle.dispose(); + }); + testWidgets('on iOS.', (tester) async { + await tester.pumpWidgetPage(); + + final handle = tester.ensureSemantics(); + await expectLater(tester, meetsGuideline(iOSTapTargetGuideline)); + handle.dispose(); + }); + testWidgets('according to the WCAG.', (tester) async { + await tester.pumpWidgetPage(); + + final handle = tester.ensureSemantics(); + await expectLater(tester, meetsGuideline(textContrastGuideline)); + handle.dispose(); + }); + testWidgets('with regard to labeling buttons.', (tester) async { + await tester.pumpWidgetPage(); + + final handle = tester.ensureSemantics(); + await expectLater(tester, meetsGuideline(labeledTapTargetGuideline)); + handle.dispose(); + }); + }); + }); +} diff --git a/packages/app/test/src/features/sample/application/sample_items_service_test.dart b/packages/app/test/src/features/sample/application/sample_items_service_test.dart new file mode 100644 index 0000000..3563c42 --- /dev/null +++ b/packages/app/test/src/features/sample/application/sample_items_service_test.dart @@ -0,0 +1,14 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; +import 'package:our_democracy/src/features/sample/application/sample_items_service.dart'; + +void main() { + group('Sample items service', () { + test('provides three items', () { + final container = ProviderContainer(); + + final model = container.read(sampleItemsServiceProvider); + expect(model.items.length, 3); + }); + }); +} diff --git a/packages/app/test/src/features/sample/domain/sample_item_entity_test.dart b/packages/app/test/src/features/sample/domain/sample_item_entity_test.dart new file mode 100644 index 0000000..0608a39 --- /dev/null +++ b/packages/app/test/src/features/sample/domain/sample_item_entity_test.dart @@ -0,0 +1,10 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:our_democracy/src/features/sample/domain/sample_item_entity.dart'; + +void main() { + test('SampleItemEntity should correctly wrap an int', () { + const entity = SampleItemEntity(1); + expect(entity, isA()); + expect(entity, equals(1)); + }); +} diff --git a/packages/app/test/src/features/sample/domain/sample_items_model_test.dart b/packages/app/test/src/features/sample/domain/sample_items_model_test.dart new file mode 100644 index 0000000..b5de5f3 --- /dev/null +++ b/packages/app/test/src/features/sample/domain/sample_items_model_test.dart @@ -0,0 +1,17 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:our_democracy/src/features/sample/domain/sample_items_model.dart'; + +void main() { + group('SampleItemsModel', () { + test('should be constant and support value equality', () { + // Arrange + const model = SampleItemsModel(items: []); + + // Act + final newModel = model.copyWith(items: []); + + // Assert + expect(newModel, equals(model)); + }); + }); +} diff --git a/packages/app/test/src/features/sample/presentation/items/sample_item_details_page_test.dart b/packages/app/test/src/features/sample/presentation/items/sample_item_details_page_test.dart new file mode 100644 index 0000000..032dec3 --- /dev/null +++ b/packages/app/test/src/features/sample/presentation/items/sample_item_details_page_test.dart @@ -0,0 +1,23 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:our_democracy/src/features/sample/presentation/items/sample_item_details_page.dart'; + +import '../../../../../helpers/accessibility.dart'; +import '../../../../../helpers/pump_app.dart'; + +void main() { + group('SampleItemDetailsPage', () { + testWidgets('should display more information', (tester) async { + const widget = SampleItemDetailsPage(); + + // Pump the widget to build it + // Pumping the widget will run the build method and return the widget + // that was built + await tester.pumpApp(widget); + + // Verify that the widget displays the expected information + expect(find.text('More Information Here'), findsOneWidget); + }); + }); + + testAccessibilityGuidelines(const SampleItemDetailsPage()); +} diff --git a/packages/app/test/src/features/sample/presentation/items/sample_item_list_page_test.dart b/packages/app/test/src/features/sample/presentation/items/sample_item_list_page_test.dart new file mode 100644 index 0000000..01b737f --- /dev/null +++ b/packages/app/test/src/features/sample/presentation/items/sample_item_list_page_test.dart @@ -0,0 +1,24 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:our_democracy/src/features/sample/presentation/items/sample_items_list_page.dart'; + +import '../../../../../helpers/accessibility.dart'; +import '../../../../../helpers/pump_app.dart'; + +void main() { + group('SampleItemListPage', () { + testWidgets('should display information for a single page', (tester) async { + const widget = SampleItemsListPage(); + + // Pump the widget to build it + // Pumping the widget will run the build method and return the widget + // that was built + await tester.pumpApp(const Material(child: widget)); + + // Verify that the widget displays the expected information + expect(find.text('SampleItem 1'), findsOneWidget); + }); + + testAccessibilityGuidelines(const Material(child: SampleItemsListPage())); + }); +} diff --git a/packages/app/test/src/features/settings/application/settings_service_test.dart b/packages/app/test/src/features/settings/application/settings_service_test.dart new file mode 100644 index 0000000..40efe16 --- /dev/null +++ b/packages/app/test/src/features/settings/application/settings_service_test.dart @@ -0,0 +1,49 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:our_democracy/src/features/settings/application/settings_service.dart'; +import 'package:our_democracy/src/features/settings/data/preferences_repository.dart'; + +import '../../../../helpers/mocks.dart'; + +void main() { + group('SettingsService', () { + test('should update the theme mode', () async { + final mockSharedPreferences = MockSharedPreferences(); + when(() => mockSharedPreferences.setString(any(), any())) + .thenAnswer((_) async => true); + + final container = ProviderContainer( + overrides: [ + sharedPreferencesProvider.overrideWithValue(mockSharedPreferences), + initialSettingsProvider.overrideWithValue(defaultSettings), + ], + ); + + final model = container.read(settingsServiceProvider); + final notifier = container.read(settingsServiceProvider.notifier); + + expect(model.themeMode, ThemeMode.system); + + await notifier.updateThemeMode(ThemeMode.light); + + final newModel = container.read(settingsServiceProvider); + expect(newModel.themeMode, ThemeMode.light); + }); + }); + + group('initialSettings', () { + test('should throw an error if initialSettings are not provided', () { + // Arrange + final container = ProviderContainer(); + + // Assert + expect( + // Act + () => container.read(initialSettingsProvider), + throwsA(isA()), + ); + }); + }); +} diff --git a/packages/app/test/src/features/settings/data/preferences_repository_test.dart b/packages/app/test/src/features/settings/data/preferences_repository_test.dart new file mode 100644 index 0000000..ffd778c --- /dev/null +++ b/packages/app/test/src/features/settings/data/preferences_repository_test.dart @@ -0,0 +1,68 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:our_democracy/src/features/settings/application/settings_service.dart'; +import 'package:our_democracy/src/features/settings/data/preferences_repository.dart'; + +import '../../../../helpers/mocks.dart'; + +void main() { + group('PreferencesRepository', () { + test('should update the theme mode', () async { + // Arrange + final mockSharedPreferences = MockSharedPreferences(); + + final container = ProviderContainer( + overrides: [ + sharedPreferencesProvider.overrideWithValue(mockSharedPreferences), + initialSettingsProvider.overrideWithValue(defaultSettings), + ], + ); + + // Act + final repo = container.read(preferencesRepositoryProvider); + final settings = await repo.load(); + + // Assert + expect(settings.themeMode, ThemeMode.system); + }); + + test('should decode the theme mode', () async { + // Arrange + final mockSharedPreferences = MockSharedPreferences(); + + when(() => mockSharedPreferences.getString('prefs')).thenReturn( + '{"themeMode":"dark"}', + ); + + final container = ProviderContainer( + overrides: [ + sharedPreferencesProvider.overrideWithValue(mockSharedPreferences), + initialSettingsProvider.overrideWithValue(defaultSettings), + ], + ); + + // Act + final repo = container.read(preferencesRepositoryProvider); + final settings = await repo.load(); + + // Assert + expect(settings.themeMode, ThemeMode.dark); + }); + }); + + group('sharedPreferences', () { + test('should throw an error if SharedPreferences is not provided', () { + // Arrange + final container = ProviderContainer(); + + // Act + PreferencesRepository call() => + container.read(preferencesRepositoryProvider); + + // Assert + expect(call, throwsA(isA())); + }); + }); +} diff --git a/packages/app/test/src/features/settings/domain/settings_model_test.dart b/packages/app/test/src/features/settings/domain/settings_model_test.dart new file mode 100644 index 0000000..af72f2e --- /dev/null +++ b/packages/app/test/src/features/settings/domain/settings_model_test.dart @@ -0,0 +1,30 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:our_democracy/src/features/settings/domain/settings_model.dart'; + +void main() { + group('SettingsModel', () { + test('should be constant and support value equality', () { + // Arrange + const model = SettingsModel(themeMode: ThemeMode.system); + + // Act + final newModel = model.copyWith(themeMode: ThemeMode.system); + + // Assert + expect(newModel, equals(model)); + }); + + test('should support serialization to and from JSON', () { + // Arrange + const model = SettingsModel(themeMode: ThemeMode.system); + + // Act + final json = model.toJson(); + final newModel = SettingsModel.fromJson(json); + + // Assert + expect(newModel, equals(model)); + }); + }); +} diff --git a/packages/app/test/src/features/settings/presentation/preferences/settings_page_test.dart b/packages/app/test/src/features/settings/presentation/preferences/settings_page_test.dart new file mode 100644 index 0000000..fd73fe7 --- /dev/null +++ b/packages/app/test/src/features/settings/presentation/preferences/settings_page_test.dart @@ -0,0 +1,63 @@ +import 'dart:convert'; + +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:our_democracy/src/features/settings/application/settings_service.dart'; +import 'package:our_democracy/src/features/settings/data/preferences_repository.dart'; +import 'package:our_democracy/src/features/settings/domain/settings_model.dart'; +import 'package:our_democracy/src/features/settings/presentation/preferences/settings_page.dart'; + +import '../../../../../helpers/accessibility.dart'; +import '../../../../../helpers/mocks.dart'; +import '../../../../../helpers/pump_app.dart'; + +void main() { + group('SettingsPage', () { + testWidgets('changing the dropdown value should save the theme', + (tester) async { + final mockSharedPreferences = MockSharedPreferences(); + + final darkMode = json.encode( + const SettingsModel( + themeMode: ThemeMode.dark, + ).toJson(), + ); + + when(() => mockSharedPreferences.setString('prefs', darkMode)).thenAnswer( + (_) => Future.value(true), + ); + + when(() => mockSharedPreferences.getString('prefs')).thenReturn( + darkMode, + ); + + await tester.pumpApp( + const Material(child: SettingsPage()), + overrides: [ + sharedPreferencesProvider.overrideWithValue(mockSharedPreferences), + initialSettingsProvider.overrideWithValue(defaultSettings), + ], + ); + + await tester.tap(find.byType(DropdownButton)); + await tester.pumpAndSettle(); + + await tester.tap(find.byKey(const ValueKey(ThemeMode.dark))); + await tester.pumpAndSettle(); + + expect(find.text('Dark Theme'), findsOneWidget); + + verify(() => mockSharedPreferences.setString('prefs', darkMode)) + .called(1); + }); + + testAccessibilityGuidelines( + const Material(child: SettingsPage()), + overrides: [ + sharedPreferencesProvider.overrideWithValue(MockSharedPreferences()), + initialSettingsProvider.overrideWithValue(defaultSettings), + ], + ); + }); +} diff --git a/packages/app/test/src/l10n/l10n_test.dart b/packages/app/test/src/l10n/l10n_test.dart new file mode 100644 index 0000000..8625090 --- /dev/null +++ b/packages/app/test/src/l10n/l10n_test.dart @@ -0,0 +1,30 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:our_democracy/src/l10n/l10n.dart'; + +import '../../helpers/pump_app.dart'; + +void main() { + group('l10n', () { + testWidgets('Should just be a shorthand.', (widgetTester) async { + // Pump the widget to build it + // Pumping the widget will run the build method and return the widget + // that was built + await widgetTester.pumpApp(const _Widget()); + }); + }); +} + +class _Widget extends StatelessWidget { + const _Widget(); + + @override + Widget build(BuildContext context) { + assert( + context.l10n == AppLocalizations.of(context), + 'The context.l10n should be equal to AppLocalizations.of(context)', + ); + + return Container(); + } +} diff --git a/packages/app/untranslated.json b/packages/app/untranslated.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/packages/app/untranslated.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/packages/app/web/favicon.png b/packages/app/web/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..409ebdee904459457aaa84a88093a24ef48dab8f GIT binary patch literal 542 zcmV+(0^$9MP)q+1OzE5Daipqz{tqR!0_`ugTRRl1_6ciH!#g`16Y8dsi~!7%dFk+&1o=yAW;wAD4*8w|7j8ykh@R!rU<}pg7eGl!>6KnyU%!9)N~~rK g14z}3VE{P*08cx`$lS!KzyJUM07*qoM6N<$f`s-CvH$=8 literal 0 HcmV?d00001 diff --git a/packages/app/web/icons/Icon-192.png b/packages/app/web/icons/Icon-192.png new file mode 100644 index 0000000000000000000000000000000000000000..7c1128fc21ec0741c2040d8b91d5cfe1d59c7bc4 GIT binary patch literal 8854 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 literal 0 HcmV?d00001 diff --git a/packages/app/web/icons/Icon-512.png b/packages/app/web/icons/Icon-512.png new file mode 100644 index 0000000000000000000000000000000000000000..8bf4b3f6918bf6ba4ba2f3daa50686c1cb70da0a GIT binary patch literal 35633 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

hq+1qKJz_YDFL}{xQT<4nLy#?JoBrP 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 N4Nq4;mvv4FO#n4v(i8vy literal 0 HcmV?d00001 diff --git a/packages/app/web/icons/Icon-maskable-192.png b/packages/app/web/icons/Icon-maskable-192.png new file mode 100644 index 0000000000000000000000000000000000000000..7c1128fc21ec0741c2040d8b91d5cfe1d59c7bc4 GIT binary patch literal 8854 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 literal 0 HcmV?d00001 diff --git a/packages/app/web/icons/Icon-maskable-512.png b/packages/app/web/icons/Icon-maskable-512.png new file mode 100644 index 0000000000000000000000000000000000000000..8bf4b3f6918bf6ba4ba2f3daa50686c1cb70da0a GIT binary patch literal 35633 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

hq+1qKJz_YDFL}{xQT<4nLy#?JoBrP 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 N4Nq4;mvv4FO#n4v(i8vy literal 0 HcmV?d00001 diff --git a/packages/app/web/index.html b/packages/app/web/index.html new file mode 100644 index 0000000..63e6b6f --- /dev/null +++ b/packages/app/web/index.html @@ -0,0 +1,176 @@ + + + + + + + + Our Democracy + + + + + + + + + + + + + + + + + + + + + + + + +

+ + + + diff --git a/packages/app/web/manifest.json b/packages/app/web/manifest.json new file mode 100644 index 0000000..6312575 --- /dev/null +++ b/packages/app/web/manifest.json @@ -0,0 +1,35 @@ +{ + "name": "Our Democracy", + "short_name": "Our Democracy", + "start_url": ".", + "display": "standalone", + "background_color": "#0a9f06", + "theme_color": "#0a9f06", + "description": "", + "orientation": "portrait-primary", + "prefer_related_applications": false, + "icons": [ + { + "src": "icons/Icon-192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "icons/Icon-512.png", + "sizes": "512x512", + "type": "image/png" + }, + { + "src": "icons/Icon-maskable-192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "icons/Icon-maskable-512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + } + ] +} diff --git a/packages/app/web/splash/img/dark-1x.png b/packages/app/web/splash/img/dark-1x.png new file mode 100644 index 0000000000000000000000000000000000000000..5cdb723a23c808f8f6d20ffac81191a725b9a60f GIT binary patch literal 5128 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 literal 0 HcmV?d00001 diff --git a/packages/app/web/splash/img/dark-2x.png b/packages/app/web/splash/img/dark-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..757c555c3a1fb58a79627678be3048ffd4d6fb70 GIT binary patch literal 10015 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 LOQBl+eaQa-XF=y= literal 0 HcmV?d00001 diff --git a/packages/app/web/splash/img/dark-3x.png b/packages/app/web/splash/img/dark-3x.png new file mode 100644 index 0000000000000000000000000000000000000000..68d99eea1eb2d21466f229b510cbf003d73c3dfe GIT binary patch literal 17375 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%0DOved?z5i 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 literal 0 HcmV?d00001 diff --git a/packages/app/web/splash/img/light-1x.png b/packages/app/web/splash/img/light-1x.png new file mode 100644 index 0000000000000000000000000000000000000000..5cdb723a23c808f8f6d20ffac81191a725b9a60f GIT binary patch literal 5128 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 literal 0 HcmV?d00001 diff --git a/packages/app/web/splash/img/light-2x.png b/packages/app/web/splash/img/light-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..757c555c3a1fb58a79627678be3048ffd4d6fb70 GIT binary patch literal 10015 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 LOQBl+eaQa-XF=y= literal 0 HcmV?d00001 diff --git a/packages/app/web/splash/img/light-3x.png b/packages/app/web/splash/img/light-3x.png new file mode 100644 index 0000000000000000000000000000000000000000..68d99eea1eb2d21466f229b510cbf003d73c3dfe GIT binary patch literal 17375 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%0DOved?z5i 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 literal 0 HcmV?d00001 diff --git a/packages/app/windows/.gitignore b/packages/app/windows/.gitignore new file mode 100644 index 0000000..d492d0d --- /dev/null +++ b/packages/app/windows/.gitignore @@ -0,0 +1,17 @@ +flutter/ephemeral/ + +# Visual Studio user-specific files. +*.suo +*.user +*.userosscache +*.sln.docstates + +# Visual Studio build-related files. +x64/ +x86/ + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ diff --git a/packages/app/windows/CMakeLists.txt b/packages/app/windows/CMakeLists.txt new file mode 100644 index 0000000..e83522c --- /dev/null +++ b/packages/app/windows/CMakeLists.txt @@ -0,0 +1,108 @@ +# Project-level configuration. +cmake_minimum_required(VERSION 3.14) +project(our_democracy LANGUAGES CXX) + +# The name of the executable created for the application. Change this to change +# the on-disk name of your application. +set(BINARY_NAME "our_democracy") + +# Explicitly opt in to modern CMake behaviors to avoid warnings with recent +# versions of CMake. +cmake_policy(VERSION 3.14...3.25) + +# Define build configuration option. +get_property(IS_MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) +if(IS_MULTICONFIG) + set(CMAKE_CONFIGURATION_TYPES "Debug;Profile;Release" + CACHE STRING "" FORCE) +else() + if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + set(CMAKE_BUILD_TYPE "Debug" CACHE + STRING "Flutter build mode" FORCE) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS + "Debug" "Profile" "Release") + endif() +endif() +# Define settings for the Profile build mode. +set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}") +set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}") +set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE}") +set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE}") + +# Use Unicode for all projects. +add_definitions(-DUNICODE -D_UNICODE) + +# Compilation settings that should be applied to most targets. +# +# Be cautious about adding new options here, as plugins use this function by +# default. In most cases, you should add new options to specific targets instead +# of modifying this function. +function(APPLY_STANDARD_SETTINGS TARGET) + target_compile_features(${TARGET} PUBLIC cxx_std_17) + target_compile_options(${TARGET} PRIVATE /W4 /WX /wd"4100") + target_compile_options(${TARGET} PRIVATE /EHsc) + target_compile_definitions(${TARGET} PRIVATE "_HAS_EXCEPTIONS=0") + target_compile_definitions(${TARGET} PRIVATE "$<$:_DEBUG>") +endfunction() + +# Flutter library and tool build rules. +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") +add_subdirectory(${FLUTTER_MANAGED_DIR}) + +# Application build; see runner/CMakeLists.txt. +add_subdirectory("runner") + + +# Generated plugin build rules, which manage building the plugins and adding +# them to the application. +include(flutter/generated_plugins.cmake) + + +# === Installation === +# Support files are copied into place next to the executable, so that it can +# run in place. This is done instead of making a separate bundle (as on Linux) +# so that building and running from within Visual Studio will work. +set(BUILD_BUNDLE_DIR "$") +# Make the "install" step default, as it's required to run. +set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD 1) +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) +endif() + +set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") +set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}") + +install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +if(PLUGIN_BUNDLED_LIBRARIES) + install(FILES "${PLUGIN_BUNDLED_LIBRARIES}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endif() + +# Copy the native assets provided by the build.dart from all packages. +set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/windows/") +install(DIRECTORY "${NATIVE_ASSETS_DIR}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +# Fully re-copy the assets directory on each build to avoid having stale files +# from a previous install. +set(FLUTTER_ASSET_DIR_NAME "flutter_assets") +install(CODE " + file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") + " COMPONENT Runtime) +install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" + DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) + +# Install the AOT library on non-Debug builds only. +install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + CONFIGURATIONS Profile;Release + COMPONENT Runtime) diff --git a/packages/app/windows/flutter/CMakeLists.txt b/packages/app/windows/flutter/CMakeLists.txt new file mode 100644 index 0000000..903f489 --- /dev/null +++ b/packages/app/windows/flutter/CMakeLists.txt @@ -0,0 +1,109 @@ +# This file controls Flutter-level build steps. It should not be edited. +cmake_minimum_required(VERSION 3.14) + +set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") + +# Configuration provided via flutter tool. +include(${EPHEMERAL_DIR}/generated_config.cmake) + +# TODO: Move the rest of this into files in ephemeral. See +# https://github.com/flutter/flutter/issues/57146. +set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper") + +# Set fallback configurations for older versions of the flutter tool. +if (NOT DEFINED FLUTTER_TARGET_PLATFORM) + set(FLUTTER_TARGET_PLATFORM "windows-x64") +endif() + +# === Flutter Library === +set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows.dll") + +# Published to parent scope for install step. +set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) +set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) +set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) +set(AOT_LIBRARY "${PROJECT_DIR}/build/windows/app.so" PARENT_SCOPE) + +list(APPEND FLUTTER_LIBRARY_HEADERS + "flutter_export.h" + "flutter_windows.h" + "flutter_messenger.h" + "flutter_plugin_registrar.h" + "flutter_texture_registrar.h" +) +list(TRANSFORM FLUTTER_LIBRARY_HEADERS PREPEND "${EPHEMERAL_DIR}/") +add_library(flutter INTERFACE) +target_include_directories(flutter INTERFACE + "${EPHEMERAL_DIR}" +) +target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}.lib") +add_dependencies(flutter flutter_assemble) + +# === Wrapper === +list(APPEND CPP_WRAPPER_SOURCES_CORE + "core_implementations.cc" + "standard_codec.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_CORE PREPEND "${WRAPPER_ROOT}/") +list(APPEND CPP_WRAPPER_SOURCES_PLUGIN + "plugin_registrar.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_PLUGIN PREPEND "${WRAPPER_ROOT}/") +list(APPEND CPP_WRAPPER_SOURCES_APP + "flutter_engine.cc" + "flutter_view_controller.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_APP PREPEND "${WRAPPER_ROOT}/") + +# Wrapper sources needed for a plugin. +add_library(flutter_wrapper_plugin STATIC + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_PLUGIN} +) +apply_standard_settings(flutter_wrapper_plugin) +set_target_properties(flutter_wrapper_plugin PROPERTIES + POSITION_INDEPENDENT_CODE ON) +set_target_properties(flutter_wrapper_plugin PROPERTIES + CXX_VISIBILITY_PRESET hidden) +target_link_libraries(flutter_wrapper_plugin PUBLIC flutter) +target_include_directories(flutter_wrapper_plugin PUBLIC + "${WRAPPER_ROOT}/include" +) +add_dependencies(flutter_wrapper_plugin flutter_assemble) + +# Wrapper sources needed for the runner. +add_library(flutter_wrapper_app STATIC + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_APP} +) +apply_standard_settings(flutter_wrapper_app) +target_link_libraries(flutter_wrapper_app PUBLIC flutter) +target_include_directories(flutter_wrapper_app PUBLIC + "${WRAPPER_ROOT}/include" +) +add_dependencies(flutter_wrapper_app flutter_assemble) + +# === Flutter tool backend === +# _phony_ is a non-existent file to force this command to run every time, +# since currently there's no way to get a full input/output list from the +# flutter tool. +set(PHONY_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/_phony_") +set_source_files_properties("${PHONY_OUTPUT}" PROPERTIES SYMBOLIC TRUE) +add_custom_command( + OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} + ${CPP_WRAPPER_SOURCES_CORE} ${CPP_WRAPPER_SOURCES_PLUGIN} + ${CPP_WRAPPER_SOURCES_APP} + ${PHONY_OUTPUT} + COMMAND ${CMAKE_COMMAND} -E env + ${FLUTTER_TOOL_ENVIRONMENT} + "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat" + ${FLUTTER_TARGET_PLATFORM} $ + VERBATIM +) +add_custom_target(flutter_assemble DEPENDS + "${FLUTTER_LIBRARY}" + ${FLUTTER_LIBRARY_HEADERS} + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_PLUGIN} + ${CPP_WRAPPER_SOURCES_APP} +) diff --git a/packages/app/windows/flutter/generated_plugin_registrant.cc b/packages/app/windows/flutter/generated_plugin_registrant.cc new file mode 100644 index 0000000..8b6d468 --- /dev/null +++ b/packages/app/windows/flutter/generated_plugin_registrant.cc @@ -0,0 +1,11 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#include "generated_plugin_registrant.h" + + +void RegisterPlugins(flutter::PluginRegistry* registry) { +} diff --git a/packages/app/windows/flutter/generated_plugin_registrant.h b/packages/app/windows/flutter/generated_plugin_registrant.h new file mode 100644 index 0000000..dc139d8 --- /dev/null +++ b/packages/app/windows/flutter/generated_plugin_registrant.h @@ -0,0 +1,15 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#ifndef GENERATED_PLUGIN_REGISTRANT_ +#define GENERATED_PLUGIN_REGISTRANT_ + +#include + +// Registers Flutter plugins. +void RegisterPlugins(flutter::PluginRegistry* registry); + +#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/packages/app/windows/flutter/generated_plugins.cmake b/packages/app/windows/flutter/generated_plugins.cmake new file mode 100644 index 0000000..b93c4c3 --- /dev/null +++ b/packages/app/windows/flutter/generated_plugins.cmake @@ -0,0 +1,23 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST +) + +list(APPEND FLUTTER_FFI_PLUGIN_LIST +) + +set(PLUGIN_BUNDLED_LIBRARIES) + +foreach(plugin ${FLUTTER_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin}) + target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) + list(APPEND PLUGIN_BUNDLED_LIBRARIES $) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) +endforeach(plugin) + +foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin}) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) +endforeach(ffi_plugin) diff --git a/packages/app/windows/runner/CMakeLists.txt b/packages/app/windows/runner/CMakeLists.txt new file mode 100644 index 0000000..394917c --- /dev/null +++ b/packages/app/windows/runner/CMakeLists.txt @@ -0,0 +1,40 @@ +cmake_minimum_required(VERSION 3.14) +project(runner LANGUAGES CXX) + +# Define the application target. To change its name, change BINARY_NAME in the +# top-level CMakeLists.txt, not the value here, or `flutter run` will no longer +# work. +# +# Any new source files that you add to the application should be added here. +add_executable(${BINARY_NAME} WIN32 + "flutter_window.cpp" + "main.cpp" + "utils.cpp" + "win32_window.cpp" + "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" + "Runner.rc" + "runner.exe.manifest" +) + +# Apply the standard set of build settings. This can be removed for applications +# that need different build settings. +apply_standard_settings(${BINARY_NAME}) + +# Add preprocessor definitions for the build version. +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION=\"${FLUTTER_VERSION}\"") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MAJOR=${FLUTTER_VERSION_MAJOR}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MINOR=${FLUTTER_VERSION_MINOR}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_PATCH=${FLUTTER_VERSION_PATCH}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_BUILD=${FLUTTER_VERSION_BUILD}") + +# Disable Windows macros that collide with C++ standard library functions. +target_compile_definitions(${BINARY_NAME} PRIVATE "NOMINMAX") + +# Add dependency libraries and include directories. Add any application-specific +# dependencies here. +target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app) +target_link_libraries(${BINARY_NAME} PRIVATE "dwmapi.lib") +target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") + +# Run the Flutter tool portions of the build. This must not be removed. +add_dependencies(${BINARY_NAME} flutter_assemble) diff --git a/packages/app/windows/runner/Runner.rc b/packages/app/windows/runner/Runner.rc new file mode 100644 index 0000000..9e77e62 --- /dev/null +++ b/packages/app/windows/runner/Runner.rc @@ -0,0 +1,121 @@ +// Microsoft Visual C++ generated resource script. +// +#pragma code_page(65001) +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "winres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (United States) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""winres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_APP_ICON ICON "resources\\app_icon.ico" + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +#if defined(FLUTTER_VERSION_MAJOR) && defined(FLUTTER_VERSION_MINOR) && defined(FLUTTER_VERSION_PATCH) && defined(FLUTTER_VERSION_BUILD) +#define VERSION_AS_NUMBER FLUTTER_VERSION_MAJOR,FLUTTER_VERSION_MINOR,FLUTTER_VERSION_PATCH,FLUTTER_VERSION_BUILD +#else +#define VERSION_AS_NUMBER 1,0,0,0 +#endif + +#if defined(FLUTTER_VERSION) +#define VERSION_AS_STRING FLUTTER_VERSION +#else +#define VERSION_AS_STRING "1.0.0" +#endif + +VS_VERSION_INFO VERSIONINFO + FILEVERSION VERSION_AS_NUMBER + PRODUCTVERSION VERSION_AS_NUMBER + FILEFLAGSMASK VS_FFI_FILEFLAGSMASK +#ifdef _DEBUG + FILEFLAGS VS_FF_DEBUG +#else + FILEFLAGS 0x0L +#endif + FILEOS VOS__WINDOWS32 + FILETYPE VFT_APP + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904e4" + BEGIN + VALUE "CompanyName", "PHS-TSA" "\0" + VALUE "FileDescription", "Our Democracy" "\0" + VALUE "FileVersion", VERSION_AS_STRING "\0" + VALUE "InternalName", "Our Democracy" "\0" + VALUE "LegalCopyright", "Copyright (C) 2024 PHS-TSA. All rights reserved." "\0" + VALUE "OriginalFilename", "our_democracy.exe" "\0" + VALUE "ProductName", "Our Democracy" "\0" + VALUE "ProductVersion", VERSION_AS_STRING "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1252 + END +END + +#endif // English (United States) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED diff --git a/packages/app/windows/runner/flutter_window.cpp b/packages/app/windows/runner/flutter_window.cpp new file mode 100644 index 0000000..955ee30 --- /dev/null +++ b/packages/app/windows/runner/flutter_window.cpp @@ -0,0 +1,71 @@ +#include "flutter_window.h" + +#include + +#include "flutter/generated_plugin_registrant.h" + +FlutterWindow::FlutterWindow(const flutter::DartProject& project) + : project_(project) {} + +FlutterWindow::~FlutterWindow() {} + +bool FlutterWindow::OnCreate() { + if (!Win32Window::OnCreate()) { + return false; + } + + RECT frame = GetClientArea(); + + // The size here must match the window dimensions to avoid unnecessary surface + // creation / destruction in the startup path. + flutter_controller_ = std::make_unique( + frame.right - frame.left, frame.bottom - frame.top, project_); + // Ensure that basic setup of the controller was successful. + if (!flutter_controller_->engine() || !flutter_controller_->view()) { + return false; + } + RegisterPlugins(flutter_controller_->engine()); + SetChildContent(flutter_controller_->view()->GetNativeWindow()); + + flutter_controller_->engine()->SetNextFrameCallback([&]() { + this->Show(); + }); + + // Flutter can complete the first frame before the "show window" callback is + // registered. The following call ensures a frame is pending to ensure the + // window is shown. It is a no-op if the first frame hasn't completed yet. + flutter_controller_->ForceRedraw(); + + return true; +} + +void FlutterWindow::OnDestroy() { + if (flutter_controller_) { + flutter_controller_ = nullptr; + } + + Win32Window::OnDestroy(); +} + +LRESULT +FlutterWindow::MessageHandler(HWND hwnd, UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + // Give Flutter, including plugins, an opportunity to handle window messages. + if (flutter_controller_) { + std::optional result = + flutter_controller_->HandleTopLevelWindowProc(hwnd, message, wparam, + lparam); + if (result) { + return *result; + } + } + + switch (message) { + case WM_FONTCHANGE: + flutter_controller_->engine()->ReloadSystemFonts(); + break; + } + + return Win32Window::MessageHandler(hwnd, message, wparam, lparam); +} diff --git a/packages/app/windows/runner/flutter_window.h b/packages/app/windows/runner/flutter_window.h new file mode 100644 index 0000000..6da0652 --- /dev/null +++ b/packages/app/windows/runner/flutter_window.h @@ -0,0 +1,33 @@ +#ifndef RUNNER_FLUTTER_WINDOW_H_ +#define RUNNER_FLUTTER_WINDOW_H_ + +#include +#include + +#include + +#include "win32_window.h" + +// A window that does nothing but host a Flutter view. +class FlutterWindow : public Win32Window { + public: + // Creates a new FlutterWindow hosting a Flutter view running |project|. + explicit FlutterWindow(const flutter::DartProject& project); + virtual ~FlutterWindow(); + + protected: + // Win32Window: + bool OnCreate() override; + void OnDestroy() override; + LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam, + LPARAM const lparam) noexcept override; + + private: + // The project to run. + flutter::DartProject project_; + + // The Flutter instance hosted by this window. + std::unique_ptr flutter_controller_; +}; + +#endif // RUNNER_FLUTTER_WINDOW_H_ diff --git a/packages/app/windows/runner/main.cpp b/packages/app/windows/runner/main.cpp new file mode 100644 index 0000000..59ef211 --- /dev/null +++ b/packages/app/windows/runner/main.cpp @@ -0,0 +1,43 @@ +#include +#include +#include + +#include "flutter_window.h" +#include "utils.h" + +int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, + _In_ wchar_t *command_line, _In_ int show_command) { + // Attach to console when present (e.g., 'flutter run') or create a + // new console when running with a debugger. + if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent()) { + CreateAndAttachConsole(); + } + + // Initialize COM, so that it is available for use in the library and/or + // plugins. + ::CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED); + + flutter::DartProject project(L"data"); + + std::vector command_line_arguments = + GetCommandLineArguments(); + + project.set_dart_entrypoint_arguments(std::move(command_line_arguments)); + + FlutterWindow window(project); + Win32Window::Point origin(10, 10); + Win32Window::Size size(1280, 720); + if (!window.Create(L"Our Democracy", origin, size)) { + return EXIT_FAILURE; + } + window.SetQuitOnClose(true); + + ::MSG msg; + while (::GetMessage(&msg, nullptr, 0, 0)) { + ::TranslateMessage(&msg); + ::DispatchMessage(&msg); + } + + ::CoUninitialize(); + return EXIT_SUCCESS; +} diff --git a/packages/app/windows/runner/resource.h b/packages/app/windows/runner/resource.h new file mode 100644 index 0000000..d7b448f --- /dev/null +++ b/packages/app/windows/runner/resource.h @@ -0,0 +1,16 @@ +// +// Microsoft Visual C++ generated include file. +// Used by Runner.rc +// +#define IDI_APP_ICON 101 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 102 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/packages/app/windows/runner/resources/app_icon.ico b/packages/app/windows/runner/resources/app_icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a02958739df450c924562c274c4796ad0cf1a629 GIT binary patch literal 2003 zcmV;^2Q2si0096205C8B0000W0KEqQ02TlM0EtjeM-2)Z3IG5A4M|8uQUCw|FaQ7m zFbD7aW}0NoG)jg>Si}a}98>nl~`lnl~`l znl~`ldSDG~U%R$?z-sOPysxi5T)%JB07X&ql9G}q*Q{Cd#4@DJ%*@4VwVFad@m8yK zyuH1>wYqxSww+~VfBy0E{O!Eg%h?!a!%>szSg1L_5d*ooxr?@J+47sJs;UgF!MQ2=NWK09pj^R`%t*KXVpMTN=m|x9XsCMym|A_R4NrI zkw`*!_Icq#-$l`P@*jC_lH;Id@k7HkzyED%@2y*d;ntWn1BHc!%MAv@!Mwb@?6BZi z2p&$p3fVU8{q19>^ptvS27K?p!badEk zHrw#;MMXuA)z#G@NuoRw=SRf59im~h2pAT2FTyJydyzpr1vz6ynmC~_zSgbmUR z<9{k4$6$x8ZzA}Q1Mm{k4-Zr};1QZsfJu{tT)Sdp>EY&2qQ3`pI^D9`+SFJAv zf=?^ZUj#hQ`*Y=Pcpl)yD*#sy2EqosU&BvJ881fB#6!`_jhkXJum}k~fvDlXo>VFZ zhGFkEfWzk0)&RUrgV;R)l}-N#kA?3EQp3XPf{Ldit`+Q$qt~W}IhOa4apIU9NTd>A zXcm-8#U1cyr%$~BFz{($=P|tg5Q>-FyT;=%R3&*qYe~t;%YHPs-_&(kuz`3giTcx< zwMN&tL_}u9f*%0zc<#sp|ITChPY^uXc^o!)=YzmcOT7SKtk(ytb!BBy8DLqO(Wnx& z&T$XKr}L3dlMs?f#Aq%SNEuq91;Gz~8i1D&U&VY**zt0e6r>6sR_V&i4F~@EzF-3` z+QFRbIoY&EQSvO$JAx;o01*hBannGa`X#_n{q3C>0Pi195Fk%B^pE93qg$$HeasBcJ7L;0u`q{_{~FJQjZPR0@Fox*~DK!|PU`=|0jX z*g$hfgK_IiyM0cS2g(=?h`bCa?Wa+kFG0r&N?KjDVEAdNlh92s@j~%;pWYOefvY2Z z*Uh(vd*s^Wd{mN$yM06IQil;%Xc*uV3qg`uj#i3`dJd9A$0^0Z;{_G#(buU4;Y0UisNE($FJ*$bDg%t*;e9Wh_I zIkQhl11;x_#vg8Y{a5ZO5fI7IEljCZ@VATY8SiJD|1tJ!SfkQ7S_;w8@Y|i8H_>Wwc=7DjF06lbn zZ6}uEGKmKvcoKmy!@7WPw|GrU4A@cDrH9!hwC1 z0QUq5JdM{7u~T;I7|YSLjEIwK)QKsWvv7IIQ>08TMO+?12C&XuJb4`5gq0la1Bo&w ze!p?r&4T(4a0XSY)=|{1$bq#fVCY8w*@hE_k56|UX&Sh8p@(K&{PcJ^sg&kr7c570 zQEB>utTfa0-eJK8(9zZS`j7qqE~^CMVl)tV;qm&bQ~Y_#>V%uUXvc3+aIUAheqZgb zT_{}7;6B0RW}KexzSb_>g8d%WK+j;udAoCRRB0vC5*CIpE53Rw^S3+UaSIf84A>_* zxY?}&hmD?i=fl@tt2?sy--31_jKUh=c@LcK`r^=r#2>sItgP^Q13Sw&eL&kJz&XXh zvr_Q#7#t-b;RQm@`#fGAJe)&x<+zITQNx2hWh?%-TnB9 z%@n$XGIO=18+^2a>K-}ppE1Y%gBN7LI%T%?Up;@OAR)ilG3kJ@ixik|jGK0U_|so} z(X!tdX*@nPQ2XHi;NC4kwQ|Ro$Br*u@@VnRZVfb^Jh1PN@4fPd%`xGgEvRTD$Uyt~ z#>N+)sebEy!>;ZB_-yApvkeuE1Q|dVS{nl2viGyM-<@rsXeG!1x=gqS5gzM-{Rf9o l%^R3&%^R3&%^R3&{SVj}ARsowQJ4S#002ovPDHLkV1oVJ+VTJZ literal 0 HcmV?d00001 diff --git a/packages/app/windows/runner/runner.exe.manifest b/packages/app/windows/runner/runner.exe.manifest new file mode 100644 index 0000000..a42ea76 --- /dev/null +++ b/packages/app/windows/runner/runner.exe.manifest @@ -0,0 +1,20 @@ + + + + + PerMonitorV2 + + + + + + + + + + + + + + + diff --git a/packages/app/windows/runner/utils.cpp b/packages/app/windows/runner/utils.cpp new file mode 100644 index 0000000..b2b0873 --- /dev/null +++ b/packages/app/windows/runner/utils.cpp @@ -0,0 +1,65 @@ +#include "utils.h" + +#include +#include +#include +#include + +#include + +void CreateAndAttachConsole() { + if (::AllocConsole()) { + FILE *unused; + if (freopen_s(&unused, "CONOUT$", "w", stdout)) { + _dup2(_fileno(stdout), 1); + } + if (freopen_s(&unused, "CONOUT$", "w", stderr)) { + _dup2(_fileno(stdout), 2); + } + std::ios::sync_with_stdio(); + FlutterDesktopResyncOutputStreams(); + } +} + +std::vector GetCommandLineArguments() { + // Convert the UTF-16 command line arguments to UTF-8 for the Engine to use. + int argc; + wchar_t** argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc); + if (argv == nullptr) { + return std::vector(); + } + + std::vector command_line_arguments; + + // Skip the first argument as it's the binary name. + for (int i = 1; i < argc; i++) { + command_line_arguments.push_back(Utf8FromUtf16(argv[i])); + } + + ::LocalFree(argv); + + return command_line_arguments; +} + +std::string Utf8FromUtf16(const wchar_t* utf16_string) { + if (utf16_string == nullptr) { + return std::string(); + } + int target_length = ::WideCharToMultiByte( + CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, + -1, nullptr, 0, nullptr, nullptr) + -1; // remove the trailing null character + int input_length = (int)wcslen(utf16_string); + std::string utf8_string; + if (target_length <= 0 || target_length > utf8_string.max_size()) { + return utf8_string; + } + utf8_string.resize(target_length); + int converted_length = ::WideCharToMultiByte( + CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, + input_length, utf8_string.data(), target_length, nullptr, nullptr); + if (converted_length == 0) { + return std::string(); + } + return utf8_string; +} diff --git a/packages/app/windows/runner/utils.h b/packages/app/windows/runner/utils.h new file mode 100644 index 0000000..3879d54 --- /dev/null +++ b/packages/app/windows/runner/utils.h @@ -0,0 +1,19 @@ +#ifndef RUNNER_UTILS_H_ +#define RUNNER_UTILS_H_ + +#include +#include + +// Creates a console for the process, and redirects stdout and stderr to +// it for both the runner and the Flutter library. +void CreateAndAttachConsole(); + +// Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string +// encoded in UTF-8. Returns an empty std::string on failure. +std::string Utf8FromUtf16(const wchar_t* utf16_string); + +// Gets the command line arguments passed in as a std::vector, +// encoded in UTF-8. Returns an empty std::vector on failure. +std::vector GetCommandLineArguments(); + +#endif // RUNNER_UTILS_H_ diff --git a/packages/app/windows/runner/win32_window.cpp b/packages/app/windows/runner/win32_window.cpp new file mode 100644 index 0000000..60608d0 --- /dev/null +++ b/packages/app/windows/runner/win32_window.cpp @@ -0,0 +1,288 @@ +#include "win32_window.h" + +#include +#include + +#include "resource.h" + +namespace { + +/// Window attribute that enables dark mode window decorations. +/// +/// Redefined in case the developer's machine has a Windows SDK older than +/// version 10.0.22000.0. +/// See: https://docs.microsoft.com/windows/win32/api/dwmapi/ne-dwmapi-dwmwindowattribute +#ifndef DWMWA_USE_IMMERSIVE_DARK_MODE +#define DWMWA_USE_IMMERSIVE_DARK_MODE 20 +#endif + +constexpr const wchar_t kWindowClassName[] = L"FLUTTER_RUNNER_WIN32_WINDOW"; + +/// Registry key for app theme preference. +/// +/// A value of 0 indicates apps should use dark mode. A non-zero or missing +/// value indicates apps should use light mode. +constexpr const wchar_t kGetPreferredBrightnessRegKey[] = + L"Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize"; +constexpr const wchar_t kGetPreferredBrightnessRegValue[] = L"AppsUseLightTheme"; + +// The number of Win32Window objects that currently exist. +static int g_active_window_count = 0; + +using EnableNonClientDpiScaling = BOOL __stdcall(HWND hwnd); + +// Scale helper to convert logical scaler values to physical using passed in +// scale factor +int Scale(int source, double scale_factor) { + return static_cast(source * scale_factor); +} + +// Dynamically loads the |EnableNonClientDpiScaling| from the User32 module. +// This API is only needed for PerMonitor V1 awareness mode. +void EnableFullDpiSupportIfAvailable(HWND hwnd) { + HMODULE user32_module = LoadLibraryA("User32.dll"); + if (!user32_module) { + return; + } + auto enable_non_client_dpi_scaling = + reinterpret_cast( + GetProcAddress(user32_module, "EnableNonClientDpiScaling")); + if (enable_non_client_dpi_scaling != nullptr) { + enable_non_client_dpi_scaling(hwnd); + } + FreeLibrary(user32_module); +} + +} // namespace + +// Manages the Win32Window's window class registration. +class WindowClassRegistrar { + public: + ~WindowClassRegistrar() = default; + + // Returns the singleton registrar instance. + static WindowClassRegistrar* GetInstance() { + if (!instance_) { + instance_ = new WindowClassRegistrar(); + } + return instance_; + } + + // Returns the name of the window class, registering the class if it hasn't + // previously been registered. + const wchar_t* GetWindowClass(); + + // Unregisters the window class. Should only be called if there are no + // instances of the window. + void UnregisterWindowClass(); + + private: + WindowClassRegistrar() = default; + + static WindowClassRegistrar* instance_; + + bool class_registered_ = false; +}; + +WindowClassRegistrar* WindowClassRegistrar::instance_ = nullptr; + +const wchar_t* WindowClassRegistrar::GetWindowClass() { + if (!class_registered_) { + WNDCLASS window_class{}; + window_class.hCursor = LoadCursor(nullptr, IDC_ARROW); + window_class.lpszClassName = kWindowClassName; + window_class.style = CS_HREDRAW | CS_VREDRAW; + window_class.cbClsExtra = 0; + window_class.cbWndExtra = 0; + window_class.hInstance = GetModuleHandle(nullptr); + window_class.hIcon = + LoadIcon(window_class.hInstance, MAKEINTRESOURCE(IDI_APP_ICON)); + window_class.hbrBackground = 0; + window_class.lpszMenuName = nullptr; + window_class.lpfnWndProc = Win32Window::WndProc; + RegisterClass(&window_class); + class_registered_ = true; + } + return kWindowClassName; +} + +void WindowClassRegistrar::UnregisterWindowClass() { + UnregisterClass(kWindowClassName, nullptr); + class_registered_ = false; +} + +Win32Window::Win32Window() { + ++g_active_window_count; +} + +Win32Window::~Win32Window() { + --g_active_window_count; + Destroy(); +} + +bool Win32Window::Create(const std::wstring& title, + const Point& origin, + const Size& size) { + Destroy(); + + const wchar_t* window_class = + WindowClassRegistrar::GetInstance()->GetWindowClass(); + + const POINT target_point = {static_cast(origin.x), + static_cast(origin.y)}; + HMONITOR monitor = MonitorFromPoint(target_point, MONITOR_DEFAULTTONEAREST); + UINT dpi = FlutterDesktopGetDpiForMonitor(monitor); + double scale_factor = dpi / 96.0; + + HWND window = CreateWindow( + window_class, title.c_str(), WS_OVERLAPPEDWINDOW, + Scale(origin.x, scale_factor), Scale(origin.y, scale_factor), + Scale(size.width, scale_factor), Scale(size.height, scale_factor), + nullptr, nullptr, GetModuleHandle(nullptr), this); + + if (!window) { + return false; + } + + UpdateTheme(window); + + return OnCreate(); +} + +bool Win32Window::Show() { + return ShowWindow(window_handle_, SW_SHOWNORMAL); +} + +// static +LRESULT CALLBACK Win32Window::WndProc(HWND const window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + if (message == WM_NCCREATE) { + auto window_struct = reinterpret_cast(lparam); + SetWindowLongPtr(window, GWLP_USERDATA, + reinterpret_cast(window_struct->lpCreateParams)); + + auto that = static_cast(window_struct->lpCreateParams); + EnableFullDpiSupportIfAvailable(window); + that->window_handle_ = window; + } else if (Win32Window* that = GetThisFromHandle(window)) { + return that->MessageHandler(window, message, wparam, lparam); + } + + return DefWindowProc(window, message, wparam, lparam); +} + +LRESULT +Win32Window::MessageHandler(HWND hwnd, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + switch (message) { + case WM_DESTROY: + window_handle_ = nullptr; + Destroy(); + if (quit_on_close_) { + PostQuitMessage(0); + } + return 0; + + case WM_DPICHANGED: { + auto newRectSize = reinterpret_cast(lparam); + LONG newWidth = newRectSize->right - newRectSize->left; + LONG newHeight = newRectSize->bottom - newRectSize->top; + + SetWindowPos(hwnd, nullptr, newRectSize->left, newRectSize->top, newWidth, + newHeight, SWP_NOZORDER | SWP_NOACTIVATE); + + return 0; + } + case WM_SIZE: { + RECT rect = GetClientArea(); + if (child_content_ != nullptr) { + // Size and position the child window. + MoveWindow(child_content_, rect.left, rect.top, rect.right - rect.left, + rect.bottom - rect.top, TRUE); + } + return 0; + } + + case WM_ACTIVATE: + if (child_content_ != nullptr) { + SetFocus(child_content_); + } + return 0; + + case WM_DWMCOLORIZATIONCOLORCHANGED: + UpdateTheme(hwnd); + return 0; + } + + return DefWindowProc(window_handle_, message, wparam, lparam); +} + +void Win32Window::Destroy() { + OnDestroy(); + + if (window_handle_) { + DestroyWindow(window_handle_); + window_handle_ = nullptr; + } + if (g_active_window_count == 0) { + WindowClassRegistrar::GetInstance()->UnregisterWindowClass(); + } +} + +Win32Window* Win32Window::GetThisFromHandle(HWND const window) noexcept { + return reinterpret_cast( + GetWindowLongPtr(window, GWLP_USERDATA)); +} + +void Win32Window::SetChildContent(HWND content) { + child_content_ = content; + SetParent(content, window_handle_); + RECT frame = GetClientArea(); + + MoveWindow(content, frame.left, frame.top, frame.right - frame.left, + frame.bottom - frame.top, true); + + SetFocus(child_content_); +} + +RECT Win32Window::GetClientArea() { + RECT frame; + GetClientRect(window_handle_, &frame); + return frame; +} + +HWND Win32Window::GetHandle() { + return window_handle_; +} + +void Win32Window::SetQuitOnClose(bool quit_on_close) { + quit_on_close_ = quit_on_close; +} + +bool Win32Window::OnCreate() { + // No-op; provided for subclasses. + return true; +} + +void Win32Window::OnDestroy() { + // No-op; provided for subclasses. +} + +void Win32Window::UpdateTheme(HWND const window) { + DWORD light_mode; + DWORD light_mode_size = sizeof(light_mode); + LSTATUS result = RegGetValue(HKEY_CURRENT_USER, kGetPreferredBrightnessRegKey, + kGetPreferredBrightnessRegValue, + RRF_RT_REG_DWORD, nullptr, &light_mode, + &light_mode_size); + + if (result == ERROR_SUCCESS) { + BOOL enable_dark_mode = light_mode == 0; + DwmSetWindowAttribute(window, DWMWA_USE_IMMERSIVE_DARK_MODE, + &enable_dark_mode, sizeof(enable_dark_mode)); + } +} diff --git a/packages/app/windows/runner/win32_window.h b/packages/app/windows/runner/win32_window.h new file mode 100644 index 0000000..e901dde --- /dev/null +++ b/packages/app/windows/runner/win32_window.h @@ -0,0 +1,102 @@ +#ifndef RUNNER_WIN32_WINDOW_H_ +#define RUNNER_WIN32_WINDOW_H_ + +#include + +#include +#include +#include + +// A class abstraction for a high DPI-aware Win32 Window. Intended to be +// inherited from by classes that wish to specialize with custom +// rendering and input handling +class Win32Window { + public: + struct Point { + unsigned int x; + unsigned int y; + Point(unsigned int x, unsigned int y) : x(x), y(y) {} + }; + + struct Size { + unsigned int width; + unsigned int height; + Size(unsigned int width, unsigned int height) + : width(width), height(height) {} + }; + + Win32Window(); + virtual ~Win32Window(); + + // Creates a win32 window with |title| that is positioned and sized using + // |origin| and |size|. New windows are created on the default monitor. Window + // sizes are specified to the OS in physical pixels, hence to ensure a + // consistent size this function will scale the inputted width and height as + // as appropriate for the default monitor. The window is invisible until + // |Show| is called. Returns true if the window was created successfully. + bool Create(const std::wstring& title, const Point& origin, const Size& size); + + // Show the current window. Returns true if the window was successfully shown. + bool Show(); + + // Release OS resources associated with window. + void Destroy(); + + // Inserts |content| into the window tree. + void SetChildContent(HWND content); + + // Returns the backing Window handle to enable clients to set icon and other + // window properties. Returns nullptr if the window has been destroyed. + HWND GetHandle(); + + // If true, closing this window will quit the application. + void SetQuitOnClose(bool quit_on_close); + + // Return a RECT representing the bounds of the current client area. + RECT GetClientArea(); + + protected: + // Processes and route salient window messages for mouse handling, + // size change and DPI. Delegates handling of these to member overloads that + // inheriting classes can handle. + virtual LRESULT MessageHandler(HWND window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept; + + // Called when CreateAndShow is called, allowing subclass window-related + // setup. Subclasses should return false if setup fails. + virtual bool OnCreate(); + + // Called when Destroy is called. + virtual void OnDestroy(); + + private: + friend class WindowClassRegistrar; + + // OS callback called by message pump. Handles the WM_NCCREATE message which + // is passed when the non-client area is being created and enables automatic + // non-client DPI scaling so that the non-client area automatically + // responds to changes in DPI. All other messages are handled by + // MessageHandler. + static LRESULT CALLBACK WndProc(HWND const window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept; + + // Retrieves a class instance pointer for |window| + static Win32Window* GetThisFromHandle(HWND const window) noexcept; + + // Update the window frame's theme to match the system theme. + static void UpdateTheme(HWND const window); + + bool quit_on_close_ = false; + + // window handle for top level window. + HWND window_handle_ = nullptr; + + // window handle for hosted content. + HWND child_content_ = nullptr; +}; + +#endif // RUNNER_WIN32_WINDOW_H_ diff --git a/project_words.txt b/project_words.txt new file mode 100644 index 0000000..f11d420 --- /dev/null +++ b/project_words.txt @@ -0,0 +1,80 @@ +!back-end +!cell-phone +!commandline +!compiletime +!data-store +!data-type +!deep-linking +!e-commerce +!end-point +!file-name +!fill-in +!fill-out +!front-end +!Github +!hard-code +!iot +!life-cycle +!live-stream +!log-in +!mac-os +!Macos +!mark-up +!micro-services +!mix-in +!name-space +!o-auth +!pattonville +!plaintext +!plug-in +!screen-shot +!set-up +!standup +!start-up +!sub-tree +!time-frame +!time-out +!time-stamp +!touch-screen +!user-name +!userbase +!walk-through +!web-page +!webpage +!white-space +!wild-card +ansi +ARGB +codegen +cupertino +dartdoc +data +dhttpd +endtemplate +fullscreen +genhtml +Gmail +Instructure +ipad +iphone +l10nization +lcov +linux +lishaduck +localizable +melos +mocktail +Pattonville +pbxproj +POSIX +prefs +psdr3 +pubspec +riverpod +roadmap +unawaited +WCAG +xcassets +xcode +xcodeproj +xcworkspace diff --git a/pubspec.lock b/pubspec.lock new file mode 100644 index 0000000..4eaa6da --- /dev/null +++ b/pubspec.lock @@ -0,0 +1,342 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + ansi_styles: + dependency: transitive + description: + name: ansi_styles + sha256: "9c656cc12b3c27b17dd982b2cc5c0cfdfbdabd7bc8f3ae5e8542d9867b47ce8a" + url: "https://pub.dev" + source: hosted + version: "0.3.2+1" + args: + dependency: transitive + description: + name: args + sha256: "7cf60b9f0cc88203c5a190b4cd62a99feea42759a7fa695010eb5de1c0b2252a" + url: "https://pub.dev" + source: hosted + version: "2.5.0" + async: + dependency: transitive + description: + name: async + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.dev" + source: hosted + version: "2.11.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + charcode: + dependency: transitive + description: + name: charcode + sha256: fb98c0f6d12c920a02ee2d998da788bca066ca5f148492b7085ee23372b12306 + url: "https://pub.dev" + source: hosted + version: "1.3.1" + cli_launcher: + dependency: transitive + description: + name: cli_launcher + sha256: "5e7e0282b79e8642edd6510ee468ae2976d847a0a29b3916e85f5fa1bfe24005" + url: "https://pub.dev" + source: hosted + version: "0.3.1" + cli_util: + dependency: transitive + description: + name: cli_util + sha256: c05b7406fdabc7a49a3929d4af76bcaccbbffcbcdcf185b082e1ae07da323d19 + url: "https://pub.dev" + source: hosted + version: "0.4.1" + clock: + dependency: transitive + description: + name: clock + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" + source: hosted + version: "1.1.1" + collection: + dependency: transitive + description: + name: collection + sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf + url: "https://pub.dev" + source: hosted + version: "1.19.0" + conventional_commit: + dependency: transitive + description: + name: conventional_commit + sha256: dec15ad1118f029c618651a4359eb9135d8b88f761aa24e4016d061cd45948f2 + url: "https://pub.dev" + source: hosted + version: "0.6.0+1" + file: + dependency: transitive + description: + name: file + sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" + url: "https://pub.dev" + source: hosted + version: "7.0.0" + glob: + dependency: transitive + description: + name: glob + sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + graphs: + dependency: transitive + description: + name: graphs + sha256: "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0" + url: "https://pub.dev" + source: hosted + version: "2.3.2" + http: + dependency: transitive + description: + name: http + sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010 + url: "https://pub.dev" + source: hosted + version: "1.2.2" + http_parser: + dependency: transitive + description: + name: http_parser + sha256: "40f592dd352890c3b60fec1b68e786cefb9603e05ff303dbc4dda49b304ecdf4" + url: "https://pub.dev" + source: hosted + version: "4.1.0" + intl: + dependency: transitive + description: + name: intl + sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf + url: "https://pub.dev" + source: hosted + version: "0.19.0" + io: + dependency: transitive + description: + name: io + sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e" + url: "https://pub.dev" + source: hosted + version: "1.0.4" + json_annotation: + dependency: transitive + description: + name: json_annotation + sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1" + url: "https://pub.dev" + source: hosted + version: "4.9.0" + matcher: + dependency: transitive + description: + name: matcher + sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb + url: "https://pub.dev" + source: hosted + version: "0.12.16+1" + melos: + dependency: "direct dev" + description: + name: melos + sha256: a3f06ed871e0348cb99909ad5ddf5f8b53cc61d894c302b5417d2db1ee7ec381 + url: "https://pub.dev" + source: hosted + version: "6.1.0" + meta: + dependency: transitive + description: + name: meta + sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 + url: "https://pub.dev" + source: hosted + version: "1.15.0" + mustache_template: + dependency: transitive + description: + name: mustache_template + sha256: a46e26f91445bfb0b60519be280555b06792460b27b19e2b19ad5b9740df5d1c + url: "https://pub.dev" + source: hosted + version: "2.0.0" + path: + dependency: transitive + description: + name: path + sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" + url: "https://pub.dev" + source: hosted + version: "1.9.0" + platform: + dependency: transitive + description: + name: platform + sha256: "9b71283fc13df574056616011fb138fd3b793ea47cc509c189a6c3fa5f8a1a65" + url: "https://pub.dev" + source: hosted + version: "3.1.5" + pool: + dependency: transitive + description: + name: pool + sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" + url: "https://pub.dev" + source: hosted + version: "1.5.1" + process: + dependency: transitive + description: + name: process + sha256: "21e54fd2faf1b5bdd5102afd25012184a6793927648ea81eea80552ac9405b32" + url: "https://pub.dev" + source: hosted + version: "5.0.2" + prompts: + dependency: transitive + description: + name: prompts + sha256: "3773b845e85a849f01e793c4fc18a45d52d7783b4cb6c0569fad19f9d0a774a1" + url: "https://pub.dev" + source: hosted + version: "2.0.0" + pub_semver: + dependency: transitive + description: + name: pub_semver + sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + pub_updater: + dependency: transitive + description: + name: pub_updater + sha256: "54e8dc865349059ebe7f163d6acce7c89eb958b8047e6d6e80ce93b13d7c9e60" + url: "https://pub.dev" + source: hosted + version: "0.4.0" + pubspec: + dependency: transitive + description: + name: pubspec + sha256: f534a50a2b4d48dc3bc0ec147c8bd7c304280fff23b153f3f11803c4d49d927e + url: "https://pub.dev" + source: hosted + version: "2.3.0" + quiver: + dependency: transitive + description: + name: quiver + sha256: b1c1ac5ce6688d77f65f3375a9abb9319b3cb32486bdc7a1e0fdf004d7ba4e47 + url: "https://pub.dev" + source: hosted + version: "3.2.1" + source_span: + dependency: transitive + description: + name: source_span + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + url: "https://pub.dev" + source: hosted + version: "1.10.0" + stack_trace: + dependency: transitive + description: + name: stack_trace + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" + url: "https://pub.dev" + source: hosted + version: "1.11.1" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + url: "https://pub.dev" + source: hosted + version: "2.1.2" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3" + url: "https://pub.dev" + source: hosted + version: "1.3.0" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" + source: hosted + version: "1.2.1" + test_api: + dependency: transitive + description: + name: test_api + sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" + url: "https://pub.dev" + source: hosted + version: "0.7.3" + typed_data: + dependency: transitive + description: + name: typed_data + sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c + url: "https://pub.dev" + source: hosted + version: "1.3.2" + uri: + dependency: transitive + description: + name: uri + sha256: "889eea21e953187c6099802b7b4cf5219ba8f3518f604a1033064d45b1b8268a" + url: "https://pub.dev" + source: hosted + version: "1.0.0" + web: + dependency: transitive + description: + name: web + sha256: d43c1d6b787bf0afad444700ae7f4db8827f701bc61c255ac8d328c6f4d52062 + url: "https://pub.dev" + source: hosted + version: "1.0.0" + yaml: + dependency: transitive + description: + name: yaml + sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" + url: "https://pub.dev" + source: hosted + version: "3.1.2" + yaml_edit: + dependency: transitive + description: + name: yaml_edit + sha256: e9c1a3543d2da0db3e90270dbb1e4eebc985ee5e3ffe468d83224472b2194a5f + url: "https://pub.dev" + source: hosted + version: "2.2.1" +sdks: + dart: ">=3.4.0 <4.0.0" + flutter: ">=3.22.3" diff --git a/pubspec.yaml b/pubspec.yaml new file mode 100644 index 0000000..6cd13fb --- /dev/null +++ b/pubspec.yaml @@ -0,0 +1,8 @@ +name: "our_democracy" + +environment: + sdk: ">=3.0.0 <4.0.0" + flutter: "3.22.3" + +dev_dependencies: + melos: ^6.1.0

8kTPdF;@#*Jb;}+bThhr#_1se%=^rM9#`E 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 literal 0 HcmV?d00001 diff --git a/packages/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png b/packages/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png new file mode 100644 index 0000000000000000000000000000000000000000..45971820411e1c70b181f9f30f8577081e67b775 GIT binary patch literal 11582 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 literal 0 HcmV?d00001 diff --git a/packages/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png b/packages/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png new file mode 100644 index 0000000000000000000000000000000000000000..b4a9008a268a256f3614dbffef2becd08522812f GIT binary patch literal 1189 zcmV;W1X}xvP)$z0OpzUoiWBbBCxoMhn zdVat2ob%jr;1P$jA+RCvFd%xRQs?&h+`}Hv-|HeEkw`?<)zy0p27^(f(d1=hWTewH zP1)`C!MEQ!e4@FuxNU|c@9G;H)elraC=~MR>+2ip>gpQga=8@8@fG73fvf6{9)J3# z(?NcG{OEyLYy58krBbPAYin!Q>-B}J!HXHY0Mec}k>nxH1>4=m9*5)dngsZKKDV;6 z(o|MfwkszmXImNyDl6@DI`3GmR!dFI%dcp)`5FwvV!*oq%&&tG!(m633dpVM?VrHm zn4Bm9f*|k%C=Cq_@1V0(t=?U3Zf=3eWO@!27-GUl5xjdpQ-6SpuRtW#fqDej$x;-X z+%pr?tO7EbY*R~1%jwe6(p@pj`d=7uC`d&QjGNKUUyH!Yn*q{`fg28kKo;bb6g*S; zQ+HEqB7qbHFK2@?;=1TSurP$01g3v z5O@<80WQ`?;5(b5;7o*K4oKx9Mef!jZNL4hEv|sYcDCas*Z#WjmSF4)c3+rrnj8bL z9Yba3qMe_L36IDUAWHK?vDRp073dx4Hj^GAKvDiA4u@bBV9r0;jdq{88(^~$AT^(L zz9b#s$@~h#$#36%Kdyjx-ZOvWR-aX+-Bu<}V_grrE?MC5x|BXFm7mO7gvH>f8-jr#aFe(&H?siae_}8+aBuMYjxQQ} zde8iPdvtJ!qC<;qrASq!ZBeP8xc~Q20wMH@>mBIo$SN@I<0nVABePrPSzZ8LR=+<0 zo_~Viv~m2OHXS*5>dZ%i|!kllt;H(0FIR7s&46OblVdQA|JrhxROK?FeoX(}Kkp-UG9 zLFu7MC)5BTxx;&Z!u@*lWs>I!IWv2&z4qGc9O6xlbE@sBnf&TQOhT+J+Z^8b^WXrG>cW3<)cjGkI?GJe=mJTyISrvC#ZQcQW>o)}?r;mD-% zN#Wi{g+=i{<$9s&NFttG5w_hr6uVD-iT(_5sA!+R(R6>V5iPFBWhQob#!E|@`4tu= z*5Kn(Q_+)SKfD`Y5EJILmu~+HV!F8!HYq1trNGS#A|xaGz;tQqQS^S{xDj=G`X332 zG4kQh;%{iJZLE2_Z^_^PkdBzV8ve5=e?V8@%Y}BgDe-_^Jx-z>_W*T!M|)x-Qp^x& zrDPQNuNZK>IcZYM7YA}`B`2KbmB_>F4~QIwFo+KGfA?DN6JTvU7*p$9Iq+p-h^vu` z-G<0vNAaBdzxwi-%a<{Ks@k9X<+7su#s9s5IC8Lxv!}GT8efMeQ>Oxn z{$?5s;@kD2fi!&_qIUW=){cS|IC~aK?}b;oxx9RQwVh6HKW+yFe3HIj=s50vd9D0@ zZMk^jx7(JJ4K|~(GFqud09UfxLmAJzJ|F73U+~P^)O*iGRG(%@&m`=8k)CP7ck$WI zc(s1e7y15b$-kU-SYOwiq);16E?*cH=84N%!-RK4UH|+fxmT_HRluO)1Y9; zP|xqzIO>Olhigie@aR0PyObFA)@5qhB==&E{?jhC#?@iTgc!$aRZ8UVj@!3yx5b14 z_0EV@j@jD}A5L5j-f_H4J(IXoERBxeISQN!KkQr@$eUpEQM^WcGW1%jxmsFNa~fA^ z2m7~gzLb$+jT}pr$oh1;W{dU@Zl0!WN|HQdz867*nuk`)>wjt+I4a|s_bjcgUt5@) zxAUyzlW+x5_Ha20ArW`PQ{oL#MaASK_021r5_Z*aVfwttQx6Z1la84PmWh1N!`-B$ zBxW$4aQ^jkgifT6Pe_QS#7!c{UdU_D)oKn7Ov7nWnu0pHy8F#WK%*vInC1WgvNN}j zRnS~a&V1L)vh#Ut*FU^ga_Hh7c3V<7Wkl*9!v8+UUuJ`ht=y8M;1hVN_Imn8BBy`C zK)4m9ZCtlG&8{c}2X{+3ZqaB#|Nw@9mCJem5eBzCajFk2%7^4Vf zISr-nooc(6PZoZbph>F;6XxeoY6yrRVTp#FUfHsrzkW5uz>+#dHi?-tvD3c1vJx)I2`zYW#GFQu?Y|nlKJNQf^KkN9 z8z3(JRa^G#W>W>5ZA`{&LOpU>j5)&;<}(#-Z6qGlP7VyjbhoknZCehto4Y5NQ8;Ze z=x~iLVm6}Shi=V4jKkbD&F7KM7x=|`4`|8$@hV9gs|%OXBo!3DP9U$fOOY76;c{Gy zms95j5HJ2)C-w8^i>DxFt}0{h(Js~BExY%UBl)pCCf{**StjTkJ2aDoSPNajR6TT04enEi?Q34mzn6M zh5q&O@}Mf($q6jouTv&Vd%QCKKCmE-)T$Kimjwx&iB?K^mt zEjVuh)uL^p=umwp+GeVaS*}NXCraDHhWj$4X=-$|c#~>&F4f@%oh!g8fB%-0s+^Zz zpqk<)2X0G++i>Il`oM)^40A1A5PE@9-;U+Kbz*-0ydA2e(;oB)kbLda#WVRci{e<% z=DMU4#lyqa4rEbWxVW?v*5%?YO-RHzAjk6fN!1f$jW3bL_anMKguGixOe{7>(Uwo|;jUh-vuO=r?4jj}IO zK2MTK;O0{SF(@J+3(CMiHjf%OZ)L)ps!glC8au=R?VB8+FLgsYJ!iEnX6$ zBc0}Kb(ZMg51j_{d!~-&o%^%R#(w;OJ#?=naCPm3-BN9Nu-D*HVF16Eet2v2@3QL4 zl0D5*{wt3=a||?#Fs0p#xo@0mbMO04sHv?K(EXrevs-hf@WUPXwNVyrxf-X_%}&f_ zlF{V7L3IoAY7AG)CO(LTlAFd3#Ewt#r%!{D9hj#i;?XZIMH>wR{#-G7=at%NGi#mH^y1|%wu7Z*h-K+g(&vs4Vr+#Z-N&oU84DT)nG+2!t1O(g-X|mA?$$ia# z`AAINg<>Ix(v9s$X4-`6B{7I3DyF4xZC7)9W~;ewKfxJ&+V%1a3P*iLG75${%AHyP z>*EP*CK^6nbW-_P`MzLwohP;eRo&01hLf4K839aA#+WTKeDPCrMJ7ktZ|l*GgY>}t zJzllOMPE@BNQhdBuXoK&ej^|eS;9h$CGAuqJsS2_N-)~B@Rl>^Qg@DgFyDCm`0=7a zmcnbF_3CaxDW(Cb;K7KF((b+c>l||y?`t9nEG#s_J_WT;R)$oqmG6G8aef#QTFe$r zSMcaEqcX3Y;C1@^}qvS|4>(d4sucstdF|v|~geC?jiVh)5qD~I#G7^NK;+2Q>QdqWu z4Sk>3DbK@q$q_{SBA3?D!dMhJSzCI$3<_NDNS85Zynp|GC)gy+o%*wfg_#6Q%xE#n zUn@T!+$RkG6?!lp#?yK7DURIob+*B8oYGM(?!cUd&93g&s+Oqrx(EDl-Fw-~aHH_>WvpJy{c5ZM^P)Y~CeS6BUvOH_~(Up+LE(J^R)4hQ1u@0Onf z%+F~y58ywBZ=jKwyuXbh)EZ-M=Ot0svQY)?kX1)*4SsL$R>bnOW*a3Vce7$VvZQaH zkcN&3`9mE?PC?m<0>a{KQpWu)8($|bxVgC*pKpY76sL=ps*bEU%X21*6J0i#6*b7n zArf@2S6#?-x8+{%t-utS7d(95DfxN1rKK32(zDswu@%5wDE!=+ir%0KBn!|4RV~t$ z4rCk(lokBfKyi@EvWeT6s8jq{UT$Tyqe0Tq`3^OWMmHXUVH!a52Nh=`rJ6}3-Mvxf z#$t!^Z+}(>TaJit<9<_a@4lzW2GBvIYcskFv%en35a881oa9Q@?X9T)826Z4 zJ)qp>GvDr3%gN@u#Ds*)2|DK2tD_r@>DK2nwHV;HcO;nwld}#4T;3_RoV-%|_N~WV z`F3TWk@dCjhqsAF2=zls!U9G{vOr!vtEE!(0&#DqjdK02A?oK&RtK2^j20BsC@C!R zr{%Fi5%rQ%QqEE1iwfk=-ec185uD*=qY3y^@u*JZ*mU^b&xczEIsoURA5WEkx(<=< z>6g#DQV@Ef33UHfS5NZ(QifS*zDdv`rG!$1g`iDV4`K<-LWD0A1wOY73@Qq7L*cl1 zse8_jj`@mAc#ThxlMRl!Wlqe1Q`!Tv3to!LrZVqfb4q8Z`5;o9Ah&&$ho`MPM_N@y zEP$;bZESucOYXZ547QE>CWR%dM%jRkEC72rIv*}Uj;OT8l;m_1RUP_~1TZ^@C~pZ{ zOUv(~=>45O#UYg(!wEf`*F!9u4~jdP=S*yxY(%gpEhR%UC+hx(ORUK2o?s9^f4znC zx|HW~=bq%obRBwfI2X8EQ=nsnGWzSuA&H$DqAa3g6As@Bd(D&6Jj2NjKOxDI$6vUR z=gvCF%hrsOY$b>C%I1RyU&fmsq^HRkCfYU_pO1Kfmr~RcAqkwc6erIhb0S9Wnr5ag z&z@YFOTH+Ml_#6EQCddReK*La`(gGZG!`a6V}y7vHsCB?X@Eg)B`P)@C$D{aMqpM4 zdBBD8(+?G8Wxqm4T0HzN|2O^gb-hoEpCTHk6mIP65Yo6sNSdMWVy~Id=PkRV`gEc7 zS(1G#3+qj{S%mWd&Tvk0Yc61oqMOx#@(g}%nFBKDwpYSzEIu_J#vnI??E6LoNy|@k zwmnfWkT(k;^`e#KF?oWY8a;ng_LX+acjKbl(R>6MML8>1GSs3^V9v+Z>OL0NZbviYY0>*phdR z%Q0NG;jVqJS;$2YFpB3)@7~Qg_-UYszZG5=cbk7Rj5Bm|b(vz$1QKRbn0XjyGjr{@ zQs^DO*%y-|d`L*>-s2J13-&b9RJcXTY?QTps0>_6{gEWrv-a4pX!moVzt-+5!;t4` znKgY*8sFrL1Lr2@sR%MdU<+%Yw*wn(3-6kdNDJZ_52jzhkbBel%- zZCsEPu3Z+(9Su9zjNVmo`}#ZPB4prXQ3H}d=i;g_6|ArNyi# z?a>H^6G%@sn|BYArxdaj7pUwk!7d;Puhs8%J4%(jO?%HzVB09FJvKyvJp%?a?O{vF6UhTE)0*V~ z=p_E;;DvuORoUvw1I?P6F2_5^yZF2`4C0XQ#s!Q-BE}|h z^Hibrqsic!*W<{6L+3Y|Y&el7L)enF`bD&{<9S?V+B<^37TS?wHJUCc@3(2Rx{h8 zjAI6$y9ma>rNEDz@*nf~J~Xu4p_MAiV%IpPd>Rf)7txRUgjO>VdwYDnTw7|pUzLf z0R1z^N~SAS!r;Z)?~1&vyu45|A0NCKE=6oSSnfch8GPJoH`|YGI5OjKBZfoyxR8bX zDbj>liqz|hYn)9pL@aGbfoW%>!JM(IbSk9e0_uD|R+0V??bw#pT{VscG)$SE+awobG%$N2B zaNW-=(?5*&Hy17D*Rv0*ZArh+G|J3ZgfBzoL zGFRLbU7_W(*CpkXvC`x_T~a3a&@D1O9;tK-pRAB3#s_gebiOlj8XBUybIt%jS6vhO2ZieM!WoN7?7P*N1> zbz>%z5_!z=|9X|?WlO|l?O4I>1O#gv4%te@l@C@sKfNgFXYZ53&LMeZ z|CWirJv-8P?;Udv{%VK8hfcVkvPci5U(-#&hvzpqBn#?__42paaYE+I=JC?`Pg$si zdq63suNx3>**fBA(W*A*P7J2ZiR@7NAdX9L&U@tmPQoV(pu=|bw{%Arnmt{+%Px*>XPhMqEdO z^AeoYHq~e!Op(HE2OzAj;5*nVuKn}vbb5pFwh7@pS*K%@bQJU-F_SxPB3yw#T~d?n z*&UaMOjy}x_l=-q7`S$zV}90uc+@L6MwoOPHU7!~93^Romg|Gdq*f8ODyM`S1eXGh~{GtiRZ1_<(Nz4q8|9#{PoJ zWBm_N158{iFYi493PW9E5>n}6YFCq91JD$!0#1mT$b-^@-rim_dlfWO!f7e!Ehd2; zjrjwD9BC3aw9Vx?#jG3j&0boWM$Pr_XIDY9dTLLz3{5btJ=3|lywgioOO2do!X&M@Oyde>=`C3qEt2p8oP=Eb!{ptF{Rq3btSB>X4@=Gh{6% z9gzBz(^$ynF$A>EPSZ+66~VU;&CmfK#VfAwZW@_668Ns+(Vyc>m)vFAZ37=R!XP#) zCe*dbFYYn#f9300j_&~$M$<=M!UGO&_o-BBuxJAm-1Me-D6K*DttPW;j+Ut2>oRJG zlfJqPP%N%8{aWh7y$8qB+uI%7x2fhAmzNtAS_t-+scfIRK6!G|=6)F|@fCg;q=B9a zS*x(Uu}cA37uLcZXcZ#9P3F{)y#q73-8L4CadO{-gaS=m&S4HM~ z&fGAqmB!`$kP~AiJPaG55^T><@r40u8qmM~T&WEZmbFVo@!oj1JyPwz_B;OX4c1Wo zS%rp$)LVH2UAz8e#P0gL==8L{j9FEiVR!CX?if*I&b*(RW|nmTPqIhEdO#zbHDig! zKF*)!q#gWcH;{YEkofYIRc(P^O_b`;v3#2^PNwlb&X7; z9=X6PDlb1!^>p!8lAI!2+wFi(4vX~o4PNA<;bn#G=;s+_?|x@&*mYmCW?RqxOG&9h z*-8@J%$1(weHE%pA7eT+_03;)?3++x+s#>>+CN0s(9jbu`;)$tEexjN%a^-uI?91rs>FJi4*x{vDIKWD+dMoim?(B@-YiZ`rr%G|~()%}IAkBR1Oyu$f z1nZXiR8&+9ZWv@N&;LF)uo1P%>XbE|98Csqdv(&1M{h4m^SLthD&_|5%taID@?9=g z(V=F@R^pB#o+oT%a+3JiLe}4E{4;4}XXj^{9#gIcfzstDnctF#Ik7FQs|17X_M<=a zlslc^TZhcDCAJT^jrQQ+c!~yY_tOrvS&cymF`N_sny_Dgpgo+*g%F+^Vb zHbm}_(>+v};#}mnZA%weJBvs$siyS92Um0uF|g0#^H7d%tT_wbLYb&d zH0OWZPaY_X5Af}S_w#?#PDDB{oQ0e1ci%jTx=#e87#7rD0QUYO*NPG6Bfy@Q=i={s z1JdPiPwSU3z^h}2Qn;nyIS=FokIGH>lizZiEs7Nt74o*22+g`pX0ZmU2b{@cw2}v{ z(OMa7zoL~dB#eX3mnk-b@t^aY+KMtb@ChjW6WG?Mu$6XM8I)(2n@{VVrIyJMe~ z5y1*_XJL9)*4o|0mh8um%Y(`4fJ?JS%$jy!L0z4G+7=g~=9^Z;`)K|LY9>$SnfBOIjDR{Kcd zpc7)*?D#pTRQ2ErirAEo`}X0B?#c{l_J$YXm$qmmL{AAcCgnh~*tJqI?cXBAiWzB(cL!{$?P`iF_UkP-Nve zK?_v7-2v`FakcyD&i3IHEJAibYWC`?o5Q0=A|=1&ISb(xEiI($)!~$#+|8Aq1F{e; z7GlSF7uq1XyP6ffZ)Db}Ln(@r9z(H`BHr~7aiyQJ(jA!lapbZdNfLF#B0RH`%w-mj zp*W=24zy6Jlx&P;lvHexUiysXr-8k+1D*?Tqr{6oe(cT9%F4ocPJR0b_Uu89SkAP3 zUG-I4FIX$H-=3Yz>`=i>(8rk4iu*}4KThEHiwk2Qdgs9hrNbkq6iJoQnD-{ctE}l| zvz8r5TgRU0`bGEwf1ylu{Mq#1cw%P^8KlCxM*36Rmb*s!s^nia|7akU2R~Y!g6)d_ zmvB)~b9#X0?Gcx?-*7z@183Dgw4rup^tsp&ep}bb!WcM_l5ZyPFivgi)89irfDu{* zq!JiT-6B+;;!EaO$OaCa$eTRW|KI|q_xYvYcSZZ}jQ{E68)|vfPh}xQcI{WCralKk z+|d;JikJgF|n zH9OiBDU#8vM9kGMAp7vLuCAbN^J8bX*A^M^zJ6$bXJDvk(|4W*_po=%%F2e= zVx3a+RkcJZZU{Mae9)h5a&ztRzncqmK*VLD&LbZtO{$rc5@gL!?U@M-H>wuyG${bx zkPa7s(Y$M@2jkX`mL$8c5y$4ArU|=&=tB{SVQHm%zsLu57y)Z5t4Y15T`h4jXeu-k zMZ3huv%Or}f9PD!)UaRK0onFhfa-yh>#4(evRMs6SAwKPZqo`Cvm7H>c4JN%R z?BLu_gl_Wz7P|fIfJSHVb7>d=+CB)1o}QlJM4_blhUGWvR_=+mlK7g+^QUSVA3|>- zgre;hSgts>Pm!lQ#7E!WB>&vHr3gF^OhswokzxrbOltzXj`&cN1&MD;5=B18bi`qv z)o4_)7P);sDuJ$^Hd_v-IVk78SO2B#?;&tP(=4ePC&-PWOnEaXbKG;hl;?Htulv^u z`xEvAZw{>+gbXEB*p8`_OX<7QMkd+{y|YY}qi8AlozfYR!~MI?;`pK6k`TiJP|G2S zL!yHlaBhk$8mAYRlP~gNf3f|7p=v!R^LwknW!_R3}>*#4hNnyCCb7()S6d5&&h9>PXgE_EVF;M!fnF^j0*I;p>$` zZIwppj|3iTjJ^`%1NL{Y-|4TskY+d`Zi^1f7Wz-ssMM@k5;u-WuR&r+W+Br)!);t6 zN|iG=7I`(z*#KF6#kUyNCExuqXs$M)Sy-$NR#M?cJp!nOnY>eG24AZ$#}Dw`$k8*S zhd&7VE9R{xyd1OQ@`??bbINutBMbnu3oyHpx1X_)-_v&523AeLIW38eF@#XD^WWoohyD@$PK(6)_vYuOtmD4YR3g93qQ33sI`NG8#a%Y(TbcLM;SO> zAIY9A=W!>EMwc(!?SKp0{_MXd{WOC{Hl|WR6Zqv zq^rkCqFZLb*B#gzKc%Hz|FDo{@fBao_qU!bF5N-NBs_s>}CJdF)T6T_exaz@qhV+=%HLQkBF|#zgqNADAazwxvGEJbH@CSH4AX{{4cyxSM$i~E zQw9&D{6dq7%Q84!?;8&u{0&Q0A)IpwhjtUpa-fp1rS>-x4^9<=AK!1jAS>(yWjqh= z#%&6RIPeX>d40a$gRkQbT=D{5@gR}>0H2%m=sfaf^Y1v;jtlb4?mQ#M9Q+ptsApTQ zOp3-)j9f5-fxZYabhE+P!`PU~89#6J8_I;G${VD?)6hr$g51|pdl=t;IXK>qdX3`0 zl{B>Xepf~lF!D42Q=Co4oZ>LfR`h`&SFcRO)$iWfYbgjQwoc55=3?mg2|n|tTQ~jx zEVPrVHeA<+>Q2RFIm4?HVk_x}pSga=_iO1L$J+rN7``nq6 z+=`$yrb*|dy8SrG^d|*qPdrQMAbVX`ujIm!GxPCY2`OE;d9c?6p8x_2}lriP^%LvYf8#+(YXi!}^>4Z~rM)C=3zuj+Y?r-`9@elal9H5a2o@FT z12iBY7%=gD@1KHi%~V)m#I~mhYAKX)RQsuL zQA%n=+|Z~~VJF#Mgd|IBXY8>kq0D0{WrWr@I;3(u)Ysmx=ZnDGZAy?!9+^yfvNO^$ zA^_0M_4Azgx={pbFyr}$vbP?T`X12~_#M9Ur?%Ht0#-NgT!yTE#wI|pe%LD_@nqZh z=@WtBH>zSRkDK{}y#(CwLmT89dZOvYJ)>0+m}PSt&~cD{FHyd%sXo(!CQO;Bj#d<) zMsyb5NWAIwr{-}n3)$bk?iuy>`Q&@>IIc))?3-YhX0YW5%gzeF>L4Sd2{Uq)n_QPS zK0P2dsOfzssGh(3CUXQgB<%yNPRqV~xeKZPAQg5i-PGHApZ^(zTiFgE=KKBBXS?h* z9p-uCMkj0aLqm~5;;6%^%YIZ4OZ}t@4J6=8Z!(yOVlFV%EMV;Lu;G)s>r$jl5l(VT z6GhKC)o1CB_g+l@OUtDB&DV^pNLnFv<{9aB>>kh3cf^hJ^Andpr3Z*)TG9mF? z>?7b^G1(6xArE^G?Lvu@nCb8s`CIrQetZ0o0T15!*?X$5Aw{^=I2pUU&UI?}zoh!- z|A2h0gK|2D{aI{KduD9j0qwHGUHS;^v5`9zrz5{kfH+k!`l*s7R7-{2Ao#ieNs%gb zWk?#C0`Ca1p#qXIooKUeh;*|#H3q`n;fL7VRlA+uI3H9dOqqKT08h8@H9u;9{_BaG z+r3x$lglZG+DA{{^$9Ujwc>zp6VXYur!^lKfu9t*ktJFG3^osD1m6<)7L<^?cA(`* zkH=go?jlB=&*sejC00cT%WlGLB+J-zX1-Q(yZI|O&qH;(x?1*=Dg%?Y@1=Maa&K2x zS8WWTlD%<}U3}am2gfS6C;`MHa+pd5mzTx;Ti-*U(c0n3>k);_Bw=R)pE5ofQM*p{ zG!@;uC?ii|980sZ`V^&~p8g2MeGWD3>ANJPQWo*-Y&--LV0!T}5KS1P!`oguAlC*; z&U#oaP9r5=1_UQMNDbnOd|0~&-+aDko#t2U9T^ID>HB%jYlT8yo+|ezC&BUrOH;g; zX*0XSPN3iW$tg|c`EXYD$0d*2twuH}p8)mg3hU!Rb?2l@ynUHY;(r_lPD0;&khqb0 zH&la6zPcPvE~&;xVP#Ka5zVI^mT#@8u@s2LRo;YThaFydsH1iqd9eHFQ^cR&INgUt z9}CQL=HyVkZik&rg#gPrlq%DlV7pghACOfO#fW%S{Q_c#o9XW$UzQ{Z*#|yR(bRo$ z?AnaxX825vU7?Dj4%S7faj+Nxo|kVp0-fYpFGv89rNH6It4?^UGv_sDUpC~Hqa+DU zl^yD!ABREor_)1cy(JbN19_S~5!au8dRITwdm%vMcD;$dW1BLy-RQ@=mkfzMbst{f zOynavEZ@DP>eANY1sKt6)CfN)3r|WXIS`l-a=>9ELYut6V_?E3yEL8T_o?8vI%94} z3-DB+IJOSj_3XKL7ss~6#hHL9izgAs>tjRgd+n^QmR$hs!Jpx`;ilH>x+1b2mZ>tF zmcPX_6wKtdVc$H_i>}RY=Y*3KqvGqIE@`ZO!8BQJ!cG99Q5A@Ae!Q-A`1mk z_K}wg2o7a42fEn=FFs9t@}e|}!IbD_cKJZ2dF=)F^*Irzk{|(KkhcD1i~L}4g(D3Q zO4ObQx{XUzyjj__(>v7<2*h4zEVaYsmMhw1ICc!W@<__Q;&uer~y=l`fb*yUn8>O$p^SZFjpv8VFJjVsPY0Cz+{b zb4yM!7_WO>01=Y!&!0cdtpYr^k8E8&SFd$C?Dffsdba0U#68g%a0TBX&9N5y&IC>; z;M<=mIzo0fM3}Y~CeDl<+E22NI^M~Ye>?RYDjQPp7-*A=`>JB=HH z=pO5mD5^I50PDtjMDleTzLS6K$QegeFxt@~3}2Cp^BL;9}uYu`RslGSE`wWGflvhPz(cMbts`U z)2e(hDSb)p1xi3Bx6%1|3NxAl&%<^NU_|Oe?u_D5IAq~vKpW6)`v^x4zCo-N=|En? zcg_rTAP2kkiFaKBX*%w5+c0uR{X@O=1Y+AgZ3E_h23nL)5wkX*MOe1wQWq2#KOP!> zr~9zP1RYTw^uh^3TMKgPkEGBW>UR3P7WaudfRqh*r&q&qTRABGi>4Rxx_5Vt9^sHs zYz+;#2qPcEdLrK?;BwY4^MfcFa@btLnw8@4ZI4IQMG!)#VuVi-Xcqkt2%L<}i|#8c zyF-J>ekrnnve7V+XJIJkB!6+@BrComJo(Pf@S+iFFNiSxTJ`+Jg*TH~weyN8;is`b zA|=kD+9GE8CRYXm~mShwXk5dP=c0jmNJDYuf!lQRn@>KETHbV8qCio>ueCf}4yq z>EF*A@S;BM@HSS2eylsJAG)vQA?%tKWGul!!RjPtt}Z+Xl&%5MbXbpyZi(P{zo=8Hk`2@ME@ONXYAuaC15Ehri93wFAi-3 ze&t%i!aU^uRWsC|>d7>3OHZ-_ z-h!S{$NA5g)lJf^GNHRCYuBCt+hfsh5#y}f%zV7yna<$H)&q=Vuh>pLFclyydjZNY zj<1T7#HeqFpNYiB;>Q1tdA#n@L08eT% zoo_|WjY1nd^O7{_R+C~3k(;7ZNGGywZX~3+6#Bg#Fbvu3sh8uFRC$xfwV&>$-QfnF!5G>*DY}(7EgLeE$}H`a&dnSs zd+q;{Ao+(aRCfRS$AP@az0;-jd+=b0tD3Rk5)eEB5w@tBR}zMrvfP>m^q8c=c55*o zn~2YtBREEIl`ITu3pyTv3l9p$mSZ0&23?;#2TdQ{IhpSQ;(}(rVq|bg>AJC(2?Uj< zFJT6@3|p%f(jCgEII5fL^{Rjhq&lK~|3X${zMwO*s!kX^yqewwAq+MT9b2HumA1~R zaB5z>?(IHc`14~x8Hmo|W@X4pRAroy0^ERy|claMEi0fnc2uo z6A;cy5xgS6Q%B=Oja>xMjO`;I?)CP;mGH%%rjuL_oY}<8cBoN!VRfyxq+UaEcHH