From 6d1fa1194a4ca2517887fc8cdd5e6a204a9b6f26 Mon Sep 17 00:00:00 2001 From: "Beier, Niels Juergen" Date: Thu, 23 Feb 2023 19:11:14 +0100 Subject: [PATCH] Initial commit --- .gitignore | 47 ++ .metadata | 33 + README.md | 35 + analysis_options.yaml | 29 + android/.gitignore | 13 + android/app/build.gradle | 86 ++ android/app/src/debug/AndroidManifest.xml | 8 + android/app/src/main/AndroidManifest.xml | 45 + .../app/FlutterMultiDexApplication.java | 25 + .../muesli_app/muesli_app/MainActivity.kt | 6 + .../de/shuzo/muesli_app/MainActivity.kt | 6 + .../res/drawable-v21/launch_background.xml | 12 + .../main/res/drawable/launch_background.xml | 12 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 544 bytes .../main/res/mipmap-hdpi/launcher_icon.png | Bin 0 -> 4705 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 442 bytes .../main/res/mipmap-mdpi/launcher_icon.png | Bin 0 -> 2959 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 721 bytes .../main/res/mipmap-xhdpi/launcher_icon.png | Bin 0 -> 6569 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 1031 bytes .../main/res/mipmap-xxhdpi/launcher_icon.png | Bin 0 -> 10513 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 1443 bytes .../main/res/mipmap-xxxhdpi/launcher_icon.png | Bin 0 -> 14375 bytes .../app/src/main/res/values-night/styles.xml | 19 + android/app/src/main/res/values/styles.xml | 19 + android/app/src/profile/AndroidManifest.xml | 8 + android/build.gradle | 31 + android/gradle.properties | 3 + .../gradle/wrapper/gradle-wrapper.properties | 6 + android/settings.gradle | 11 + assets/cereal.png | Bin 0 -> 40061 bytes assets/cereal_icon.png | Bin 0 -> 64117 bytes assets/logout.svg | 1 + assets/multi_person.svg | 1 + assets/person.svg | 1 + assets/place.svg | 1 + assets/reload.svg | 1 + assets/settings.svg | 1 + assets/sheet.svg | 18 + assets/time.svg | 1 + flutter_launcher_icons.yaml | 8 + ios/.gitignore | 34 + ios/Flutter/AppFrameworkInfo.plist | 26 + ios/Flutter/Debug.xcconfig | 1 + ios/Flutter/Release.xcconfig | 1 + ios/Runner.xcodeproj/project.pbxproj | 481 +++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 87 ++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + ios/Runner/AppDelegate.swift | 13 + .../AppIcon.appiconset/Contents.json | 122 +++ .../Icon-App-1024x1024@1x.png | Bin 0 -> 131859 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 0 -> 1167 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 0 -> 2442 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 0 -> 3747 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 0 -> 1761 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 0 -> 3650 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 0 -> 5862 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 0 -> 2442 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 0 -> 5219 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 0 -> 8383 bytes .../AppIcon.appiconset/Icon-App-50x50@1x.png | Bin 0 -> 3077 bytes .../AppIcon.appiconset/Icon-App-50x50@2x.png | Bin 0 -> 6894 bytes .../AppIcon.appiconset/Icon-App-57x57@1x.png | Bin 0 -> 3560 bytes .../AppIcon.appiconset/Icon-App-57x57@2x.png | Bin 0 -> 7852 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 0 -> 8383 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 0 -> 13336 bytes .../AppIcon.appiconset/Icon-App-72x72@1x.png | Bin 0 -> 4705 bytes .../AppIcon.appiconset/Icon-App-72x72@2x.png | Bin 0 -> 10513 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 0 -> 5002 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 0 -> 11052 bytes .../Icon-App-83.5x83.5@2x.png | Bin 0 -> 12342 bytes .../LaunchImage.imageset/Contents.json | 23 + .../LaunchImage.imageset/LaunchImage.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/README.md | 5 + ios/Runner/Base.lproj/LaunchScreen.storyboard | 37 + ios/Runner/Base.lproj/Main.storyboard | 26 + ios/Runner/Info.plist | 61 ++ ios/Runner/Runner-Bridging-Header.h | 1 + lib/l10n/app_de.arb | 30 + lib/l10n/app_en.arb | 30 + lib/main.dart | 120 +++ lib/model/exam.dart | 14 + lib/model/examlist.dart | 27 + lib/model/exercise.dart | 29 + lib/model/exerciselist.dart | 66 ++ lib/model/exerciseresult.dart | 16 + lib/model/exerciseresultlist.dart | 24 + lib/model/lecture.dart | 18 + lib/model/tutorial.dart | 27 + lib/model/tutoriallist.dart | 13 + lib/model/user.dart | 26 + lib/services/exceptions.dart | 4 + lib/services/globals.dart | 7 + lib/services/request.dart | 404 +++++++++ lib/storage/storage.dart | 17 + lib/ui/pages/lecture.dart | 99 +++ lib/ui/pages/login.dart | 272 ++++++ lib/ui/pages/overview.dart | 131 +++ lib/ui/pages/tutorial.dart | 72 ++ lib/ui/widgets/card.dart | 24 + lib/ui/widgets/dialogbox.dart | 116 +++ lib/ui/widgets/exam.dart | 29 + lib/ui/widgets/examlist.dart | 83 ++ lib/ui/widgets/exercise.dart | 22 + lib/ui/widgets/exerciselist.dart | 21 + lib/ui/widgets/icontextpair.dart | 46 ++ lib/ui/widgets/lecture.dart | 81 ++ lib/ui/widgets/muesliappbar.dart | 27 + lib/ui/widgets/settings.dart | 106 +++ lib/ui/widgets/settingsmenubutton.dart | 22 + lib/ui/widgets/tutorial.dart | 58 ++ lib/ui/widgets/tutorialsnapscrolllist.dart | 91 ++ pubspec.lock | 775 ++++++++++++++++++ pubspec.yaml | 118 +++ 121 files changed, 4516 insertions(+) create mode 100644 .gitignore create mode 100644 .metadata create mode 100644 README.md create mode 100644 analysis_options.yaml create mode 100644 android/.gitignore create mode 100644 android/app/build.gradle create mode 100644 android/app/src/debug/AndroidManifest.xml create mode 100644 android/app/src/main/AndroidManifest.xml create mode 100644 android/app/src/main/java/io/flutter/app/FlutterMultiDexApplication.java create mode 100644 android/app/src/main/kotlin/de/nielsbeier/muesli_app/muesli_app/MainActivity.kt create mode 100644 android/app/src/main/kotlin/de/shuzo/muesli_app/MainActivity.kt create mode 100644 android/app/src/main/res/drawable-v21/launch_background.xml create mode 100644 android/app/src/main/res/drawable/launch_background.xml create mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-hdpi/launcher_icon.png create mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-mdpi/launcher_icon.png create mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xhdpi/launcher_icon.png create mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png create mode 100644 android/app/src/main/res/values-night/styles.xml create mode 100644 android/app/src/main/res/values/styles.xml create mode 100644 android/app/src/profile/AndroidManifest.xml create mode 100644 android/build.gradle create mode 100644 android/gradle.properties create mode 100644 android/gradle/wrapper/gradle-wrapper.properties create mode 100644 android/settings.gradle create mode 100644 assets/cereal.png create mode 100644 assets/cereal_icon.png create mode 100755 assets/logout.svg create mode 100644 assets/multi_person.svg create mode 100755 assets/person.svg create mode 100755 assets/place.svg create mode 100644 assets/reload.svg create mode 100755 assets/settings.svg create mode 100644 assets/sheet.svg create mode 100755 assets/time.svg create mode 100644 flutter_launcher_icons.yaml create mode 100644 ios/.gitignore create mode 100644 ios/Flutter/AppFrameworkInfo.plist create mode 100644 ios/Flutter/Debug.xcconfig create mode 100644 ios/Flutter/Release.xcconfig create mode 100644 ios/Runner.xcodeproj/project.pbxproj create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 ios/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 ios/Runner/AppDelegate.swift create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md create mode 100644 ios/Runner/Base.lproj/LaunchScreen.storyboard create mode 100644 ios/Runner/Base.lproj/Main.storyboard create mode 100644 ios/Runner/Info.plist create mode 100644 ios/Runner/Runner-Bridging-Header.h create mode 100644 lib/l10n/app_de.arb create mode 100644 lib/l10n/app_en.arb create mode 100755 lib/main.dart create mode 100755 lib/model/exam.dart create mode 100755 lib/model/examlist.dart create mode 100755 lib/model/exercise.dart create mode 100755 lib/model/exerciselist.dart create mode 100755 lib/model/exerciseresult.dart create mode 100755 lib/model/exerciseresultlist.dart create mode 100644 lib/model/lecture.dart create mode 100755 lib/model/tutorial.dart create mode 100755 lib/model/tutoriallist.dart create mode 100755 lib/model/user.dart create mode 100644 lib/services/exceptions.dart create mode 100644 lib/services/globals.dart create mode 100755 lib/services/request.dart create mode 100755 lib/storage/storage.dart create mode 100644 lib/ui/pages/lecture.dart create mode 100755 lib/ui/pages/login.dart create mode 100755 lib/ui/pages/overview.dart create mode 100644 lib/ui/pages/tutorial.dart create mode 100755 lib/ui/widgets/card.dart create mode 100644 lib/ui/widgets/dialogbox.dart create mode 100755 lib/ui/widgets/exam.dart create mode 100755 lib/ui/widgets/examlist.dart create mode 100755 lib/ui/widgets/exercise.dart create mode 100755 lib/ui/widgets/exerciselist.dart create mode 100755 lib/ui/widgets/icontextpair.dart create mode 100644 lib/ui/widgets/lecture.dart create mode 100755 lib/ui/widgets/muesliappbar.dart create mode 100644 lib/ui/widgets/settings.dart create mode 100644 lib/ui/widgets/settingsmenubutton.dart create mode 100755 lib/ui/widgets/tutorial.dart create mode 100644 lib/ui/widgets/tutorialsnapscrolllist.dart create mode 100644 pubspec.lock create mode 100755 pubspec.yaml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..79cf399 --- /dev/null +++ b/.gitignore @@ -0,0 +1,47 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# 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/ + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.packages +.pub-cache/ +.pub/ +/build/ + +# Web related +lib/generated_plugin_registrant.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 diff --git a/.metadata b/.metadata new file mode 100644 index 0000000..617606b --- /dev/null +++ b/.metadata @@ -0,0 +1,33 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled. + +version: + revision: b4bce91dd0f168179d46a7ae5eceb3572ba9637a + channel: stable + +project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: b4bce91dd0f168179d46a7ae5eceb3572ba9637a + base_revision: b4bce91dd0f168179d46a7ae5eceb3572ba9637a + - platform: android + create_revision: b4bce91dd0f168179d46a7ae5eceb3572ba9637a + base_revision: b4bce91dd0f168179d46a7ae5eceb3572ba9637a + - platform: ios + create_revision: b4bce91dd0f168179d46a7ae5eceb3572ba9637a + base_revision: b4bce91dd0f168179d46a7ae5eceb3572ba9637a + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/README.md b/README.md new file mode 100644 index 0000000..fcec17a --- /dev/null +++ b/README.md @@ -0,0 +1,35 @@ +# Müsli App +This is an Android/iOS Application for fetching data from the MÜSLI System of University of Heidelberg. + +## Contribution +If you would like to contribute, feel free to make a pull request or open an issue about it. + +## Prerequisites +Android: minimum Android 4.3 +iOS: minimum iOS 9.0 + +## Installation +Go to releases page and download the .apk (Android) or .ipa (iOS) and install it on your device or build it from source. +Currently I'm not able to compile an iOS version since I'm not using a MacBook which is required to compile an app for iOS. + +### Is the application available on Google Play/App Store? +Currently the answer is no. For adding it to these Stores I have to do payments. + +- Google Play: single payment of 25$ +- Apple App Store: yearly payment of 100$ + +Since I'm a student at Heidelberg University I could afford the one time payment for Google Play but I just can't afford 100$ per year for the App to be visible on the Apple App Store. +But: For universities or other teaching facilities the payment of 100$ for the App Store may be waived (if anyone from the MathPhysInfo student council or from the University of Heidelberg found this repository, I would be very happy if they would want to help me get the app into the respective app stores). + +## Build from source +1. Setup flutter environment for your [platform](https://docs.flutter.dev/get-started/install). +2. Clone this repository: +```git clone https://github.com/niels-beier/muesli_app.git && cd muesli_app``` +3. Run `flutter pub get`. +4. You should be good to go. + +## Issues +For suggestions and bug reports, just open an issue. When reporting a bug or an error it would be very helpful to include log files which can be generated in the settings of the app. + +## Disclaimer +I am not affiliated with the University of Heidelberg or any other institution. I'm just a computer science student there. \ No newline at end of file diff --git a/analysis_options.yaml b/analysis_options.yaml new file mode 100644 index 0000000..61b6c4d --- /dev/null +++ b/analysis_options.yaml @@ -0,0 +1,29 @@ +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at + # https://dart-lang.github.io/linter/lints/index.html. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/android/.gitignore b/android/.gitignore new file mode 100644 index 0000000..6f56801 --- /dev/null +++ b/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/android/app/build.gradle b/android/app/build.gradle new file mode 100644 index 0000000..eb93fb5 --- /dev/null +++ b/android/app/build.gradle @@ -0,0 +1,86 @@ +def localProperties = new Properties() +def localPropertiesFile = rootProject.file('local.properties') +if (localPropertiesFile.exists()) { + localPropertiesFile.withReader('UTF-8') { reader -> + localProperties.load(reader) + } +} + +def flutterRoot = localProperties.getProperty('flutter.sdk') +if (flutterRoot == null) { + throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") +} + +def flutterVersionCode = localProperties.getProperty('flutter.versionCode') +if (flutterVersionCode == null) { + flutterVersionCode = '1' +} + +def flutterVersionName = localProperties.getProperty('flutter.versionName') +if (flutterVersionName == null) { + flutterVersionName = '1.0' +} + +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" + +def keystoreProperties = new Properties() +def keystorePropertiesFile = rootProject.file('key.properties') +if (keystorePropertiesFile.exists()) { + keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) +} + +android { + compileSdkVersion flutter.compileSdkVersion + 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 { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId "de.shuzo.muesli_app" + // You can update the following values to match your application needs. + // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration. + minSdkVersion 18 + targetSdkVersion flutter.targetSdkVersion + versionCode flutterVersionCode.toInteger() + versionName flutterVersionName + multiDexEnabled true + } + + signingConfigs { + release { + keyAlias keystoreProperties['keyAlias'] + keyPassword keystoreProperties['keyPassword'] + storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null + storePassword keystoreProperties['storePassword'] + } + } + buildTypes { + release { + signingConfig signingConfigs.release + } + } +} + +flutter { + source '../..' +} + +dependencies { + implementation 'com.google.android.material:material:1.8.0' + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" + implementation 'androidx.multidex:multidex: 2.0.1' +} diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 0000000..5629ba0 --- /dev/null +++ b/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,8 @@ + + + + diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..8a807a9 --- /dev/null +++ b/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/android/app/src/main/java/io/flutter/app/FlutterMultiDexApplication.java b/android/app/src/main/java/io/flutter/app/FlutterMultiDexApplication.java new file mode 100644 index 0000000..752fc18 --- /dev/null +++ b/android/app/src/main/java/io/flutter/app/FlutterMultiDexApplication.java @@ -0,0 +1,25 @@ +// Generated file. +// +// If you wish to remove Flutter's multidex support, delete this entire file. +// +// Modifications to this file should be done in a copy under a different name +// as this file may be regenerated. + +package io.flutter.app; + +import android.app.Application; +import android.content.Context; +import androidx.annotation.CallSuper; +import androidx.multidex.MultiDex; + +/** + * Extension of {@link android.app.Application}, adding multidex support. + */ +public class FlutterMultiDexApplication extends Application { + @Override + @CallSuper + protected void attachBaseContext(Context base) { + super.attachBaseContext(base); + MultiDex.install(this); + } +} diff --git a/android/app/src/main/kotlin/de/nielsbeier/muesli_app/muesli_app/MainActivity.kt b/android/app/src/main/kotlin/de/nielsbeier/muesli_app/muesli_app/MainActivity.kt new file mode 100644 index 0000000..5d15bad --- /dev/null +++ b/android/app/src/main/kotlin/de/nielsbeier/muesli_app/muesli_app/MainActivity.kt @@ -0,0 +1,6 @@ +package de.nielsbeier.muesli_app.muesli_app + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity: FlutterActivity() { +} diff --git a/android/app/src/main/kotlin/de/shuzo/muesli_app/MainActivity.kt b/android/app/src/main/kotlin/de/shuzo/muesli_app/MainActivity.kt new file mode 100644 index 0000000..a3de010 --- /dev/null +++ b/android/app/src/main/kotlin/de/shuzo/muesli_app/MainActivity.kt @@ -0,0 +1,6 @@ +package de.shuzo.muesli_app + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity: FlutterActivity() { +} diff --git a/android/app/src/main/res/drawable-v21/launch_background.xml b/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 0000000..f74085f --- /dev/null +++ b/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/android/app/src/main/res/drawable/launch_background.xml b/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 0000000..304732f --- /dev/null +++ b/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..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/android/app/src/main/res/mipmap-hdpi/launcher_icon.png b/android/app/src/main/res/mipmap-hdpi/launcher_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..31a385dd027b012a38a1e50a1d550e4b9f273ce0 GIT binary patch literal 4705 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..17987b79bb8a35cc66c3c1fd44f5a5526c1b78be GIT binary patch literal 442 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 FV1oF>d4&J~ literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..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/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png b/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..5b7a82be79cf82c541b4a0609c916996e8ce174a GIT binary patch literal 6569 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png b/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..236ff403e02c71c16e3e5baa9889b8c292fb4440 GIT binary patch literal 10513 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/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/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png b/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a64b86be904a6ed9aa27d8cda037653080bf0530 GIT binary patch literal 14375 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/values-night/styles.xml b/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 0000000..6533ba2 --- /dev/null +++ b/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,19 @@ + + + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..eee9055 --- /dev/null +++ b/android/app/src/main/res/values/styles.xml @@ -0,0 +1,19 @@ + + + + + + + \ No newline at end of file diff --git a/android/app/src/profile/AndroidManifest.xml b/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 0000000..5629ba0 --- /dev/null +++ b/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,8 @@ + + + + diff --git a/android/build.gradle b/android/build.gradle new file mode 100644 index 0000000..83ae220 --- /dev/null +++ b/android/build.gradle @@ -0,0 +1,31 @@ +buildscript { + ext.kotlin_version = '1.6.10' + repositories { + google() + mavenCentral() + } + + dependencies { + classpath 'com.android.tools.build:gradle:7.1.2' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +allprojects { + repositories { + google() + mavenCentral() + } +} + +rootProject.buildDir = '../build' +subprojects { + project.buildDir = "${rootProject.buildDir}/${project.name}" +} +subprojects { + project.evaluationDependsOn(':app') +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/android/gradle.properties b/android/gradle.properties new file mode 100644 index 0000000..94adc3a --- /dev/null +++ b/android/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.jvmargs=-Xmx1536M +android.useAndroidX=true +android.enableJetifier=true diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..cc5527d --- /dev/null +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Fri Jun 23 08:50:38 CEST 2017 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip diff --git a/android/settings.gradle b/android/settings.gradle new file mode 100644 index 0000000..44e62bc --- /dev/null +++ b/android/settings.gradle @@ -0,0 +1,11 @@ +include ':app' + +def localPropertiesFile = new File(rootProject.projectDir, "local.properties") +def properties = new Properties() + +assert localPropertiesFile.exists() +localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } + +def flutterSdkPath = properties.getProperty("flutter.sdk") +assert flutterSdkPath != null, "flutter.sdk not set in local.properties" +apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" diff --git a/assets/cereal.png b/assets/cereal.png new file mode 100644 index 0000000000000000000000000000000000000000..17f3a9ac41186fd7810589fb45efa3332dd0471b GIT binary patch literal 40061 zcmdRV1y>wR)Ar)-?oJ>$!QCZz2=4Cg?kK?Q(Tv%_*&^#g zfDiy62gpi@e)r5i+wk!HzR(1BwIww7B{??%y?YuVltT=O8eamsjy#&=5AIn9RP^7~ zHPsrNGu<_{{^0j$N^){e>H^smRD^`w40-c|?DvmI&oJ!CT;61Qt*xmDk37?dY{`-{ zH+L-}@=$a!c#8i&e=vnK^P#S!qz2QG5k{2}DkFM5vG=}FL){TaLg&Lh<$+>`O)>|| z+e4wrwa3ys29@DZd8dtB*@;CI@5~n=NegjzH_}~F?fb4*Gygj#V zd04=t3Im&ex{EqO6iMj#60V(g6XZl58YZk5GsN&Hz6%Rf0Nu0`x|obbACJ!dZmKG` z-ReG~D`US$s|Xx9B|jBN7q&eXU0xTSf_k3~dAf%&jconhC10GP6DcF!)pNDQGp(nQ zKqO6M2rPh{^awfIr@=TmZfHLAT_XBvh_b)zEx8bGAED@&mfj^-+|Dj8C_$*9PqfsS zfoDC>VSo}iK2-3VfI#9E5+}L*5b{oh7y7_XKPAo;Mie3lWO!FbuvkB4shxh*ce)<` z5P=hG$GW2eG)0ELislGYghCS~_dXH92lEskq+(6RB8%J#D75^&!4Gz$@LcQMGcLfr1(Pl5enzeV1(y!wftL4p1jqW&qFzmqUlAViyKS<gk*2KqUV#Q%FQ>KUy$Y^dpSvh}-gsTpqeQI!c&cD<#MVfj!uMSYEYX*+5j2# zCW%;>LoaH4!T)pF;9_es!)5zg>7nm$iR5u->+4x{ZAMsYbajFt+A9NTVNSjbV0LaU z4lynC^Vh%TZaw`@zx-oI<)V>S5yU@wt(adfN8RVQi>3lj6Ku|T&wAH{Nlp@M!skCJ@?})fUKaQzGan}d7~vH4OQtO3aSOlS&3cDfDVT(RfUh}s3+!a1QB(0 z|A5J5upBk?*zq@7SKn}wE_Lt!lVml(J~KjScaNp1$n|swwWCDmz;ieG9esIHQJaD- zJVUijv_>^xZlHU%68AO7A35fUZW;lQjQxNJ^<8QI@suRww)F1NLcY^Q9hMIg6FJiw zzzoM1o$uIEj&XaC2ED&ZrzU&l0w{I*FEGK72w)-!1c1;Fnw zh~|#l)Q!NUWBiK_H=eszkwd1T8BhEKtL3`6dNO!dXwkh9yrpNesV;36f3=_!SZ&}= z1wkowzD~PJag?mlo0_s{Y(94F32)ylQZmk4}M%lE}Gy77F(oX%-EWWVHzC+`mB#)0|$;(5Qn za2_>}8oK@b5N)XsNBf6>{&GLx=4viouMtCGsbV&1uUi?wu`f2Ba=qZR3N%bxUz~+L z#@a2*?`|fr&eO4qF+XDNldEv1 zfa}+y8hb%1f;#nr%RPLpsoX~mfqs6HT)_Upfs~^R3)tY!_x14;8FZ7_uUe45|A0jO zEVoMUN!+~?7g#|tod_K^u~vRHLRpuX!0$q7#97u=)5SL#0v!}J-Vveac?w6EajVv# z7D1$>glRi4H8Dw-ewG#(slg`zk)VeG1Skt8l3|(k#`S1kXfRcC0HKMQ3uXcxf3^g! z3I~c40e~-U8;-PN#6XY@3by3?M_aN_y7IJ|?OKc4ZVR)%t<%<99;(T!KVQj;Mkz{M z&((+ej5*8UL2l(svBs_e313O>7tcFo)OEVqgC?5@axOk(YuOg-puT~?O~`Z;h>phR z+Vp%zbBWcVtcVx0PurDN{&piOLT|1_P4CtIr#Tbdj&dcA6JCIB&8%25Lh4G#vbMZL zocJN(72uNn5loa&fKY~DBN4N&H$S0XIaUYuz``9X^ee@NK-{Lw36|IXszRU9KKfLZC)M zRjFA;5(C#b&h6h$dRI5xC#Af+j(QK%3vlqsiO_JM=c$s5xvJgG5D-emRi+*o(W~$=@A?U>- ze#;t;uHW6c76d~|_>d$4OfB#ppdIsMvTT?q;4hrJLKATPHCy4v{5MKpu3@8gE+|wo z$3t^SXiO5c-Vs5trNM`IGmv@)$JAh(S0zX22)C^j#gj7&hN?7?0+@O+0~RVIVNoLc zo|8k`*I6j`>D=3hrY1JX=MTuN)bFBa&1t_Gcb_AW9>MSxUdC8okKyvQ^=X87YdTI^ z_8enR9w=vQci;FxCVb%mVFF6a{Mr?VSZ_;=68dLl#bg3Io(`ml%U#R-eXWa0LHOHi z)1W$UBHqb3T>gNa5v4In+`2?AU4AwMSvJ^2+V8YH-EWxyWF;cJDFPqu;)wy(Io5pO z31m=c0=aT)6=t5_ZQIGv7ufY2ESRG1V`pnU!c);`QNIX%{qx?e7&L2AX$uoh*>o?( zXv=!Gl?)h-Cn{2BUw;LFF6`15Kx>(w?;|#mxh}ETUw;IO37?NVytP~5pJ_0E^g=Ii z)xNNA$3p|B?f&}6eZF23TFu$3P_g2Q#SwG}+B?q9p6Shiy3X0c49p%6b^?@C_z9RG z*V~iACbJnHVqu82UtJ98)V`zLNA&e)(CDV^Y~%(sIx`|F#((c3S61iA)zm}{oBJME zbHT$vz*VojggGJDdiaKeW|d`t8Q9(~fOLqSxyHMfqK}_Rqph8Ujwu88`ONdQPeIJ? zVmMx+Smcj^!v^}HXsjZ5z^!XRN*cdd^d+>@(9OEtlKaP?4^88F=U5;Txt?ht9663I zpr$p>_e=`qTRx&0146~%uZyJf4C16pUnD)eMrdPCnHwzDZB+Q;ZFUE6p*!#HMTrYn z0YX{q?6@m}1Gt{flLj(MEX5sLBr>Z@ieW0=kY#E{Xcm`XM zCxrK(PEexf_SS_~FP=3Rw5FV7E0@1_tLBje7RkO3Ls)H??P1P*k+pQy_}0R~&CR_e ztRpe3!XXE6c9tr291IP2sBYsxq95rUlEoB*v=l$4V0`h9I2k&{XLXTjF#M%ymqSKX zl&1ogiOTulsj#vgz<}T$`OB0d2Ge~uJ-3#_gR0EF1GvE!X>WqS6PMh%*CCUWjQ56C z0g7U%7D4u0Pa~$5ZudViuR3hxCE`k?4x(_|O%hs1NSA#-)s~wK-s#}1^b{}Qv)LG> zDlzuZ%uV+nACx5a;T6C*I`+*4LSFsVGbi5YU_$&C*oY|(a?qL$hpM#~fR}^?eSe`s zOj1}TiVc5@WEg7gc>4DE!_RY5+O_O7nD$E|R)HcDy7g}~1d21J{twUrjN-<#Im3Nv)&HsM`!ieNBn6*XgwE92 z=lO65EEjep<||bhXhLcLbIguxpoi+~6DfUS%Uhvnr~VK0*&v=n&o={`9p_(NAwrxB z!5FeVZu>r=(Ca_8F|2P#n{jwF85YAET)(<=Ai_r3LH$M4AD+P3`YJMiZDq{Nz#yE* zaP~Ek3$+w(Y3dCj>KX$-BP&)_Nij_Ha$}J^O{b^k6xGm1i?h5UClhU9r4sh;2sbJi zgFZ6mzSC3I%?|5F)p~^BE0OZn_AG1f0hO|e$pro~3o4a!a{GrKWcP!x_0{Q%GqJ!~ z;MmV|M9Z9hbRrY6!ER{eG1(jM7wI3o>NUcF3Tx%cdUMcPdw7DBV!#VMszhN*7(Glz zePJcN5Tr5n^S+CY`?9LJ2TqIa$SAfVr78Sa(p<=xmDeTTsSoc;O+NtGz8$$5H~uWm z^VT)Vyyt@Oi$b%$gw&UeMZ&|FR3iRZUDyCEXJN13UXYqT&YFMjD~3xlMj0kD6c|M9h?g?CE>yBQu zlR4`KE$6*8qgORcT<~ggx9Y$Y83FGpx}D=xsnXbp+-IDawDSj5Q|Z$+23X(}K^!T) zu?G~t`-1Ue5ku%feuvrgspCL{XvrT_wM+=ftR|D?7J4ho%F0y{Rr%lS(vPtt; zP3z#POJm7oN5f1k;;GDStJX66$BEvofR7pz?xkAu(?#i~g1%nSXdkOz4TL+5;~bVZ zNgquZLW{K+C3TP4jbd|f1gM@2v~dKQf&@tDxTOnn!i0supuIrUHjT#zd{~fuwr>9r zaDp;gA>DFnOvIaWP``2;iAo0$5vT)fVid(<+@omE4Fs=J&=kIJ`ncRPdRH zRZFYa8lOW@dqko0l|QxRx$o?NbWnh$Ch8aq3vE~66;8V6x6hRrCtuDp(3pm%7#?2O zeix}N@LbFmyvW% z>)MJO%;O`OQDUGBg68qnX;9huHy-7NK8WUVw)VVb%aJpW$K9bMK4HnlZ^>DEL%V$Y z4|N4Ll`oe+s(gr?-rIA^T%PW{3;{Q`D#tZyYN>AHa23f{CmVTLD(QnkE7~x1jg{JE zP~Ptwv#5XC_!i|Ha4T}5?uQXSXf){+kQ&{X+pjmx7k~!!1;k?k8<#_o+8R#7L65>K zB`?>v!mGjMs9&ExF77?JfBDxqOT>Q8L={V9%J<78ZKt(14nqNKP~Dk@h|44=e2Hci53gp+ zWB_yIhQc-`j`+JD_>R)Sa3qebMs22HNNz`Rkkij(b#4w+pTE;GETE9uKJ^u>G!i&I zCiIxVT0ewJ2tW*jVK#(e>>^k|jHl=J^H%K%iv2>V;?pFY-#0Q(R%sVGDX;hH<%xT}>D|E3 zm%No9{B{9qhDr?U8dc1TerlNkN?AOr2fY!EHv5)h2;H@Jy`})AC#r;HOE)M)^CHE2 zZHR!{^o0qn3cqY&8BA5dW_vcc>iwpHLS`vhV^%^)4~<_Bjo)ASAJgDdyOiojhoZpl zymFoHNW8XXX@HGgkrldW6{uo}-)oG#-U$oT8X!ZK|FL>( z<>Vh*>}MSy4fQf0R)aL2=HiWfr@`+E*6aZyR{#wdn$yWv{!ok*EzQn)_vB(&bp6fr5efnh2OyP&V}nDG3W8vrkI zp3fK)ESngVfp~;jH57Gx(%i2|j2R~*XDHQQ5*w>3sBJXOmd)GC@)*Mwuo;U<_UkJ+ z0)b=~`&`QG^351JH(Qnbd-uWJbqDKp@%Mnxxe|LlyL7KP@ba?2_6pm93LGB|StwW7^{`N+uGFq7mJ{hV_pFJ3Bv)LjQ-v@O358=hVdj8A zCn@NI!gCF&3z1{ADAsno?`IaXtIkabZMfLPo3|$7XYq0DvGVuaRg_$4_HQn}PztU? zu+Ez&G!jV*g_n>d)Op9kG85aAfLrY0psU-|`dl1Tg z+4Tk?@~@L#Huc4woA=^Cakjn!q0yljHy1-mBHnf2@;PZ?sZR=8#qwE@`NCD8sII3Q zNM$Z5Hbrw2EX6)Vh)|cjl=b(*&xST)>78J8IcOoil$LZ?I)8xRL*k8g6Yz%-hjPW4 zc{T`PKO4FFid`j} z@!`jA>&zV!zr0K^@;*YSma?#R*Z$hT)r=j+0jBQxT973nBisi zC(T&IeEqReA{&^a+}5FEWK_^u@+}uBXfmL8c^>urE$DzkK^*=}uqoZG*3-bZu1{hm z_!N+~c;xm?rr(O|*l4lAI6UBNLjzdjzf3WI@Y0jG>iPjlfG0aivOaBsMq}QvktiDV zKXS|=68yO z_R4sILqF?`i{u=bghKTq8pz^~Y?cCxFUPxB~xmDp4>gMmd+9P(YA z(|Gd@vw&-EuJUMOQn@-o)Agw{fRh?_J@F`fnB)Cq>+Gqs%tY}J$%40o(owrwvkDLP zL0L*l$W0_zTLItQAZr{p+pQ*wa-Hgl)p~GQpUQgH@k6_n5=myG{{yB&4LLtaK~zIm)AroMqmU+ z6&9W(Sq>hdUCjn;SSQEPJ3qz5JdF#b75jTV1vZ6KgFNK zvv~#m@&LCxN!Dh4{qadBY<2wyP8400VgZujzcqh4Ih9ntyrY&EmXNmo-=RpphI-R%jjrl!7lRoG?d7{%oVJEo8=x%Op^^61_iZcx*M{` zfu(DHYG?xCi|}Ho41q9*jOJ2VwYUcdeT)5tA_!J;m3`X0IuBvHM+6RYoEngX>dPGL z%*{+eols3+D;}*@#9oiUqj-J2JqTD&ItpUzFJa+h8ZW=7+$mV*<2kWZ|FXeyc?gKyj|#IsnMk7X_)2Ih?WyWN8A#gD8W_ z*&9V6Yd=qmqKgF&RZ^%#qJQq3jh6^r2Zx2KV{geti|!Nq9SC`vZU1%hD>%AO8u+5n z6Pi%#W?fD|mCV8TNHka)A}!O+6m^33jS}Ko+v)o8K?Dw?vN(%rg8r zK!cD~!b~ zxoz|O2O(JQ)m~q@NM^%5()@9PJV%DdT`=@yEYbIv9ZhAh`sgBI5<1VwC~7_W zGf#!y(;yA2Xl@9s@H)FE;6lDEoMEM)pq{&vHOhC>{exrZSWvMc`+`2__go2ow}Sm;kZJOKN~@5Na?wW$=Gjn4;pK&`|uZ z0C(Vl_GarhmKi8jFsJ zNe6Lc>CNF#@VoHO?Ik=eRRTVYgcd+*>xp6q8W6{v|C_X|3676Y>|bBmi}gZ-AM2f7zlJlubWMRdN`(118vkD{z_h@jQm=HHrAQ6b zgBlDUCYXLcbT^qiAPGG^+R7Zt?PG^=a|A_-8ABPCiN1$AE zOF%%L4{k57#>31npNb;XlA6DbHQXm<$M7ra-YkNl08C)jA7yy{@t{7;A#+sq$}cNR zl{(Fn=VSMD5Yxdp6Vk=7-+ZZ2-aWXY5>o({-F-oqr*4|N3Cb7dSE|o66SBlI?2g%% zYOHME!h?i9DCh+RStj%6lq|CICd|CBO{O7`4c{Dq#sTjJlYl^RcgcARi`eHNm%m%y zs(Wdh)KDpar?0?+N#SX-PP$C23s>Zq1Eyd_jeIHuEjM=7ir&D9$?0sAjZ-7dCAyt4 zJ`&Q?6EWfmKzJ-TBu&50w1E^J5J(jq<3X7S$m_+=+I5mlv9Q1uFsk!DsMh`STjd-p z^q@^BotomROR}DnRfTzpUQ%`UFeU;m%>EGM(e($Pw2U>F3{*hfjfjMF&r1N~(jvWz z8g5e{>cs;~9kQoo5#q1&Z_%{Sg!Jy=Pd<>phxFDkXo~C#O|8s$x9U?-mS_}5<=Y7< zmyO&NKGXGy7)6%lOh@%s<$kyDPDE=h@lg-HPD+l-mAbzErqdw-1R5H zxK}rADZ=OL#mvF0*Y(O0XmU$4v`Lol)LuB<5$@f8neA++S;j^Pa%ML}!0%P@KuJ@#aO}~3X=kI=8G$o=X>s?WVK<+|} zCpA#OVF`5pT+(slCu+^V$i%6mJ$U)g0?Q)Dr|d1b2L}gDWlD13XM?LYlVrb;@7kkKqNaAtJ}xgp5yGYfyF|;_ZSOB@gA#m z$A<#oPY~)pJnZ=BI3xbeV^R&~Gc+*)D=Q{1^w}N2 zgAU_zf>_w~FNa*~UXO81e4s`AIH_!}#a~ZLa=;>u8ZM9L#^^8Zw~3%UOaKNf^wJ5) zBvmzH+G>6|Nb2hoJOVBhY;1h!xNwMJ6i?AiBpg|0luA(ql0m)CBeuZJQ^(O}$A-7C z^j>;OhSoAkKD3B@Ez<|Tx*wJD0{RhMWY-^o?w}J9X;D69o<&CZFG&M*??m0?GvUqa z?kKem|)`b1k`FWR=HmV z;1Lk47*mVXEbaAkNnvSYy#G^i%7;#F?N16ss2A zQ9YTO?hmm`z90vG>XXoOQ=(V=f`aWpLO3ufpy>Kfb)zp4AU7%IIcXi|hxc~w0 zp>T0969`X*P68nz1)%j_3CS!3xW!EboDlsQrJ@i$Sa+FPNVTH}1%A21vHB#7dC~p~ zd&g6tQz0A^7YAcw?VUZX=f)^6s&RtAhZIrqJQYL;c0uy6B13>w z2d-HN)1S}rTYn35gq*Rpq0n`k9Owg(k+CG!6teu8rD83$NYdHD!E8KoHI{B8%L4Qd zmJJAE!~Fbw_qjdqdY8LG z;%ccfV2tY@>Y*N<0f-omFpt#(6tV3*{w~ZVW~6TJUIH0kY^qSZum8PuY^!yCZ#Y0v z`DE6(TDqdI`__>IMpp0?#VEWXL%I;Pr;=+q>`si6JoWc+kYIhZTYPX(va@3%B+{ul zWe4Se8Z@z&X(w@^8sHPa5Sf$&78_rjT^hI_+eN)Yqozz0eRb3ch_GdcKo{L5B%42UglP)OWl_T!G-;# z6eWnw-=+rq$Wl-jZ6L+|p&>A%^=qW%n0s+u>Cpo~0^()H2#KQCHt{ucXvgy)+EuXfdn$AvA6cm)I58KPl z_ZHCRkYRJP5c@Q28|3pJDv&4`KZc^;lvc(D69F28g0|x8r+7(93}wBqXbUJ$Rv{ zf3k-$L6d(^>9YBXX};kiR{{5&K4HFW%T>Tbj4GX#6QHKXX})={^!+iH2z2pa(Z#L5DuE}UV{s*K8w)wOD4z0VT<>koL)y0T= z8=F&BpMyT0+AiHA-mE&En6GKoJP!`^5a0^W*$lS-TqM)fv0V*@Nz46%%}l)o5LY;v z8lkSPu8Q)zW@tiA z0{H@ztIQ7bth$afEB`ko&?djEiYh25*lj*@b8_zVz~%Nf*_jnm1b=yJEAu=~wY0#a zrvXqLIfle~XzKrh|az{rS4l zVkgRJO|*cLroj)$e-4an9D1u%3Pyc?AIG1Y3KbpkmLa)g;toh9VR>JF`A`Sca?`im zCR+=z^TL|EAgJw7Q!~y`irD=u#aksG%Y#JM{)tCm)dz*P83u175tB!N3@afmUE$B1 zHWpT1Uhd8Z0`;wO5=r#(@4kjhorX!ubzT!+1~tHvht6|3uV2f?olJr}{e>C#a#G!O z*}4!*yL|Ckn60{dUfi*y@;d$$zE6VS(~!qsDshG17x$Mu!Ii40Uu14{0NS~8YpAkG zj!WZ2Gn_Pk7V@MeB+B&f4&B?<+HW4WdV!SRKKE=m}E@w z@@)iGx=s9}v&>fc>eApm{pQ4I{J9WUXLKXeU~gl=eO%A|4NMo<>vVb8_~gY;15xZ! z^crw(YKAQUFf6xhtEkS6UoTh@GT1tIFDfrbjGnz|%XW#!%MC!03$U*PG!kPi`7~RBwywApSTdC^T**Ual)qET9_h<9fMzgT@?K}|%X3 zyNDH~+ZX=9#|r9o??9*e;rZpXU*Bvcyfia{)YMcv_m4d0H$<}b$Ed4Yc0)AR*6Y(IM*eL(TQG@*GX+HR0R5Q5 z0NX(4Y?fla(%_Z61xx*nnvxmeDR4+r30!}q1W2b|y?8mT5z*Eb&a1AX``YI55!3mE zS~HPzIiX6HlEL0tW;vp0uv-Kj2=5aRM*{TI*|NvH8s@(DZ&TgU-s!0qs-!0mbwynv zFkyxqA}Ktd%w$I>l_zGHKNuDj3IM5UX(0eh?|;pK{JWrC47_wWI0E-r(^8V7V**xa zH=iuO!_y&aO(2JOb9Ob5qDgzD28(kNlWMiK9k4_b?fl@q;AbM7Ws}3gb#OBtaX2YO zY_D?^r;>W)qUd75L8ROPeuan`QzT18xmuD~Gc!XQ#L-a1>dYPc8$9;YzToD@tm5je z-epY}eK}q`>N@I_`{TDPPq+F%ot?)$IVEJ-8PK5uzVJ)#EUQ%Kw~WW#ubIAm+YR10 z))Bj!p#6l6D&XmTXHd7m?IcjI`F62xZQgq=@GdSG{=m^&S;`_UHVpb#5_XxSiv-cY zxUv*qTr4r(dWd`E`oSM#`Zt=>bGI(QYwnpJn>I(~`&+$dSU%S@wg`M3{=8syBaxr1 z@lkSNUkaPKfa_13Eg`I!Pt}b^mYEK`+a6gto<0kprrges-uO}2I_`%uWGGxA!jRZa z<2vH9)ayYO_X4iaP)hCVLVbJt>K-#kCcv~@an6A8pdWa~Dk~e_6JC}hT1?x%md>+r zQ4rxL{6m=o#zMF3OnU{;HtuVk-SsCdAuA36t;Pqi2OUw?BAm z+ba>&+zF5t`9oJx6~1go*-&Dbn0Q_s$Q1vKrhy=odIds5wc;{^A$pRm{Mch2YSC!f8DxZmHB7ui(660ntWV_7O7^q;5q z8TyhRfjYH`9|dZoz@$gmbwCJnSqGUh<-R!xW*K_*;DwE-4JM#l3{2WznGJZ2hx;ky{;3X4GkY&UL*F4`X1cyfAi6wD@9 zXo%#}0*-+#V1GfumE8J@4jgwX)Aqf6Kaz*~5d1{A7ZF9)w>I5>J;!zLU>}mZb8SO~ zVaNZnm4f|gXQrYuAzn{wIi4jthi6`-2oUOO{vRmJp1`u>W_O@tZa=aO2!#eLUk@>_ z3m+oz5SPo{k@XN*XgDzHy^sa;!+;gG@*E)VPzJ1}&+Q_7;?U-aKLgV$d+eg5@T+gNb@r#Tz#MeqkP*Hsbw&M@UUo zOZQq5R#9;p&N`T~W7K-7U1Vzv1N+Zj{De7iy~7dStF6XW;yj;Co-c|7B?4W zKsx+8c}u45@*G!PR*D?Se<0SvQ@de9b`R0ecrDT#@ztQYx9RQ|PczCl4Eb-8bNlFF*RFk&biy$Bi~YTZLcV z3pw@j^v#c=|H3-hP3VEscwe_VI~?~WG+t&XT#^n5z3J``0(Zn7HUk3GR^ z%?9HqpYVMVnz<(BdXLZUBDxAUd~NE{u5P>xS&)*+*d+sD1~VL4x$DX4Tu~cNM22T< zY^>g~;{pp1MR{(#XY9BY;?ZL|`|*Yzu@U5BAsGDoH%YG@@6ac<>sA5)N2{JH5X>Vi zhh$bdt#{*YF9VL=s+pNTMPE>a)R2jVl-oN2fLQ$Ek1ZYdNGX8KQ-NJzfKeRE3pZdt znq&6#KHY7qN=7DfP9VRegjV3GTXngqYCP+};7B1JDUDGJGl7Mf519@+=ZBT(F@&2( zYa4^9Z_9F&9Ia)2!ewSXWo==9j2%8vZ31 z+vOziz&NaG32Kb~Hf)+ga#rMn!-F`zZp;*^G~l@Oka32)1Lok@7*eO^<^$d>T?XbcNFrQ z-7gNLX2Sl30)xEepGB2Nl#Z^{-vl5PtH)Z4FOPh`TQqtc5OOj+3R#dP*U=L=U6lhGG5%L2R&l+oPJJb2yA?3};FOIK`D*Xg(Y|GY9)vVc zCXc@6cDE$j;!c-M|0JqRv>NDPMeRZduCuLhuiTVRkl4ddJLGfQWhp(TSf~tNtp@}+ zxMs?pV!JCjI{^`Juq(y<;x8Rbx6l{l{U|=US9thPE`Y@T>UbjhmF7Pc7GmzEUy$NP1 z&+_(|7xnvRPop5HWQ&FE=%JIVn^IIp2KODqM##VE-+aA0UZ4YA^6$_t!xy-Jz#J(0 z-YepLbVN77Va{SWvm;GH44oIAD+-=d7o%Vkvhq|b{9L>0@yP=t$~FL3W0~tSrUKLr z)@K-E^Acb~ZxO&H?OEM4+9lsL0`4dON3)tpjY%ZXJhFlH=pOkMHQH^wqS=$xHvh>; ztfJY{rLcfo-@s^S#ERB6<|hylA={A*Vi*jkCwLE_jB$X@;mCvOSkl&nV-H*I+aZra zVTJHOzEMD)`uE>wHekY3gb?uJX~5sRqciFg6=`0k@zI}Q%wA1xH~xxtjMl@)Yw9y@ zCNdxnvCynC4xes`v-pz#D-;>u4b(WJrnW@^LuWMEX7oVih1`@B>TE$Z%ckuX_lxC_ zfUa9M0n!~6X&A#fa4k+irIm=k6oN>4W}-u%xP?R?Bdh$SL%>;Domr{ob&%VdK=~pS zvC@`3U%R6Xb#A8+BJX>DQlNpqL+=gyDxnPIC*8C{@ctx1@Lmf@K!?Ptq?9(>`|n#r zR?h%|=emcp&4}jBCv@htD-<}mr$$K{xveF}bW||}5qu)y>DZ-`0q;i1X@gEp=EX#R z=BKAcY6&^dogZ}l%lM46+ZjZZGxZhAm-}%z9Ec*3i~F>vE&xQy)gxCvU5<0x{(jG{ zqi0RH2aWBCC1DBGwXWnGI!Ur z4=+w3y%VvO%?G>{+vSU%M;qU^y^AGrV2q+w8|!d!q7<@%s&GV$e>2gmbr}!(v8TSR zG?Mmz`|GN803v19N>loRj)VKxnFA`Ssu4?v9T6{l*ZsLrEVgu7LelkykfC7Pqh#o| z=~{N0cvYk0-|v$Z_CHAECCzbgxV_l?3jy|Qk6t@-=XeqgKKc+Q-FkRh6u;Wr_K2TK zI6S3P;So5GkB_CelZ9bDxf9*l>Sofp-ieP~S1T>bD=LQCHMS((+^V=IwpKNNpP4H_ zBK+fM|39DDZVS|T zt+g*qZnIp%DU!tS_JKR@>Ce%T(T7qRU!CKxO9l{2o~g?F@))gTS#?Hjv-aS{$u@}| z#ZJ`iv_WXXmzHfQ)^T*JKK#Bvhk5ZAg5Nlz3hHK}xD8$ba15wEb8q$Oo*Q9g0dG#r z<51rq(RcraSL~3ir>C*K5$F%Q{c6_gz}x5}UR)B9lmfP2(S077{{xas!kk)S>SXse z5Q`VcRT41?B4eYYQ-{b(F-`nVwxqv*&v8cmOY{As^!kwMGm{BwE|_ueNurVK{rp<` zQbG}Zd+_|h?LXsh=4~7sdJ%<5S%r*C1!W>)f~9=9z3d}1*kgTufS=7A&#zxTbf-Gu zxhDrMu)K^KxAHRI`5ajq$6i<_uQ$|bo`z&`SVm?<-mg)Rwh2<2>{j`uYlH*=e=dEo z)x}LK&p1yF+q@Rny!8U_^KgdeFn$#i97%6xwiT+k%I_fdzghrJuvEq7=Y;2tdc5s$ zi&4&g4GoLJA}f3`G%QC|mwW9f-59BJD~)Yj)75MoiJRc}Bf@auaB6?aaF011G>y`L zV;E)+WOKt=;v&h%05>%Z#@HNON8o%b-7GT&1uC8**fWX>x@i5lzIY1*uNUndGC`}$ z#o4WPYmd9H(Bj}^9fjq^Z`eG3kPK4aJ|vbRnVDD(c3ok*=w!g64;=4C1`lY@e%_;c)bhIrF?cBIu?mT>=@`XD!s3Jei+PMQLn(UZvOT6lIuH{$3@!yWAAZU6p zN51o3 z=c_>z9X%;hO$9ijo>kwFGd%}Tp`@Z9ZfaW%?b<1RU%`>UCy=^h-~BB>1WP?L6zeLa zMeyta(V|?8VuFmP>x!F{6bg&1J-|B@AoK*8#SJ=8xZM(1cN;BH=u&?smO(FaC_%qb zu%gNZjl7z=o}ok8cXdbi&B@4Pbd%rg_8 zx8(CVEljaBu8nM)$7*tvU;Svt=eKzoV4_6rZ2_A>V5t<>nH&QDa})V4}%dTxq#So_C9^v~TTCGAFWL=20*mo>Tx7ThEB_ zDEWWAxVm0vOIl{qk6WyqE{d#9dvG8L7w2Hk8K><WV>~zwuznZ zWtdUB4l|+mHxlEYo<2!r4y<2>>4r`&2FFVqU@RI+EYz*!7BB{-x@= z=t!K*btf`1<@|#GCl){o`l(Z|;mgMI{2``aD9y=KE0l+$UN{ zmzW)F!Oh8iixyBRp^A;Q{OxlwN`mg-WpmKS- z@XxhqP&^2GvW^3V9K@zo7_D5~*Pt*d?(17IwP4hAqYZ6&AaG2dXRnIdXmLJ5$O%Sb z{{bQU$v85-%{qqzS+2D++q|!Ul>K72bqJo4eJ^`qIUbNxlCT;bIIxv)3-$J|azjb&xS34t&Hq zRrwCKG&Rpw4G;WMsizkuof802(n#rl;3tt!X1N8HKpI$rR30H%hUsmWNAk3tQp{7& z3njr*vVT1=f%#7D_gOf+LVB^sPceeoHN9Y|9b>Jbfur~zZTR!~r^Y%-_;gu{GBW-Z zXkPCF>Eql>h1<+V`4fCQ{Xbvge|k7naJr<#Zti{fcRMiF_22sdf9&T^4h7HicEbLZ zcAt?>!?_Stijsjk)3*(`D}W4 z3uR@3t1$%jkZFdVkrA7~=sVAi_Xa+lBjZ{a=KAw^#-x!Y+AOfcSg#lY*~EZMz~|`M zog~!lc4b(`GThZmQ#c3DCUTOo2FU3hS^VX&pgVMDOCa&}eX8Kf#=Td-+Qz*blp&|B zOvv;2xu%j!o(nt57O4G4%?5pNC8_2;WPh1)d5?#8G~3wx)&vKD=?u8id|L;`EtZm( zb(nrA9~4z7bFmVLtNWM;`nQ%b%T<>)*VfL{nH?&Ywq@Ln;FL-1`&;y>D=Z<&hhr!; zb^k)Ezx=6b7_J<#_V1*BT!Tv?!CF)6=dW?MHI7fN=H)ikq@W(eEVTJi=tgW8yO7F( zkVzBXBw%%HeYjpwuA=?gVMnm;bwcea)Qc==g$5Mb7~cI+feCpJ?4MuwpFtqpq*gV} z{lQs?;IBCq@D?1p9OSobb(KJWlN#>O`fzQzM9=&hIWWAzKlTp)c;Khb!pG2Y-_8gB za@C?455W+DZ5z|7Rej1fH-w+fgk^5odzJ@bBnw?Mf*g><+OI`x*)aJf5uRP=gxl^- zURNl3cHXPZ^FLJNZ|_w<;EJUJ(6JQRXV|K@8e%Z9FUcQ=?=BVVr#;6LZ_la#md_rC zO*M`tfL!9?v`B*Y4_?h`Bl)e$8JP|wS}|v7F9le5D~G851jtfokvJm>ZhLJ$3@_dj z50|_g+wnpd0j)Ce$*c?MqR|gtqc%g2w1YZKXC?Ia>)2b9xpQ1Oh{@fntuXy*=>7^6LHH#lxGTM;E}ArMP+8Hi-hj zkrdL(zIN+c!qihAq6w$zzr&XkjJF=hO!BLIsz)mqU4}y!hjVdqN;ZZ|cJ*vRZdvHg zYR6qSs~kgZ4X;BYDdk2)g$1mbKN#OF!L0d@Q7FKocNcZ|DMqT%e1p-VL z06+M#h=lCI8Z)4)>$<%99^yM&;w`>?V)V3rw9Ypdl<6Sq;9m<6pg(C9y~A{I z3NEHN^Q|d~0$;#*zMasAz9$8qmKv{OM=}RxQQ=9^(px;J0-NDBB?nBqxgZsVXKe+lLy_K~hx7%GL*J$lGwP$Y)Gdce) zobOUH`(jbT)(s11B*dql_UAtTu>b&f?YH^2cH@zFnugqcJ^-qaG@zmp5}`qu${`3g zM9%UkkoBV;N}y<1>*;E*d5ZrM4vAbB!Yr3b>X%9-tSZt?;oPnZvtyZIc`cZ z6y{JaImpNzkD%YVaF;0U53#xopW>-guP(#qppPyPexHN&=a)>#WAa+4<96W#(#fr5 zodWUPIf_hQuJ^uyyWz5UK%87+*ZMOd^MrkJEM84+*$R*2Qk}&y3k{ zk1pC#6LAUmT#TjDLN!TUO?s*xaCF9}!ZJQScizy)ZI!`!YBlkly<#1@b2lo`h_0%5 zNMjy|8oqF{b!^KrVBLtlAYwXA81Oh-aJs&hI=Q8=6LuC9y29aG^9<;dME-QFOo7P( zzXi0-*qqA!_K|FV0&1rPjjh-@z6WFQ0FNK6DCH^iuX#9qB$=&E%&AU{DwtyPzuG-z`-*~fGjl|T;k z55jV~aiVL^!r6SRUbsv^Wo-SHoH7YCh|br=Ah`vfxJUy=mR#uoO2q{XLrVoX_m` zSlSvM?Z$ER?W~#)soB8k$& z1%vs>sF>bGAD45-kXxNymfl!r@-6k0k4@OCR4t}$R)nXyDQcL5dwoFg1E+|5-h;Tx ze3z*WF>`KNU<%LlTM9e*gA1jm!iRq=6ywe0Y`Fj_1qKd|2LZuue1C^&c~5YA^+C!? z<^UhIDAvvCJe*};(GBb3uH!{j*ThUNE85yD(C_*PiTINa`9bSIZIt?*gxY8N^sJP_ z3gnmu;s#Q|9_z25ilqc#EM?-V?71YN+?`aIgQD?8!$cycNCZYUr3{;3IR>xOxPTgm zwJ=wVjpW4bh9pQ=CvRmBo;-*iVeUrU}BbR-%&ud}-mP#&=ys5xlO>F{NXkxXh z-(Y^(k{{O8vY9h~96zsdxji^|kEG*hO!Iq}VyeAg(6PF~_fz~A$^q;0d6ut^FUA8u zN0Qr`Oon|>%^>Q2XvrD9w>kZOrjA5Dy!eIwp`4jk?`0IN{Y#*fqKFDN?404UK+VYMUHcWKHPDX{l_JI5juehmLd ztW&U6Q=B8uU#M(0G2a)!VlC%wiU89*a}>J&+wDDZn;Tx3Ncv-vj~S-Ea||Ki;9BncqnRejq&TYD@OE( zy~i$ zb!yiaHLbr~R^~REea<6SWX|NCoc#n8->lY!?V(=In3ci!W2E;acc|H=My$oj<{N#^4g6+=4_nnJIx z{Pjts;{6^vDqRiZFfO=w3=3MiHffu88Zkgd_W4{Fcf0q^cBh#2oi(NfWNgeGzgzgs zeLY6UXWf8>PCLM#+_3t#X=iNRV4(iZci_r7kmYxa&10D~>wm9w{O^^+e;G*{@#YO9 ze7>T0UPU@I@#4A9)jMQN-gccAQK$Murdcz?Fj4*P)!NP&mzI*~H4;44?_BGl&f=L- z{LT;M`?H&tWWv%>oCMxLF~ilR`0*&rLk?-U%S5Go7~eaX{i|x_)s8o|aIw3Qtx%j7 z2eX}iKi~e!I~L5S2-K2nONIp6T6!^4Ec|nDI#c=MWu_&BST7(n#TKPDri4cM7lMv*1>U<>zjxHIW;zl2!>Cz+I9mDjf5$sFHSen7gFby(l z(7}8W*cslW?x8HR9+8sF6=yGezuI@C-ea}s*>aY*gu zfPwOQEZ+Xts`aeR!u8<7WqT31HNFsjHK>aj0mo=b{cw2 zTD?=zsabzQwROzs@p#2Dhaw3YWuBPaY07@N`i=8>Bxn!$^{N_a{&{TZnV(6@%p74R?xLkvM+kZBAO{pYb}Ht)6|F%~9L(X+^|WJ&0Ea zdDRnCNS~$n_fC`J$^hK`OSCyhhdm~8pIAGG{Z-}!w!foC7{sv2PM5DTf#FHY3xo?c z??RFr!l}stRQ=;5MNsDbn)10fV{bb1{45$UvMY3C|3{tF){V2>uJbd7mP``{Zx z2S~f)Yl~XrfLXhIwAG)8u?L8({KFjd!?oye4&7#JZghaF-Ziat`XF9T+fNv{GG?-7 zp9RC$r-PxN19jM#t|5U&C(e+0YmI&1gT%Pvl1UxiqK9lO>FHmkbjG5U1_+p)xLZ9b zRGOaf8iR{O!o!0<5l9-7h{>C~cS4*#B@HgDrhTt|Qy8g^Oc`QB zUpnLl4^F~?RGD&(xtq0i%h7S%C*6e2UF-d|0_H4)v4xE14sMuPu&zr7V=g~KOUIHj ztw{cR?jUPPlPlGp!>=VyD5pH(i9rTg@mXXS>ntPN6Y);zsB1dv->+v4gnZ9HjLf)U zbrR(m&D=}jdgI=y&f~bsnZmQnI+bUuK2v=ml4)JkPsSyQ+pk9n%73`TPZezE+vgI; zdY*usC_P3b?WRu-2G+$lp$p5Bzq1U)*#@}HA3@oA*qjDZ-z0*AM@o z9aPVVGrt#Z&JYpLg2|6@N?kB2@kx16_Q{xk(wJOYju<7&@$l#w6*S)*LeJ+ui1N`n zJz(lZl|(B%h!+H7L@t;DyNvlk<^{b#EVH9Owr_h@f^ihiTzJ;NR)rvc$6w|J(5ttH7;pJG{>8Z5u87XD*L8!^g` zyx3vYCcUdy>A?Tpu>uu5*0BC(dN|epadpnJ@ei4=SJNQ(P*izgd4@wlXvpCx-9-@kR zdf+(*OH|5D#97*@w9`^K!&=v)nap$1MC#F@lA7_uuY&i6T75LL9W)yl+#36=k@co# z8xkcQ3g6$Z_cxRh5co9_0;RJtmp`?(alG&ZeuCf1v8`BP*1CK@Ni~OF^|%!4I5y4X zum{q8ns4d?7PJ)~y^-jY7`kZ}Jz3K;!~Av72yhqKc~k%1uEDz>A5d1PlZ zvc#rqGM*Zj>9bB$BuWuW_i&O!VYM*Xkv#NW@Lku_pPVBz4a=clHO?uMK^{BpR}PtL z%tZ6|SfnKPd^tp%`=>5E_TG8g*3LJ(OPpv7ERs&dY-E4M&Lgj(at+AH@tUWhY+M4% zH-`-)F8c~2X44^;v9~7#h@2TtTR<&n96J#6@k~yX%Kp*)Lo>ON4EC}ufBbp>ee?2> zoi@tVX}%&h=$_|P@oE-afydTnT0~G?p93k^*=_vgMe+K+(P`(Xb>s0yV9O_`>2eQz zo9~BVV^h|$?Ltssy`8HIWf1IPHg)2C9|`%FHzr^t;gpz~2?QT4&DcI#87o;cgYStlra z_sU!aBv&$V9-ytVXtL7+6&iH@$P{nP51 zp0bP*?W8}0&+&bpAU9R#4{c8(H7Q!v+~TawMNSv`*JD+kv$>X+c6rjKS7y+Db!_dN zdEgPA7DAVeTdKpE&&d*Tf$g=6A0k371JX$(o8H=ytJ7Lab>W|)(SHYS1_xV+IhK9i zCry(k1kf8%Mm~S_4e3}QAe_uR+D$xCUjFlOW%jfg#&kRP2X#U8#0mk7VutHgntJma z>H`Pcr-=lAY{Z~a^>0RGTuu+ap2DV?GSZv&gz=~}5ui(-@61bAAdjucr5mk z!|P|lpTMxG(!4Rv@_+i&@Mxv=?3O>H3uKnlMCN<`3Ph^~+i7Yc+3|?eQ`IMn7LwE$ zdqq*Y@%TTakQ1*|zH{??`G-=3p>-7S1-|=Za}TPxOLgrf+`Bigvao?p9wPQCa&n{O z4xdjXNR%z7^#o4+sc}UjtiN}s!Eckx+$YSj7PFhO3tCQBuGjZ&N*`$82hnQlea)7g zVT&Qnnh^Z5_boFsw+Vy`@p&&XMvG zDX>P*B=@KEbXwl!xB7^-vM^s|@a=_06$E(ixbP_kY$Y>clw0cqc~Mba8`OOFQUnB9 zyOvVH12I-CJvX)PMX`-8XZpNtdal|2%!BojJFcNuvy$^w$PWBWfys_1nh18$8PA>E zFmzEYiu2cx8eHq^UpD>wpZQG3X_@DU}wnSGE zlSHE5ULs;eh0Jz(Qsk*7-iX0PDmfy4lSE8k+SPU`a{;@KGJLL_RV}hCuHoVB<0sO* zSvPB-f60LP`e{ysLfvZTB*nY+T!=Nc6MHK!r644~)os(?A|{sI?O06_%x2|JGcsMxKvruAI*P&d_k4tk5-)gb+>T=4C<*V9{O+!BCJwjcs zy-p_Zl80a(<}D0aQnS)7H)4yBJKe*M@il zK3RI3#-l4C^E7?b-AK)C9r{3+6k>|tOxCU}o+PV!RLkBXZw7cT;lX5RRpb7{Y6T-V zUDPM22L{f|TVWbp{#QVAACOY_DSOb4EUIO62&ER{6hA4LRk(20bh^i`d8PF@UE$Ju zqBJ+fNPn25y34};m!Iz$Hs-bRm_Or*G+k>r9ekI6JML55&(G-%%&B~r4++2~SvEXe zx(UMuMYNmAjZ93r{Peb%`w#x4*mJ zy9AlNwp_3OAo@AD=wpBZ_V#V`bkz0IiX?(c z71H%?1Y0nZ{dmUKR{W8n{@p6c!7`Oooj$*U(^VYLYvZ7?i-OI7s8`Kq=7{Q%mLy*F&-RN;gID@FF(C7Q_ftpNhVMj?c5t(-fjHLunUtH0a6u?~+4w_NDJrB>= zjQA#p-f493xjgbC@iV=>i*V(6@Tj-m;qhD=`@tzIWBg@jEz65_+D} z{uB$t2I1m0YTLycG(vLX>plv3c?WhSGi8@6(&pAgYB{r^(1zAz#AJ{6x6ESDsd#YM z1_fK2k)c)0i+nmFi<09xo6&7#80p%Gt~aqtzm|r&F8AZ$SLnByTgW6#zyQbnN?Cv# z@F!Idr4@!j@meN73P_epNg`N$$;*n1bSNFO1Ly_4q}n zE!Fa}3fdugV!=;f>5BceKn&R7$>kls_n1c(EBs^^ttvhb-Y;jQ$FN~;lVOe@bJ*+bk3$f z12t}+l{0s9%TmDHMs_RZF0&AypXR@aYV2e)0k{dRl(A|E5FRjlLv0+ zU8;EbKnri%+F;{?fwIBN*2zYNZb$YI#f$9M!MD?$%vJA3%n8e2dC`A!J%KO`I}oQE z15fc;b=bT*Y%GTAz)(R)^Wf+tl7v(1#{GAxT+5S?&ZC1HB4r_#>w77`#=+Gc1GLIn zPalK$kVdScX}A+v7JHj@Lrsg|$P@H`hyWUosbv^#^+kr6C{0e2BS1Ikv+Uxx5{7a6 zHdC{Bl7IzC9}i0h*)=(>HYVElHBOR=8QG`#+>$9aw1n8}YuUy=K6fPYH0V9QWe>za zo~Npi9|D+~f4a@!z|2~(DmWA`i|~A0PAfeSx$qzqtFj~$=-=f2UryJY2qzWyYg<8) zlcv4>&S0Q04wL8lB3Q+QaK7t)){?LFB@%DZ*N{*Mi4po=pcNvA3{#CMVe)JLfFr*L zFl-aD``J8wBdm@W8aQ$Rlr>4;M&rN6HC84kgL@&A z!96C1Qi{YD2Zg2kjOf{X13j@_yC;qI&3G}SmIsrLPnGi&X@HgdJj+QT?1MXW)d&C5 z3%BXgGwl7XB*=#1pJt(dNT3t`^;ATlF13N3{p^y>^qj4nP91H}sM6;m@~sb>W0exi zb9NUmK0!jaU+>yT@Pp|#dzvMnmf|YT`}7uRBa-mch~}PMEoW^1Qh){oqZ_zXG*paP zxe7l|+8dOwRSL`>MBA?%`_`*YO<(|yw79StAU-+2(*lH-- zB5^a&SI;%=0zcD6HC&F9u-}L@JRbJ&_+Pt;R(*0`uDG&|B5^nvXr74lq(tWBfp{|5 zCJbZk!O-Kwk`o$Wo~sONv@z2lh3%E4NSpjWs4A0(r6Y(E;{R(iVx{e2O=GK~aul@D{x-W?)gzdvw2Q`c-A8 zrM$L}$0ivPI8MiL=M6w7`LE*D>zTWy3;94V-?EplgGn$O8_Bz!2L;f>SMo1*a(As| z!}y^W@Dly zSOJ!CIioGx+HPqnwH{eFm(L~ciDa(xADItd*`2VH;L3Nw9HF`m9H$jglb)xWG9Msk zwcAUt!V<-iFTV2-u53weVYN-~Q_UdqYz^VjX=WY~gwW~!;mKC>fAc5hF==g`_E+g< zWi8!ajBB+=CXFCky_;g$wmyGc&_WX7lysWW=@||t)u8B#m1G}j6WmNoisx+}4T|_d zbmSVe5SRz!v@1d=E8lXfBFv?0NA35)Y%u2dcH^twO6z?#7#Uo_N;QaHf0^O_Cbv?ax_8J8{jGM3bF|7z%%y_Z%?a#B6+tJ^YK(*>BxrY%UW1 z(x|XBH!Vld&}?|u1?L!Q4us2^cWv|tu53fil5X)fTNB=G2pRO{^d!n)1m+l)u)o2L zuo{kh*Yu}Qq(EuTOd6d3E9S`P#;Vc|Ret)>31?IOpW{2-5PYz*Mz;GOKv!SCa^(fa zY`AAl-sT(8Ze# zvy_EzuVol4vb#6x=#vngeui_GIY40m4)EQ6fYlORO4%U(IhSX zyqSkb8}=7m>D%I+#yU)p>QzHPC-;=wp}>%BxzCpUX5DnoP*FYq@S+5RFi$$VcyO8K z+NvJLpT2V*z$3^-Y7C{+N*#vqGK<+j_d7+A`7v_YV&&mJ0ck?E_NKq}!vZdYEuI(G zaH%3(_i+nH+iobGenmNglhs1Q08oz;^d>;pohGZxOAnlkrT|wfCHNP&(#FIt$4tiW zrqFwhGd$>%`h+H3I~2n)au`+@m%_#?q5~N~(eH9h9#sbbI=U{3is*XXL-k2;PbG%qi zEeTE?5jR*+2v$_3htoPPYhG&4prtUY!LhfQVpbL;3vZLjg|WmbBY*)JhA!Hzwv%CG z62tcW0}uLS`Y+v_TiFftddt|>B)w47^FOP}m(145JzB7B=<93i&sKm^%P}Z)zU2Bb z5%pCr1;NM=?hT`V2cMLCX3~~v`{T?{y|q7Xh*@L??EurX$?j;!^e$+Fy5+hEB#Xgq zg5SQb$s;C$1&cl6HxX19HH(bi@y|GXi1|0=`n^QrB)JA_@fkpOKIib;CRNuTW0bbk zd^VPQ^n(3h0djbC4J_^y3Y;R{8AvGpSMd^6T7M0&JiIPYxif`$I#fNuN*A-JOw5RP z7GDdDyY{~K8GXBs;!IkbJVMUDS;G8E)!(w84YHo41;dmhB=G5J9kr&hF^xqEHv(wU zpLQ34EB*e1s(9d@Y$GdPL49$hemtCrjO6cV$E@>%KR7^bj(teVg0yZMFRxF$NXj75 zj((=#Kwl!|lI|JbS&)&w`arabYn?BcUuAPReSFZri``lPBDxti7BkWngbQ0GEY9W; zKM1{z&pO+5M^YA0XY>1(P5Yic#xvoP`gHYq4YUC@z!XfcSg@^$SYdeBTVMpjg9!fN zYvFiQM@c0m#^DRqkiJrigipFz-E5Hb8|7@@nccZ^BO}Ql8#6#)K+XMJW|CBj6qqQx zd1cnF?;n-2M)uiojnM2d1|D)2F^i+{mO{?oJy~0jIZnK_n;NIQdUx7&xa!_h%~HCZ zq2hY6UeyE#Y^$LU_%o!QY1yw_HIMZ0t{;|^g>O97lMpaN6O;Ad zKyP1dtn~tl&|7VmcbAl~FL_PAVOHrsFAF9kjAH|GFma1uVY@e{R3a@-{jw3v5uBeq zh*5GwU0sbgx7CX`AQNa4bW0Bws4e`M9O9(7?S>3>5bv&3+nFWg?j9_GahF+GD!tmZ z(jGs-g?1^FKRoSZ`FXQVX76qtZlw_wMNjO%>n@c|-g=GGt*gC8UzS4>|zm$S`*T*_j#vE{EEUwP~%8ae2vUG5C0a48~8!q$kB@K z-juFhn?5>LDbZD_py6J)aqXPU7LDsh;fm_EKHVP7@~JJ;!>CSbY8Sq)U`loSbHSLM zoJCc#zUr+U%(PtBG5X*5@>V-Mw5a_J+3YQK==8JPCz2#l+JCi$jUh_Abow3MtuGqW z>BMJzX#CfEN!Ekk@LLwAi9tI9v<6N`3~L;z67rzPxSYE!ntnZe6~tf-ROJI^pv1PCw9(sH`FN3pW(;s@*$ zJ2nQ;F&q`09y!eqCe-TQWta|ehN1&;(H;Ik;TPt>6=|u zm*1bFxT3n&FyO|Uk0*%ZK3VWSzHC+>zHA5zcGuv0)OxzzwR6HMtK?Uw3V7XBLMjb! z-i9yr^pFEz#oXR~F!p#HgijRMAt8-&tRX*aDCHl4-m2j{#+)g{DZZhSf8ly3j~d7% zdEYggRz_-dS3fuR*TMd`*I6t1aT)jPeUIw0eP(E2M)l42yG!f-q{TA^%)u=w<)%0U zsk*-u{SIIlKU^h+kGbVzGYr2K8!0AfVOKx+bGyxC;>6F~JvQ1Bd@bL!fT00Bq0T)U zD$Bzs3VjCH0Ly^y9D5;dcK3w>ZwVr-DX_?KNJj z=}OUIUOz7^f@}@+k&lPriDQCk(8B{&*cnR&t)23+N#Bf*WI@7(m7W-dot=;%3H+JY zJ8F2Ye@J%?mT$iq;ZyiRL|nH4tXj9ty_CE08#XW+9KgFr@07JiOr#1+6zZZK6^@j! zZoC#I4PUj&#AD@;2O0ACs}Uc@BAKy__WfDlkDZNYcrbIOS`px92Iz4ZVt2&`FJzCFKzm&E~zh- zO*bTEekN657%hJ8-?Ka92b`Ri?LpukRbbmhI(WWW{lGP@WQN z^5xB=!*u`{z*FhHL?x5f3+t>xM%8oSA6k2AJ)=tJDGyju-aN-Pr#Xw@hbwN$8R7!t zLxEHKaiIqlq!NlnpGMKZs`IEiv@#~HS6`PvwO|(l63Q(u>hl-trm1po7@fRS9~hm1 z9r(7&Q*XpX9Ka{KJNV=EaK`3Mj(pRzQe-+uoi2Dy=Or# zrzQ1(0}sn}kQ}jUQdkLo;WlE>k(WmnMo+O->t9m$FOKs56~tLnRy!F+WRnNgT(wuM zw7n*aZ42rw{?-5HZr2YH)hGPZXHI4PK>pR6`3b8);^)1JggST>C7NB*?!k{3>GLN_ zj)_e^2jiFF-%1lJyjDV6ekFu~uZj~e3_%h3RJfcE0FF|znASC4PK}uO12K0wiR0lB zXr@qjS3X<%>)`wEyAnZx8RDWd#304y~J=^ zvEt*uLalN`Wme-Y9H4pWh8k7wA<_`d+oLC)?e~8>xxAA(>b+?G^v+sNyrrOE(7GlB7exb0BS=O`4t+sokp;>8@ z1!z1_T;04P*f8AO-jr>#)y5idbCc!Nua>hQc}%cfJu1Vq*Oq1v=G5GbVLLt=7+vNe zvhRTj*V<|Nv%~ox_P`bEqb*e9L!;5bhvN}7-;gVK+{6W*LC>44o3RLM*cftJKEP#F z3pTOKde8}7x%*|V!fWRk+(aHeMU%>p9j2XoSz$w+aQ5 zUlYZ~SA)7f_C>J#N4AQ=hIyCAMD=*2a3menc3P?h)fz%RX7uL$$t@xtjY*3h6h8^m zh)TH6dSoP?$M=h0BUAs80TZ+Rn*h_vPiq_%5!zXvUK>;~XEts;wh~c-uqn|1Pi8rv zVeg&g&vsk|fVoRed&iU2zTTr^)TC6>K7 zlfIi%UNL6|u&?-ZFWRO6nDbP2-sx90#QPjYI(*x?XD;WwK>v~sD`=L3Ohfo{#JU>Q z2Ue)tXCx+up7cP9$+?!N7HqWDG58$GcTk4Wbk10}O)j5Eg&0~%k}CK>fMJI;%n)rL zaJ?YQOy)96L~NyWs*)T);kK_Wiz3aSel*LsPd}^0Ak0ad#m1O$38eH$v%iX>$yZy4 z=R0N_;57a_+06_mzK%Hu4|Xjld5sx{=ED=(*7e|ssSAWzaU@?AGmNXXRTu8BN7<^} z*a}c1a{t6)uSV-U&(|UAz=)M02lo3igaxfG!cV8s{s( z{_g>i%OI|suCu_Djo7;H+Ui?b8E>`Bk2U2DHdwkA9dRVD*$}7$VewxSf z-2-@JElI$wDFUKgH?e1dgDhE%J~*M-VG?<&Iy8Te7N*og196v%SwPs|7$J2%kxl)- zzBIiW;ISF=dBXB%X!KwaYhpe~#m7;xN>O2*k4(1mbXlLf;Bm8E44+1&VTh|k2&GYk zF}AX>?AZgN%&V|L17i7TE3zB({$QogX7y zKlhtlKb>ZdRe&xQ`W`guI4uPl;B;q%EP@mN-VisWLNVUSmN5sK=90bx6$-)JCWU58 zPcF_`Z~2e}*gO&kfV7F;90p?g(yqF1=oCH1&t#Ec(CLC_8^F$rqHVSjiN6~CFKDFw zXdcGuV|^r=H-jrmM%JVvU^2eb;^VeG;@4UHsMGKG(5-8GUVvTvCu%_KqhY5ZNPG$5 z-BX2-2tWePkYmrKLlq8wjW#TT#I7G!E3son!muYmh{c-$K_zU7nt`3!t>(|vFCQB^ zWVI$CC-t2tB?u=H&l}+-#gjD3-}1fI)kKdRax^OCwEf-BrYj$&6h?bW!c9c0GzW*J zhB}{bbm&djOdG$#8~U-wLI5gq*_hnKvQw~#d#DnVlk#Z{W7V?)}K}}PG1E-kOy^8>{@c5NQ)qQ z^kUQ>YpX>eF&Js-fd-^L!3ch3XshDLBRt$Y$Ok|Mc5A0JZ#!Vm^3Pf#O)<%XbSNp@ z`3ZkaL}Rfg;MKzu3!(@|W;)+GcS@*;=c&?HQ0`@wf9W7qhwVmr{F*9@Q)A*d>O`yH zxo0Q0xDLB@WuMGx6_tP-{7*SuB99)=Ttnj61Ga=W1@G!8Ed~2)(BBz25rT)c&6*z* zU!Z$m+^A_xmxC;hoA8?r<8(Mj)i9+h~ReEji)`Ijf#?e8A%cGik zx!+mvHMh}9n_NzG{rxZOv|CTeLM7CCk#=LXt8{NxUq#EAK}?C&bb4`=#jzgO^^s*x z%aLos1*-H<)UcQJc;y5yo84U+!0-jiV3YE-_oJMh7cAzYO4MSwfd_q*`x^R7yF%yX z>0abf1(=TCQIV|-99GAwh?stPVJDW_s%KiUDS&8%CRq1Kh&W#=zTO<>iR30TehG(V zyjGY-RBqc;pnGbuOpaaPk+H$%}3ndfwLG^!1B1{W$b4Uj?QA3xi}C0c>?q%q>Y%*cfzA6Y7( z48SDnhFSqK0`c504B?VQu~3V`-)Q1V$|b6m$`5gq1hq%nl<|{z`YTx z`7{bP^rJ8ur{SvC5)$i!cY5*$^gI`V+STPMz2%A{*>7)~ES z%w!F6N7RJ>&PxzVrA>%!N{Qso1f#cG!W?KfjnRPbjU8bs^Ys#@pviO-GEAGQ0URD;UXwK5 z3$~*)W0AC)D=-zP*xlsnM6fofinW+~gz7hX&^cpmN~-~Y+|c?F=@g*}q5;fsleI z0Nn`|qq_+*MSKjyU_~W;w`W7F`JC5;4P;gv=lQeR4XSx; zDCU7W6W=LY9Sp);P$gehpf;Is6iEz8=$K*V^;k%fPg~30fEyRWwK)=5pifRsd1cUa zFePbdrBB{(>aJsY6lM^JWc0I?xaK--WkaZbtD3(`iiBFBoErQ@VAx#WC638Azf0n` zqrMjFyZ08>P?#e0vRxGdm4X=qF~`USbR5~9>7AZ~$&D6i@2Okuf6aNSH;7y?JF?xW zdB#lZT8p6S1dSF`zH2^Bb4!&G*bM)X9?3e7&vT~ffVM+i|?v_tD2 zvvFZ*V}FRl)p^dWIvpP_*BLwp#Jdb)_7~y(5N}vAo_VjTt#z12f2H{5IfENP)va!6 z#B*;kgb|uPL*LI)F{*LMup1pXrkpheyt5FiJ0x!N9^acbLI~)tD-p+Ap>z9*A@C0) zp}IgNV;^$IUyWg=&jmk6C9R1SNlR^1Z>Ry|OMew&xi^rG{>&=HxZM__)6`ZETt}iL z%)Trk{e^OTC#j+*?jqZwmVcrT3`^H+@IbD$)24%*oiW~UUG?rj&R8bB zRj3hvx5Gr#$@-0Rq%eQ zCkg|;6RsCkH94pay^N7VQ1-_+G?~_`S_`2TU%JYHeX6Nng_K_Adn^tQLyYkkQ01_Lk~-rt_K#y|9&hs}px)D#LKq}5rgAA`fj{tA5D-@@R#%j? zxzrAiNV7+0aAQ$y|5ui1AxoH+%rr71DJg7$-<_0y$rS2pnKcisQ-^d#?ql;kM%6)t zd4%4w7&EpZVvF$Kh}622UP|9#peekMAUPtFLV?#+ALn(-RSt3!USa7)+*%?Z_F$uWL)oe5XzLAZFwV~5NIO@l2R8S=aXcFL%xAcC!e);Nn>eXe&s!L zXNR0SSstj~7=3lojMp8&{n`(GH(PjXPDBH`lB#P2ABNGI>z|e1Y76l&!G1`43}k*O zuIi+UJj50VYUOX%MCm5}QkBwB@sI=>rk3GTcJ-r{DTGJ)L0=d1n;ArndOw`~<fgd)-@T_Q+GcMJ?Lbjc`4i@-<@ASKeJ#7Iat z42^UO0}S1*bcm$jFn50U%l!}T`Eb6RbTOf@7fvVnDvQbDbYTI?*IEHS~L2@ z)pVj36E4#fp&^{~OYY8qAiX-O$oGN;q9})V(Aa&${MQc)<*aGwv|q(XclaJD)8iY& zFia49oMkdu1=G=U;y)y0;vhr2joG`;LslW4D`1#MrMj%iA zD2e9*5taE_@p#FZQyH@la2VeoPS9@IKq(9>nrlJ9rL#xsDsX#Nboo^#HwNVrLb+SpkbT+#?sKhm1D+t zg)UEio&2Zw3sSYQXbr;)9zixA0ifbT-`ny%N|SV;osJcNI~&CM<0Xli+8*sP$;{T1 zy#R{|_{TE$)O55g;GH}z*Cyf$BCOk%7rO|=c~S^fVh+EG`62@-*+&`xWMWj|K$&6u zmAJ9FKMsQGzBv-TC;S=A)J8!_0mvyX;0IEccy7F<+xAIEQ!FZrCHvp^Y1P?9(}oUQ z_V|Xzs&yHZjus`oMeEIdNP5=$UNB|jKlIQJUDq$k06Zh(3x|}FboCkX-8TSAyD`qO zNMwKFrN|%q+?zzSxl3qv+e* zPW04Y;wa{#SX?RrD#g{Ffgig@L&!Dy`R9XV4GCsL99fiayt|m(HrdttSWy5m*R6+4 zu-nfaRt9ac@vl$@OTuVaH13n|wNXUQ?!cD~3{0>{<+{<~Geo`45^V;hxeVyL^2C~! zdY-I?O~^inMFUG@$jDd(EfKvxW4m}wPyb&HNjiT<)?)tgwdz!A!(;fFrlwih&EG57 ztgtJ}+xS1o2j{<&A7VN;5y^Wtox%v5Z`k~Lg0eS>_}Vl0<+Zp>KY9uUHh>#Mo?Bh?n&wE?O3*n(N#;tV>VGH*W*JyS5qB+ zvRs1sS^GRa=g|4bg8A!GB!{kJYwsthx!$c8@|z~>rGNKV9$tIxvRg+7_}tVx?RjZ! zlcxW$;Va6v^=?tynQ-Q{y?P9o^L`xCack_u-JO_e>Yx=*Tx3%CtdHpL-9x>KO0ve| zP{R*M*cel7gFLErn~iq=la#xCcTu`Bh&_Vf*>T9RTp^w|Nq0Tt)CCC2M3dgP5Z`?G zUe2<&{FM`)CtX&6L6X#=`wqLnjSV%-kWWZ1US5_x`f%E8f#njZJVi9G9j=3b+lvN4haM&L%>LTbQ^XgcTQau7??Fe44d&(a)wq4U z=8ak^N5PN)5KWonzLOO8=_TaP0(X6tt{;A#mJaWCBxR;-Oe=f@H*oAJD&SDKC||a# zZUwRYucx)gMuyMcRN{NX1BU)l$?&k z)8nUe$ReKRBIEK`CHQ%g;~>^pnaJj^OjdT>0Md{o!8VBD`4V-Y(B`iP zwp5V|J1d%sQ%j=IXVFXwlk!Q^Q}zl&OlS`oLwR;8UHd6PYAarTN&@#HtA z8%`*dOhKp3OCPNHe~$~QQ*QI)a)+$cOvRUBCqmaoXg5rsV-+crGI4L|a&c~e^E?Q6Nerocz@H0cJF zHxI8MpybW>X+K%tUnPft70zYKn>yDL>O)m*I{3{B1l1;r_A zDf5RCc?zDl z2|6%Pe^Lo;ETn&~K4(;g<#?+~Ckc+4=NWnRJ!1W_hns)7tOgSNCL}@;w0mA(>YZ^H zS#?057kuJQBBlC$R_)~u;qJ1NpF3#;cR~0VM0DDBdqa$^;}Q7?U-?zFSsJFR6L)}N zuA=v|M%skem0v&P&nKZ9kuBpGEJ)nE>8w-Y< zxIf2>tE%u4`}V&dV2D&YYi#f1=r!)T7RPt1J*Qc*$1W|#HaPSzCGSyPOrdD2`-)ZQ>UTvLevx1l+!2L1IQWIqnR9FTH&`fb_m)>d4^10oB~lTZ)CR zVA~QQ96qT^KPQ%$bbH6_9wzUh$g#5&6XV6n@}Y72{DA5F;kj^h6=?3dGhx)%{+TQ$ z16T4Kkssdtow>-&iT=0POY52g$=wCS%yYisFHQuDSya{~ny2?a4onZPfrGGA3*R`$ zty{eEEzigWBf3j*c2+B#HC2bJd?HmN*-Z3wE4MS|`E(7XyA+NXXkvTQt{$3Co5?jh*#Ob)8~;`D(E z!%l_8#lVf=sGu9paiODUXZKr6ha%*E@aQ=vjOJPoy|CPp2_ftqFi>#_oE#%q8FT85 ztYj6m%cki-6T+**)aV~&Ywnl60Ipc(IqPbZm!x(FhlT&{04g|lV(p+b$wG-vgyM%m zY<^4V^D{`L#bkC`%d2Sr9{PL58k(zbxy)XIYL?R#o0`9X0J4$@MCKSc!1-b`B`iaW zh?k2Qr8!@lRvV?L*<7MxkQEL$)`s$QmL-K;UKvqD06Ez_38cT9XO-sc8kdbV#>>h*v zVscbZ@Y?CmEBsW+2^1bnbZiiTeAvIzJTg7?oDaC>s{Jvf-F#vAGa4y%;Q&*ydrA=bVH6RUB0#DnM{3RNT#Z$X zm1a09#RPGdTT@y-Wv{mBaGv-iVEXE;egU`Q)mEd~{Dzo+scE3$Q^hV?KHh3Uo}e zHkv^xh+RZCc0!d_MOoB|nubJ-0iTD50m!4x5vrMctsLDUYL-r1uQ$?Y=Qc6vB|xW~ zfk5154?c7h$Sn*QLuF@3AlE?RdquLcI|@kIvwt~DSU=B?GpngD76c*k7lXgRmL=_ztA^0G~D#ejJtVss-=prTS!ib>KRs_ZY!I_J?v z7)3GTSU8zP6+AMkS(^RxeRma5N+@IchX#4 zI2*RWzw}B?ETvbaAMw6NU}C4WVQ`(!%F(&+C$E$}6aw4BE_OQCQm087VN2wU!Iq{} zE{y;5;xWfxcZ#Ua_rnkjV<34h92wP#O1p5CX?Yi?Hn?BhlH6fEa!_{TsZT;@F)6i{ zZX@_eUS^@P0gt`Gxw~=>W%FjQ)lSwyLW6$D}( zUv9p#oU{xmTM$9-kWHPJhO`zy>uUuue#`rN_e-CnWN%mf zZTKtVVM#B4#o5g({P?F`(;(zyahqTWf8OYKhWB$MbFH`nepaT*{RX=`lUh63(6FHgEU+V3 z--pFkJ+Y8C7rhDSE|ZJh3JtbqWKK)(lcul17GAToWmya^fdH;X&h%}M$L-3r{JW%% znI!^p=I2iAWYmBmRi|;@j#U+(WnBM}z4}ec8&m}yiv{K3w~zSM&_WjFA3(=m;V^9 zF6Sxr%lt#qg`DI*qdMk*!> zx%XCIL5QMC#}Xc&l?{eImwUqy_1^#Gz{PNu@6n>9x5n!~4@0ZIXh}8*O|3egkc>|x zh_FoITYlab*!jsJdB-auxw+p;rg8B*O~+?6Gn!ZdmZ0P%Wge z*wUYDCG`KhUfGPT$0B*k`z;6;hdN|q<2qG=A;MoIAf3Z$AitMuQ7wTc>Quq(PS>)o zSJ?67it@)&@q2TYJd%<$?Y!95gM+4pyudXP7M-y)FP*LSfnkc%1aWVacOw8@zyWNmd$>C4-bvYbPGu7#_=+@f}hvm(^tZ71Oob z#m0ig3S$B7nSA3Qsq5AkypsIg=D^XI>5>6UrYE@87PcaYc6043C#k_dK45n%nR;uP z;F3-gz}mQwW@%co?BZXCN1)* zvg|_A7Oo#ubNx8P-mme$JJ1=uAv#&A(29R7*ep?%s;%R-J%Y(xw{4`8(9 zcDo)3IK7;lP?;1UQn-e{oqi$uHPxKfmF&D6yhP-elV9OcA|1PW&^@jI+8R@EGzB}~ zy^yA-0n{J8DyH|F!BUAZ9_Vbr!^9>*!Ynhj+B&jp!S3fyFAO#KrNaa{K%FrSGI->m5>cD8|Sj6;THZZII!M>&mUARUx^GM-etZOQ+`g z8OfB(QVagLc79_J4A!b6JJ}bj10Ao*wzm-7zgRZ-de1rcZqUf9=t>@2h531*|{twpo_!K=L&^7 zm%vbR3gf2%4p*$z;AGBCeW~B17S5sR{Edcn}{q)c@B@@jVtV)IxfRIN8JUKgC*V`l?mR Hc47Ymoil!S literal 0 HcmV?d00001 diff --git a/assets/cereal_icon.png b/assets/cereal_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..50439262563d8b1a5da1978eb01cc6f70733d403 GIT binary patch literal 64117 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

)4N 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ⅅo|T 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

1+tZ_;Qz80nfVKe{R@L5_g) z_962Y9#-_Y^U(t$y4~(Ohb{eVLD?e>I2vKe!GzF0icGADX1o9aMKcoqri*%{RO;}d zNR>G0G*?m{Ta0kW)^9r&d~dsw03~UCSQT08ZItCBY4cm+SdOznkj|^7&a(0 zx1A!Rdv|{Fvt4%$gEH>A#@;3?SsQi}LRk3~kCPhZ7Nm zU{?mf{_z5`qI4Fo+n(=H^G=PSfL@OON+UPRp!=+9yzek?a&C(IeVjKe zwQVpK>$$<0p$Ha8ald=HUhbW9g6xl`XYRz?vrxx*i!s_wFrLUO=Jc_ar418tIS@?(YWft%ii-M_P;BF(IN&Orxwulv~f*d;J-BIT&h!qD!_hq zWyaq9a5wo@@@a2^Z&>ayS(>loa6kbK8AG+_1MZvn`VMop<^@k%kYO|{78+j{GHl9BTfF_LDMb6sGl7soDSt5M`X8| z0qz+_2->}M8@18!RF=|uI+#1Hs^}LadwYYoZ~N|SNuokvD;BEr4nD{1Gvs0Cgzb^$ zc%CNiE2n(1TW(IwM-I8%mIa(%OK6 z8C*ok@HsA|nr)*-7sXG**zM8VY#r7`ncUqJWys`4j`~zd4?mAA8#o*1$^(WLQS5|1 zYz}@NGuJH)4d9&lHP3fclpIas!^(T5F5a0b3bUtam2iI%BYwi-0MJA$n3j#fCO#Jp zU%9$H=}&>gwlhbSmfFe;;^Cy`@F2<>W*|Ar^BVZT&h-@~OJ#;<5lTywJD8a!k#2W?=9!sg(@nblunkVM28J$G?zqeu5a`bZ z{*+w=S})qNr!}q{%n{#0)0H*eoVbxRt+;d>^aIRBdqsx$NgPHh;*8|JnbGtld}pAB zRwQnEo^lJ+0dh`qQW+34X=qHBHguhw z;0x%qL}QN$2piYHpUw1zZ#WT{P7z!F0v`%Yt8Kd?R`HAtQHXX_tP>rW)t{C|tynPF zLlAOVUf;FjC;$ltnlR0Fi?iYLZd+mGI|cZe86z?gM4XQzKK<%!pu%9|fS7yZzVe|D zF2yTcJ1d%o55!Fb@BHG=fw}9)C2qAr=}6>YQG})!-qk7xHFFFuI~FDg>g7s;tg#8E z7l%Jp2qD4~ZW@+abQo=cPCQVs50$t@=^N&{y5V1N=}lH7tuVKeL*EXD$@(w4U<&m0 zljvl?N`r$QnvrCt~QT?9OiR_qI z6MQd<$#MMjG4{1n54YWDWXdQiZWC|#Oa5q`E_R0hx4l|gWCn47hIsU!?(Fqu45LT< zb#CZ`?`~)W4k?!N1z%0RBAnzCkFS(D`bW*r6lY(KvA*QE?d%eNjJ$Y$Z-?;6yrPrB8 zG&@Fi{Al6$?zP+j?rMeL2(u@ZPJh$x1`L=I`PgZ$`!A!%&i3ypOZJB~Jx6Uh=zlVc zMe)4jtEfs4J3kMD{EwKPbp zDw6cQEK=)96>B7*1%-l`7t}dvEJPl^njoYw9_ow2Ke+{osYQSGaKQwXZLq}@2$B@4 zE(s@EQKMR!{9&?S%I}qisllQmPI-C)(@JJ{HxHL@sja?q*3svc2zY|MBl|2l4Z*tc z1uQmMVGOVIt|@He@(waT%$%ZG+ggwR?m}cRg3TTQsgCv8BL8yN)ccLLCnGfBp=KS-AiMtpVRkW6Loj2jGP5JX?O(%qYabi;O0e2W;j3w&T7#cdQJ^G0f{YZOwD zieP|dX0qUnhQt^N&#xK!@qICz3Pom9w#QOgVrbiK3LHP&CV!WeTgD-U|EGp8a)i$k z9DY`-%h7^y8SB?x5IE4uUmaUYHWwMT%NO%n?2acmE7wh~H6H57gR%H9AH^rzzTEdm zI@2vx;%Vq?f96SU<1q@!*%RADem=whuRLm<4=j6rsNeOUcsZBl-V}Lkl?`ZfNVQAO zT0!JrNdpjTQ4Y<8&tDnP2{!+^Uj1zJZ}WjEFW~} z2?6a6cVpYFaqu=>9(KANI^3Cyd)DSzMbvdJ>4lu%{zE7NhrvZ)Gc|M^YeowhDU}a_ zG6?)UR(v-b^ljKDL!2{{t|Q?ul0&3MXd6Me4v-Nhx?8eoBKLxVO# zz-sA_4&BaeFf7wwlh|Pq8o&x;~5$^QA9~{$)1qVhGt(gZu+8NiN~%8%ApaMJUTb8aaVLgkNhdH ziUzvo>`PK>su)Luj8$719)!+BC`FO_M&n7ChS6qhK_jjr89=d9LzAX?VBq?bd~sZ| zG@_sG_fItvHcg-D{SgyG9UdL-{t26ccjqxDjxxMt>%U0brDX0^y*;lxcltQPH>@tJ z-zNz`8-J=45h?mXRgxQ-v)ZLVrdTb`J!<-snMD)~>|bM*O}*@SP$gWgSq zk+)GR!cD2^Qk5DshW8v%$v~uU0b^4R%!l;21)(j}wB{XAYV$+a=X~b1rZUlAmhdZ9 z4R_|XtB(}LD<@7WVU4C7O`LtGzpZ!;lVT-HRj%h}V^p2Q#vYKxfar*<*`O!YKB`(^ z?Cc_0oJ6Dl=n}2-b95hdU8wytwvuwMmH^Gr!l`9E+h`|@RkwxL8cFV57uw}|?c0B? z-a$B6b85tLH7o_ zP$Dg+3*nXI{LCJk!nnK4pDS4wUXsU$$n8FtO~R_GN+jg7tZ$z;eiV+%@Elux2^7Du zJm6|egJ8v#z++$b=y+0~t=O_)wlcZ7sVqjpgyR~ybz28?^E<=O z2}d1;yKw9HBM_rRg!=srkZHdurV2aJl)w_8W_sJ1vXi&-KJ^q5zBo&F`m72SD_BXY z?0u0WvgQ=WXQ4Yy4HQ)LPGJm_XE;FDYm5C;t#2Y^v z5-`iJZMAx44$QY8O8svxfKz?%fBUEk%j+P39OnxVznJoSqNlhgxW?=Fl5DBOrG*C& z8ayDJy`{$W6SvrKRdGAai)otc|Md2iU3GKO)`x?;6?dmN#obDAcXu!D?pEC0DehL> zy*S0)-R~ zw!&w#>&!&AK$Y<}H_#z4?R%qQFlb?N)!7`*X9{YuM7|Waae!RhzZtCUCTz5~Z!T|M z=xQ}MflyN~=7GeG+0Ed<8A)QM={oEL!hQ;V3m068J%nyP5hmNV_us?iprUsh0xgZB z>BMD@$Uy&bUB>8UU73_idxrDqX-B`JZ}zxWXeO*qm695{KwI|?Oj~1~u*NYdgimkd z95jg%3)w}kjX;3Ea$!5ZZ1L<`?K4sHlC}|F+D?QB@@ASl&e*y)cTPoKiMJO!c@9RkZ+6iPQP3|jk*gW3R^;+R>XjGXFbl~o%W6Sq7N~pYYbhW|cMKA@LwNhS)6*Fl=~?%4(XBc>+aa%r zlBe|*oV;MyDJ@N3Zxh$6Frw?q7-dgDGHd`!3km}Pxnout*@}iygO`8yg@i1My4JrR zKN$#+bTC-6{@irrL=H=Yw&6do1g$eL&W_EtCoa9&!yWdUhL@B8m&yAW_PAWxd43=UpCuw}6f{Dw2M!e)iivh<6k zP5FK<&d+ES#krT$u{4&KpagD}>}H+Rp`d3O&303cAN&I4(%aoO{1fTNWHj-sUm>| zNRGNhJnDP64CxXD=mtwG8gE;mdhX-fv+v0;D<*^?q(v*$>n?fu@1MZWPCXOJddrlu zHxp;GS@kjZt)?43G=np1(|?gOM`7SdB*UdUtCQgZYR+;ZjP@+D&H^VVSFcl+ zVV9=ZJS%MH{Yz{RN zHotr2a1o+yOLETWFPwYqbr+O-rhjlAy;m=9AZ#9&*#vCg zAXW5WyJmio`7n{u6=BGd+#L{yycFx`_^C>gbJv79?!u*>oGUOh76BpeM#%C!AVUU5 z>f~3Hx@f-+yzdEZpX!C&Om<)p!C@uCf>Ul@7~_)trA8Z1cNKP9*FOCm4&wHOk(FRw zyb)Rs*o5@`As(aLJWPsIqr@OaBgKNL>C$~L)$2KKOhhM!P4711VWgHWfTbSAJ~a#V z1%}-Y|Ky;7t6zoew838{16oMWVJ#O{54-+C5^0K zcYH1QoLq9#{#Kieph}58*jce_2A`!A z{1P0+3QTy}3;qrtpDVdv!I&aA-!52tyT42eo)`!I;S+hwpv!iEs;D4MeVf@jL0k7} ziz@`?5*eumN-~ogpaX|F8vq;){i2d7gpPMaI?4s~G|HX*DH0WG0TWA`!;W;8> zQ5#DbjJ&iv+SL&6kqPP8v`7e#fB*j3tsF(OiO}fQu|m6Rub5)PVpf*LH*BhuT>U3A ziqBe7Usr3ynZDol+r>BIepF^GS(5S{yXYEBa!2#ou^dSqn<my0T9SE2u z-eJ1x$`rCaVFcNBb6Aedd6}TxV811z?|&gM9;;sRDb;)Z!7J1`sc;4188H<)X^)E@ zC3<31SCxF{e6ztA z@Ow(4IG^DGM5IcS-FzW0q#v&o%fnA(4Qik;j^cJ`K%@9klNHtaPLC&#bV*7k5lW6t zsod`R-P8xdO^-1g_=pNGl|p|4rW?QU9F1wBR4ozX1v`zuYV{0Aeqn?z~TXe$WX$;4m|l5G}q>e zrGj6A6Qwh47jvPOG2GJd_}f`VE8c%3P1kZbRtf(S#xz{Pn3q2fmGkw>3~2mC_-3fg z>C4Nb)lENc5*2h_*)Z={q7p6@tm|X@6MN$>(>(+|R>r)he6RlZP7~p=bAK^eP;JaC z?e#pZeWaO~8r-HXjpqesR;K1(0gF-;aR|`xP|!_qQ!>$)xS}MS2EA%>^UrH#A~u{M zHr|F=*POQ?LNHGjrr*_0g1Vc8K}S!Y@qF5GzT(SLbakO$cGF{k%2M`+VzzknB&3ks zp-uY{_J@hXJsfUz9V}Sn8X*e2(G<-n6}D;{N+ww-q|)J#hds1aiCFjPA}^Hwn zEz=(Lp}6lbGGq-gaX7wzgtG*`xVznsPCh3uYEFDIOf=F{sQ#FPHTKn#q`a5EYpSOz zXf$Bi`^l{G1N0Rny7?duDG*I`yfaXZ{?VBqJ0QYW-uzSZdh?LG*0yRp_m2O+!O_Yc z)=_tqxqXTYdNUEHG-D3oNA>ZI-ac()_mSJj&&l_~9aW#^3+q`H zY8omw(lPmQE@}=iC?E?nLU7O0trSMjCo;QJJt&#Hv7EfXzUNZ5bD!Mn@!T!@jh>Fq z(|^&2(|$FhVR@Pr%>RIzg{U@4H01$&iO6J6@{1Vr5Nw8e;o~I>AL%E4Rn@?(q$LbyI(`UlpHo9qn^VdczB+q_3 z?BwmNqn1`vy-ligB3R1A_HdO;$I&RI{_G3AUOV9(;%Qn=2o?+eJN=LQ4>SK`!6Y9+ z5B|!9J3KKVO{-}g=~9|*I>*%fZ!rt|%0!{w9=$8DTy84Q0NF&lJoG8{;&r*(miZaF zEt>a`tkw|iQod`>c&zxI=0fa z?lNiXbKk9k^B)`lFXq$P$TYYoBc>{0795K$BO1pqQS|6eW@uABmSr;_C8Z~QoP!#- zUX`@>TkRBe|9SgUuli=D_u_uEgMe(%4=gmiyYei@)6?5#H-caW0s@gZhV zHYY>y+Pdmk!#q%c2gT&*HqMNA{yoSAVvP!vB^4&NxkA^$qbJ; zG@zbLeDlcH>$X!ixc$h%h3qaR9F_}0Aq|wfdhk*mjuT2-DWl2P67m7fyVXM(mC&^j zgHVInJFbU5-alqvvlx=6`#ZrE<5Bt#WSA=^(wQ6iY;)@^B71>e^%`;xAD2%oaooUc zL-C0tQ|b1cvw$q&fzgOxuuwPQVG@yg5kCiwPcCG)dr=&{M8{2=_zSC3I|k*3c0$?@ zXKUNDnR1pLDbP2%%KUb^gI#nW*!=OJ+?~99WWHfmP&4c(*eq|l`URtZxRo{i{j~xK z0*t3=Pf=`3!3DNklK&tzZz|7o_&GhxG5Tn^ZT04@gHK#)IF}(vopZ9M*~l*9RBK1c z1P^YO#`nddZxNS38p*l{Lq+;$MytYCDXVwX3x?xtDtXVyrPN0CEa4AgRF{iPpL{*0 z<3$c5XbpAh96)A(NLM!hLmtn$knzoKHcO+1xjK%h^yt(aXw_6`p6PbmndU>8*gFFG zau)^8R7BtI%yl-&t^eJAO^#rx(73yQy(OoNOHnUpcBE>PP(jO{^n|nd3ht%5?U?N- zsK!V>L(*rsSu+O#oOv*m%zPt;P$1W=V?qdDiV%kP z`BHB$YAC5a?e6m}c|Fap>#Gn2=Is~q1oI;|8sOrb>eLw+Rg-Wx1yg!i&^E?zA1SmY zvkqq#X(|qDF*$8kUK&o$ga!w%CN-oPmcOI8rEHz|ZbG~T@onGs8IPe>vZZvT|@DY67*7zswQ?i@QC(Ow%6BQ|&;8zH%{mBD1)L1-^)oUoKx7A@^R zbu>1rMy@bVJJ0mF?W2?6OLM0HG)3YP@$rwAia$~~+p}b^h!(HN6}i+18J6sKf4sV8 zs&#?}=b&pKR{UbD_BwUF>(e+owo_1x&IQpF*!{+5+kT4Dl;~|h=P4*$>LoU8V*ML0 z_Mccoixn1!PM1TwW8!jQl7;)t?C-_^BN1z=>jqlJ&7EBv^X{44lT4XhS7U9tV5_&i z_Qc=-29Zf=$?anO8V4(4UJda!J^x02f<$(UrZ3{f`%DBMpx4Z%X%T)R^55VG}acU}hvgz5oq(#?1suo`W+L_wDrE+D&5> zPbo`GX8#722}5^Afu)K5ix~|N*A^bjHSt}|p-g-CA2fxR@U+itt8#mFj0yT150iHD zf&qr8rE6mK^lu?sA|^)G!^QG)M&Ai%<#nl}VVN%3yzPS`WLCdt-SpKjB6TklsMlWn z-|f=>AG%cu7Z^B%7A|;ER!svN!F6cvPuKM1Vyit8h1DW*2Qt88<%0&6d)(RBS_l2uodRhw@h#$3hz!5CZn(l(9fswh#MtY{U{ zSyH*OSn0TL>-M1I!I5_97te#O+^%fWM1ua4;ea2}8@q!ZkKsnh;c=FP7UeelwK|Dg z*=0iJ2+H3-YX6<_!px=6nvph}kTKra$SP`SSHH7m=fV3?c%uFYlY|Q!EJ*uLN_T)R ziK^580_pg{QW}<%k_Vg7#{O`O^<{N}v)PVs%5}|A@I|4DpoY}zy?MEf$M%J*oKbS; z{tgc56rl^TZ{u+~m?CUHMa^~n(`f;IzZP81;9e?uQZ>rYU}@rq&a~)a}@%PIv6XPgO$h#f$3j8AClm5RUw9$ zNV0k0f5A30-YyX-{sRZh+%asc3NrdT*CJrk=6{EYpTVmGV?*L1%(xsx*_Z0M>%!18 zxk(Jpayu?(4uF4f?f-X*G?jK(Bf;*!XSk+pLL zRWRaH*uZpSp~NJ2so^zeQJHEW`8Zc+L`Xd(vf?lT0m0Uv{&F^B+204#WIKTKoi7<+DN`4?C}{VKK(T!M zu7#3czE97jA)UW}8kS&yznek!U%V6|09+84T{0+SOnReJYJ!9p?b7_tZbk)I#qSpe zC`#1Y+U%7*!K{Dd?VUV=Wnoy>#kaWV#`XS-B*Q>qOUl_cB4ok4VW`xLk#%hnQJJgRKY@RmCgiL?G)u2tXImjXvHfq%*w(6>6K? zMeN8v%5reEdIcY}T4}bO;h0`LDjOK~Vx=i$|>}N=}_GEHK$}4k1YoAY`IF z1~RF6DinOhoCuPny=h1}Qxt&@cnofTNrN4&{Zzq=wzUqHH&_)eTYW{43$F>DhhFhC z#8=dV_@NsU1^$Iyz$k4i3OsiJgyMhaI_U_%Pynb-zi3-8xl?ya^;yF~FL?aN&~7qF z8$Z;JGbcnee*9kg{PT@g;e8JwFuH^cWReiX2%UxrBp!wD{j|TDGC8k6;fwX3_I;|p zGdJK5?&I7<4g*+0MuaKCp=EyoS|$FFvz()>F8omXYW@4Mw&l6V_M`HPnuztnN5T&^ z@p)-RsRVLWl{t23)!umAI@XqYi$50LXB+aLt<#)QTjzI&liodXE&?onvpn5-j@+jN zp0aCVJx&f(8;neltD4U*rSIyAe9wtbO6artt#%{PJ4sE?jU!Dgm>pbxLJ0j@6iNui z_93Ytp1?Bfh6_ai5wLhCv(C)IFMNZ_%#nr=UZueG`1xik+VIUxW`E7>9#B=^FU4Kw zjQitdZ``kuPQ?Ut_KNE86llw>W9zV&(~-fX`uxaNdv|{l)q3{))FHeY>Vy5#QR~ya z+jmTvou$9E!V(jS(=Gy$uUGy~Gxr5&7e+l~xc3qrl#;avsEbVTH)PCPU-=ue^k~;L z-eXRhcUale1i20)hma)IcWJY?$F*J=CH@8QT|1Q3{KP7du~G+WOs*H1&uBza1&P!p zX6Lw#XR}R_v_a?2D$E+~_H6}^U+AZU)kSZgUfn0J037+5vw$^D#LrO5?q3*N01980 ze@m)Y3#g*qANIA5I{vBC>s~~Eu8wKaoHEK5iJRhsSetcMzdO8v65E%w78)H{xXhec;xHhwBO!DacSA` zHKgK{%5;MExLU@k2o1a@uSY2Lj?aEU21Edboe^aqQZSQ}RovdstVawnP^eF~T}&Ok z!Nw_80^eE|ya1{E`fdj)paTim6f~|6&`(k8FG_%A^6Ji*c0-D&7||*cj1-@s@>S<9 z`0#zh-0udk^3>&!GlLi?`?`%D9JU%ag!wqV=ln?bWtFWdAPCv1n)#?^8*bgM)m4?8BiF2wRMM=6?i#SLI6uz zS^bA0+8`iurP<(b>SGS}@{3HdQ}Bi5dkWXX7h%5avjxD_J@j~OE=@MGO*ngoEHJDw zOnf9+A`RF(9t`d@jeJDI0sEGU`ass{h%KLMP^tsKt^x{g*pD48K$0@LOu?crB&kq( zITzQQ4YZE?PtHNkB)OhQ;|JBrp9$XfGB=(wt#M8Ftw^={abF_OWCC?0(E69zvokce zv>*mpHdkvYL(1yD&o7g8nrlJ`YuAynsuZ4v7rQ;~6mtmX^!)WrUep-%`D+De=*6X#y{NbK7v>r7T^$pOJZ}JmgCU;Eak3( zuAS@V=PT^68!&G`0L*0;hSF{FH5R)+7~yjiW&C4&a(8W8pF6vK@zE?r;Z(#A zHk>|%?Cn7OG{%d~YrFmQQq1Q`Ull5Wu+S@?$$jNchv@K_mT;KXTMmJNkVeE|pViIS zHjdmk)DMQ_(h{_4b)=QsN*{^VDCKM+o9Kcrmv>mKKl;J=`KZFwV)4|2OqLFF8s}U0 zT1&C)+?5NAf2c?6EB_@%)g-qx^UVTVlJ6^Y05waxE3RzD3j_c%)Om&#_TnFs-Zd|hG>YAmPTT(B^Ajc-AMR2d;%fj+50_Ix%+ z!j2g&&EnNErtp96_wjD|C;~!ZMuAV>LZS`>fy0dV#Q;)rdiqiRbT9ZYdxKYx02!Ee z!z*Mg2yZZOF0|W?=yBg7Ye4?+o~s!k>Ue20(GYs-W}V6t@=iRFo=G>j<#D}$!PPsgaPUc=)A zg`byVoAf-305cK&lmP~LVYaziD&pt7D8VZXL}OUQoQN5hgzszN4!T6QhYV#5^G7ta z)4JsjB{>l^PE@(>K`)L4{18X}K#D(N)+r`HbHwYpEQbx!Xrw-Bc{DWy@{ji;lXdR7 z$(W`4pW|DK@Z`Ayg5#g^I0SCz85!Y!Mhv@~KC1m|5!mK0G@d1>%5ot(z8`%44*%+Z zSx>EdBL$IfroDx3IJv65JKNEM^@m|2L_N&LJT@@IbGrT_im+Sje4E)BT3?<)*#lOb z`;+i~18##)Yk{=80+mK$r&>vp%1DPf8cCQ}O~F?7$S5sUbvE9N>F`kNYvdKVzms+~9)&kr)4L)aRL4P&}nqZcz; zx&Cb<2aUG)$m-C*#-tl_8*uY1<(Z6NAM9^Zl8c;N=(P%0)Y$OwZd!R>{zN?5@VEjT z$fYG)^C$I^6M8*+^^3ijD;}%*(@{?rzY*@lm-dJ`0RZ^FQr|^X)4vX~eY11PZ@@-y zR!p~VJR60*nn+}OPnh2IzqnH+?qtq|Z)~A6irXJA?0RW?Ud67GnvyIpyf6%(Sq<@IIyei}dIWVLg1TZfly9rE9+hSgbP1DRBu*4NB-Qi_5B#-~K?8xX^741V%}6zM3=Ot#aYE%kRv4}o za%OjPHWP5Ruv-hE1_iijnWv}uL~IhPMQa3#GYupReBnQlugn^%Id?q`$Q z@G20()l>QE&!dY;O%6x==k$2Fr_G(2+Qx>K`$Gc2##%8q+!vH#1tiOtqiTa24e1Mx zQRWI!7CeoQzX?(pZ;KXX{60`ws;;E~(mC=Meh;61mXt6WZw7ltj`)>T5AnV^TJEo- z28bISdqbh7h-z=>;HagVh|ce91Q7&9dHyOE%R1oUGOJ0R7Bm(uW#0i~560yo*aP>yYzMsk(6Bb^P z{9qa8jo1?G_&&>d3?Xs3IVk>Wm-88;6Z;rpyF1EZI@*XIS;1XLzIZn`!R#V|He}bb zQ{GI+0RnCf8sHsYqg^<_?D6$JYqX=hKZ}eGKu#0?5v)NIE zK*2)F<4|+s9?QbE9J^ zauuR047Hgk4CkXf>jK%P{szB%1*F{E+Dvuta$(L6oW}ZHsCM_OrghkendP3}TzK>G zwJ~IpS?&4I{WBSzyy^PV=y_VgBN^u*a_eR;27=kbU@dm1<*0VPZ{F%+Q)l^B0BrUa zHoU?~du%VN^-Q+U@6b}YKD+d+hxmy8`Wq+}NYQ_)jsAwe>WSJea^Jn$ikd7|!=(dA z@?|)af6!^{i__>fG}{LTZ!q=vJLmd#Nwq6ashvetevr=OIUbY9JHI+)Zt+6}Hp`}p z`uVipIhgWOH z&lF+|oNusuO804bDRJt4k84=^RcX`Ccik6rH!{QiSyF*XFf^F8b4PhPUfq65fcVFX zw=EaQ?kq-DyHgzfgwQN6y>3?tuBF2bcdkROLA@o@Rujs}#w%4&5e_zsD_tlW2z9B5 z4K^;d(bP67JV1tI<7cNUQq7KQ*_QbH%pbFSXUa`Zr>#l3{&JHW3cs`G_Q;x5QqhD1 zFoQYwg*qp~UrK|!P4a+56Es}Fu=T8Ybuiw8jxp?T70a;I^CwMgBkGCMXZpc|>Y(6p z(&<(A)Rw#uK+4Drh^6t(m4b@OjW^gz+d+ioJCU@Tvg+tz9wXUYoD7_L;i6IQ#Vki~ zjwKI>pan!QRP29$vzeo49DQ0}OxjNH^>n&CbgkAw42MnRZ=jKAnKA*wq<>5OlzKUZ zMoTCuVFe&7I&5F?PgK|caELaWdl=)cZU&52MRM \ No newline at end of file diff --git a/assets/multi_person.svg b/assets/multi_person.svg new file mode 100644 index 0000000..540de21 --- /dev/null +++ b/assets/multi_person.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/person.svg b/assets/person.svg new file mode 100755 index 0000000..5ec8590 --- /dev/null +++ b/assets/person.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/place.svg b/assets/place.svg new file mode 100755 index 0000000..92fcf87 --- /dev/null +++ b/assets/place.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/reload.svg b/assets/reload.svg new file mode 100644 index 0000000..f17c0a4 --- /dev/null +++ b/assets/reload.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/settings.svg b/assets/settings.svg new file mode 100755 index 0000000..1e9e515 --- /dev/null +++ b/assets/settings.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/sheet.svg b/assets/sheet.svg new file mode 100644 index 0000000..b2d2e63 --- /dev/null +++ b/assets/sheet.svg @@ -0,0 +1,18 @@ + + + + signal_cellular_no_sim + Created with Sketch. + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/time.svg b/assets/time.svg new file mode 100755 index 0000000..d6dd8a6 --- /dev/null +++ b/assets/time.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/flutter_launcher_icons.yaml b/flutter_launcher_icons.yaml new file mode 100644 index 0000000..d60775e --- /dev/null +++ b/flutter_launcher_icons.yaml @@ -0,0 +1,8 @@ +dev_dependencies: + flutter_launcher_icons: "^0.11.0" + +flutter_icons: + android: "launcher_icon" + ios: true + image_path: "assets/cereal_icon.png" + min_sdk_android: 18 \ No newline at end of file diff --git a/ios/.gitignore b/ios/.gitignore new file mode 100644 index 0000000..7a7f987 --- /dev/null +++ b/ios/.gitignore @@ -0,0 +1,34 @@ +**/dgph +*.mode1v3 +*.mode2v3 +*.moved-aside +*.pbxuser +*.perspectivev3 +**/*sync/ +.sconsign.dblite +.tags* +**/.vagrant/ +**/DerivedData/ +Icon? +**/Pods/ +**/.symlinks/ +profile +xcuserdata +**/.generated/ +Flutter/App.framework +Flutter/Flutter.framework +Flutter/Flutter.podspec +Flutter/Generated.xcconfig +Flutter/ephemeral/ +Flutter/app.flx +Flutter/app.zip +Flutter/flutter_assets/ +Flutter/flutter_export_environment.sh +ServiceDefinitions.json +Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!default.mode1v3 +!default.mode2v3 +!default.pbxuser +!default.perspectivev3 diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 0000000..8d4492f --- /dev/null +++ b/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 9.0 + + diff --git a/ios/Flutter/Debug.xcconfig b/ios/Flutter/Debug.xcconfig new file mode 100644 index 0000000..592ceee --- /dev/null +++ b/ios/Flutter/Debug.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/ios/Flutter/Release.xcconfig b/ios/Flutter/Release.xcconfig new file mode 100644 index 0000000..592ceee --- /dev/null +++ b/ios/Flutter/Release.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 0000000..3cdeb6d --- /dev/null +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,481 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 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 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 = ""; }; + 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 */ + 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 */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + ); + 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 */ + 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 = { + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 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 */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 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; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + 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; + 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 */ + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase 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; + 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; + 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 = 9.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 = de.shuzo.muesliApp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; + 97C147031CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + 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; + 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 = 9.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; + 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; + 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 = 9.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 = de.shuzo.muesliApp; + 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 = de.shuzo.muesliApp; + 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 */ + 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/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..f9b0d7c --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 0000000..c87d15a --- /dev/null +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..1d526a1 --- /dev/null +++ b/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..f9b0d7c --- /dev/null +++ b/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift new file mode 100644 index 0000000..70693e4 --- /dev/null +++ b/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/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..d36b1fa --- /dev/null +++ b/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/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..6ef7de57e99528c3aca4ffbd696a3068572c30f4 GIT binary patch literal 131859 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 KtX1^L@x*O{=fAnR&{t0oPrB7d3yYjeIp4Q58 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 Z8e({*^K&^3x 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 q0!Z%X+)nKP?bz04jCYTI!%~w`#sx= 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®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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..92847f8bb0aa7d6c94ca9d680e1e1cb9214a930f GIT binary patch literal 2442 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 N002ovPDHLkV1keoBAoyL literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..9858e98adf9073fa2d61fc744ba71a6ca04f348f GIT binary patch literal 1761 zcmV<71|Io|P)EX>4Tx0C=2zkv&MmKpe$iQ>7vm5eteqWT;Lpii$XD6^c+H)C#RSm|Q=hNkfw2 z;wZQl9Q;_UI=DFN>fkB}f*&BRE>4OrQsV!TLW>v=j{EWM-sA2aAk@oDH9N)uRkMs_ zJSL_yt77040tV2B2*zY)>T{BmfamzShmWs!QJ&>}?$6Pa&6y1FiNv!^H!R`};^|FG z=e$oGVnsPid`=uO=z_$LTvuFv<6Ll9;F%#Km7FII5sQU3R@#^q4V8F`IGj~A$`{fu zXE|?iR?Ah^yeEHQFsH37bDice;#kBIB#2N@MG0kCh|;Q&Vj@ZVF%SQc(i|qi@Op{kK5(n%i4*AEysMin>bN00)P_ zXo0fVJ>K2b-rK)tn*IF%z1wodL_Ac}000FTNklS!`5Q7=XWf@65C_bfHkX zSCCSH(n3pE;u=sPG(`;$isAzr5+7_dxR4lPf=ePXkwl{=E>DOEii!z{pv2fni9kz% zt`sP3aY~_1XQtD3)_bpihdNlMw2cqM=t)k_z5n^o{m#Ff|6EJKYK@IJOiczsuh$Q6ih?99((Qe1elVf4bMSDrh8Vc#LS#FL1-YznwkT=vAz(j$&j2M zzar>?fv)Id_3oo* zqIAwQoussQ8mAh1D4si&rn9}wEu6x|PA|FHN!0Iaq#{G3?k6W#y%FZmaB#YPkSDEf zwp5=Wa?g^np=zg-#VyBab!0Lah;X##G65N@Pjtzs^IL5(VmunDypRBR_{DTi@Z>&($1g*h7Xx;$)KvT~rd) zVOI<*D>`bvj+QPuO%eqeHig_6&2FmtRW@&Z7b7=I5=0xvy+i)DXqc*kMY=Ux-czI( z<;2IPKL8i6#$NaPRD2l@T<$RQl(4|m7|?dKhLYwBoUFJXGizFWOh+{FiY}>WG&-?Z zRl*Syn`Iat(MPEE=qk@vq_MrqCz}b!yr?l z{{31kyA6%<^fYz_LU^8DJ8FR#6FL;Xm2(p@#BX2J46v-s#^IU}l}i%kJet%yL$vrM z42vyvxV@Zk!sL>>NcPmS(2_vQ4nJ3l$_Otioj8>IsVLnZRuv@@5^`@?CpXK=6*2Am z`hFgq8)43ECJ&TanNpNSop%tsrHz+1<`C&|q3R91{ADwTXU~$uoHRjbqMVzVnJ8^n zc%;M;6?OJTc>9otc{v8X0}2Is8fW@NuP(sd#U`pP%#j~Er3iUalKe6 z-%FeTw9kJHoHhxr_C-azPwCVQPN(L)#OjiK#PYW?XGm~8Jt7+_Wg;IwvZm@nYnEeE zRy+>WEj{9m6R*8PkDKv#`KXF`l!&74wYhi zGE>8;v0Yx!bg~Q;yFgW67oXT#FvA73J1u-#-w~}wiY_r7926^u!(v7-QU(dGdun{> zU#;Kmi;mwV2br_T#t-d59&1ftX~4waa*EGX$&>`ySaumo-z7=B%aRL{d=XdFLNm!= z@PjuoQ%kqJAOg`v(P^Q`6>H-&;ARs00000NkvXXu0mjf D=dwWm literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..2b628456528a1301b157797c65f0b6d0e6831dd8 GIT binary patch literal 3650 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..9a4caad2fa29fda28c9b59b55122d8890b1fc8e4 GIT binary patch literal 5862 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..92847f8bb0aa7d6c94ca9d680e1e1cb9214a930f GIT binary patch literal 2442 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..7ec2dc4fbadf0dd6689d6c8a04a8a565809514c2 GIT binary patch literal 3077 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..5c6fcf300725f3a67c4ff91c5adbc3d91af4dfa3 GIT binary patch literal 6894 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..dfb7fa033eac1b42dd0bb324b71d9b2ec5640792 GIT binary patch literal 3560 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 Z${{+GL)~U#|50cZWd#jTm7Hbh{{Z*L2|oY; literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c5aa6e555d73a9950838a36a193f9e2b12047b9d GIT binary patch literal 8383 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..1542e5fd0e7df38542f974da7c48f353a2ffa54c GIT binary patch literal 13336 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..31a385dd027b012a38a1e50a1d550e4b9f273ce0 GIT binary patch literal 4705 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..236ff403e02c71c16e3e5baa9889b8c292fb4440 GIT binary patch literal 10513 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..bddb692b8b78d155e0caffb9729abcf25fe69b65 GIT binary patch literal 5002 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 UM0#;%`~Uy|07*qoM6N<$f&nPGkpKVy literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..86bb5f61b377230e043a4f936d6cc2e4c0ff0bc3 GIT binary patch literal 11052 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..46e55a189d91242a662939b8be80fa2db6aa3a91 GIT binary patch literal 12342 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 0000000..0bedcf2 --- /dev/null +++ b/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "LaunchImage.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 0000000..89c2725 --- /dev/null +++ b/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# Launch Screen Assets + +You can customize the launch screen with your own desired assets by replacing the image files in this directory. + +You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/ios/Runner/Base.lproj/LaunchScreen.storyboard b/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..f2e259c --- /dev/null +++ b/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner/Base.lproj/Main.storyboard b/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 0000000..f3c2851 --- /dev/null +++ b/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist new file mode 100644 index 0000000..fab5a7a --- /dev/null +++ b/ios/Runner/Info.plist @@ -0,0 +1,61 @@ + + + + + + + NSPhotoLibraryAddUsageDescription + Müsli would like to save photos from the app to your gallery + NSPhotoLibraryUsageDescription + Müsli would like to access your photo gallery for uploading images to the app + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Muesli App + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + muesli_app + 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 + + UIViewControllerBasedStatusBarAppearance + + CADisableMinimumFrameDurationOnPhone + + LSApplicationQueriesSchemes + + https + http + + + diff --git a/ios/Runner/Runner-Bridging-Header.h b/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 0000000..308a2a5 --- /dev/null +++ b/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/lib/l10n/app_de.arb b/lib/l10n/app_de.arb new file mode 100644 index 0000000..7b15798 --- /dev/null +++ b/lib/l10n/app_de.arb @@ -0,0 +1,30 @@ +{ + "app_name": "Müsli App", + "muesli": "Müsli", + "login_description": "MÜSLI verwaltet viele Übungsgruppen und Vorlesungen an der Fakultät für Mathematik und Informatik der Universität Heidelberg.", + "no_connection_to_server": "Keine Verbindung zum Server.", + "no_email_or_password_entered": "E-Mail oder Passwort nicht eingegeben.", + "login": "Login", + "email_login": "E-Mail", + "password_login": "Passwort", + "execute_login": "Anmelden", + "tutorials_navbar": "Tutorien", + "lectures_navbar": "Vorlesungen", + "overview_header": "Übersicht", + "no_exams_available": "Keine Prüfungen vorhanden.", + "total_points_examlist": "Punkte gesamt", + "no_assistants_lecture": "Keine Assistenten", + "no_lecturer_lecture": "Kein Lehrender", + "available_soon": "Bald verfügbar", + "notifications_new_lectures": "Benachrichtigungen zu neuen Vorlesungen", + "save_settings": "Speichern", + "github_settings": "GitHub", + "legal_notice_settings": "Rechtliche Hinweise", + "version_settings": "Version", + "settings": "Einstellungen", + "o_clock_tutorial": "Uhr", + "privacy_settings": "Datenschutz", + "privacy_content": "Die Müsli App sendet keine persönlichen Daten an Server. Lediglich zur Authentifizierung benötigte Informationen (E-Mail-Adresse und Passwort) oder Kennnummern (IDs) zum Abfragen von z.B. Vorlesungen werden per HTTP-Anfrage an den Server des Müsli Systems gesendet. Persönliche Informationen werden nicht gesendet. Lokal und verschlüsselt auf dem Gerät werden folgende Informationen gespeichert: API-Token (zur Authentifizierung), E-Mail-Adresse, Passwort.\nSollte es zu einem Fehler beim Abrufen einer Vorlesung, Tutorium, etc. kommen, wird außerdem die ID des betroffenen Elements in einer Log-Datei gespeichert.", + "export_logs_settings": "Logs exportieren", + "exported_logs_success": "Logs wurden erfolgreich exportiert nach" +} \ No newline at end of file diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb new file mode 100644 index 0000000..7641b80 --- /dev/null +++ b/lib/l10n/app_en.arb @@ -0,0 +1,30 @@ +{ + "app_name": "Müsli App", + "muesli": "Müsli", + "login_description": "MÜSLI manages many practice groups and lectures at the Faculty of Mathematics and Computer Science at Heidelberg University.", + "no_connection_to_server": "No connection to Server.", + "no_email_or_password_entered": "No email or password entered.", + "login": "Login", + "email_login": "Email", + "password_login": "Password", + "execute_login": "Login", + "tutorials_navbar": "Tutorials", + "lectures_navbar": "Lectures", + "overview_header": "Overview", + "no_exams_available": "No exams available.", + "total_points_examlist": "total points", + "no_assistants_lecture": "No assistants", + "no_lecturer_lecture": "No lecturer", + "available_soon": "Available soon", + "notifications_new_lectures": "Notifications for new lectures", + "save_settings": "Save", + "github_settings": "GitHub", + "legal_notice_settings": "Legal Notice", + "version_settings": "Version", + "settings": "Settings", + "o_clock_tutorial": "o'clock", + "privacy_settings": "Privacy", + "privacy_content": "The Müsli app does not send any personal data to servers. Only information required for authentication (email address and password) or identification numbers (IDs) to query e.g. lectures are sent to the server of the Müsli system via HTTP request. Personal information is not sent. The following information is stored locally and encrypted on the device: API token (for authentication), email address, password.\nIf an error occurs while retrieving a lecture, tutorial, etc., the ID of the affected item is also stored in a log file.", + "export_logs_settings": "Export logs", + "exported_logs_success": "Successfully exported logs to" +} \ No newline at end of file diff --git a/lib/main.dart b/lib/main.dart new file mode 100755 index 0000000..c3e7e29 --- /dev/null +++ b/lib/main.dart @@ -0,0 +1,120 @@ +import 'dart:io'; + +import 'package:device_info_plus/device_info_plus.dart'; +import 'package:dynamic_color/dynamic_color.dart'; +import 'package:f_logs/f_logs.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/scheduler.dart'; +import 'package:flutter/services.dart'; +import 'package:muesli_app/ui/pages/login.dart'; +import 'package:muesli_app/ui/pages/overview.dart'; +import 'package:muesli_app/services/globals.dart' as globals; +import 'package:muesli_app/storage/storage.dart'; +import 'package:overlay_support/overlay_support.dart'; +import 'package:package_info_plus/package_info_plus.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:sdk_int/sdk_int.dart'; +import 'package:shared_preferences/shared_preferences.dart'; + +final secureStorage = SecureStorage(); +const className = "Main"; +late bool tokenExpired; +late bool isDarkMode; + +void logMetaData(bool isAndroid, AndroidDeviceInfo androidInfo, IosDeviceInfo iosInfo) async { + FLog.info(className: "MetaInfo", text: "Platform: ${Platform.isAndroid ? "Android" : "iOS"}"); + FLog.info(className: "MetaInfo", text: "App Version: ${globals.packageInfo.version}"); + FLog.info(className: "MetaInfo", text: "System Version: ${isAndroid ? await SDKInt.currentSDKVersion : iosInfo.systemVersion}"); + FLog.info(className: "MetaInfo", text: "Manufacturer: ${isAndroid ? androidInfo.manufacturer : "Apple"}"); + FLog.info(className: "MetaInfo", text: "Model: ${isAndroid ? androidInfo.model : iosInfo.model}"); + FLog.info(className: "MetaInfo", text: "Physical device: ${isAndroid ? androidInfo.isPhysicalDevice : iosInfo.isPhysicalDevice}"); + FLog.info(className: "MetaInfo", text: "System Features: ${isAndroid ? androidInfo.systemFeatures : "Not available for iOS devices."}"); +} + +void main() async { + WidgetsFlutterBinding.ensureInitialized(); + + final bool isAndroid = Platform.isAndroid; + + globals.prefs = await SharedPreferences.getInstance(); + + globals.packageInfo = await PackageInfo.fromPlatform(); + + final deviceInfoPlugin = DeviceInfoPlugin(); + final androidInfo = await deviceInfoPlugin.androidInfo; + final iosInfo = await deviceInfoPlugin.iosInfo; + + LogsConfig config = LogsConfig()..formatType = FormatType.FORMAT_SQUARE; + FLog.applyConfigurations(config); + + await FLog.clearLogs(); + FLog.info(className: className, text: "Cleared logs."); + + logMetaData(isAndroid, androidInfo, iosInfo); + + isDarkMode = + SchedulerBinding.instance.window.platformBrightness == Brightness.dark && + await SDKInt.currentSDKVersion >= 29; + + FLog.info( + className: className, + methodName: "main", + text: "isDarkMode: $isDarkMode"); + + tokenExpired = globals.prefs.getInt("expireDate") != null + ? DateTime.fromMillisecondsSinceEpoch(globals.prefs.getInt("expireDate")!) + .isBefore(DateTime.now()) + : true; + + FLog.info( + className: className, + methodName: "main", + text: "tokenExpired: $tokenExpired"); + + FLog.info( + className: className, + text: + "Dynamic Color enabled: ${await DynamicColorPlugin.getCorePalette() != null}"); + + runApp(const MuesliApp()); +} + +class MuesliApp extends StatelessWidget { + const MuesliApp({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + globals.context = context; + + // tell app to use fullscreen mode with rendering system ui like status bar + SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge); + + // set color of system navigation bar to transparent + SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle( + statusBarColor: Colors.transparent, + statusBarIconBrightness: isDarkMode ? Brightness.light : Brightness.dark, + systemNavigationBarColor: Colors.transparent, + systemNavigationBarIconBrightness: Brightness.dark, + )); + + // force portrait mode + SystemChrome.setPreferredOrientations( + [DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]); + + return OverlaySupport( + child: DynamicColorBuilder( + builder: (lightDynamic, darkDynamic) => MaterialApp( + title: "Müsli", + localizationsDelegates: AppLocalizations.localizationsDelegates, + supportedLocales: AppLocalizations.supportedLocales, + theme: ThemeData( + colorScheme: lightDynamic?.harmonized(), useMaterial3: true), + darkTheme: ThemeData( + colorScheme: darkDynamic?.harmonized(), useMaterial3: true), + // ignore: unrelated_type_equality_checks + home: tokenExpired ? const LoginPage() : const OverviewPage(), + ), + ), + ); + } +} diff --git a/lib/model/exam.dart b/lib/model/exam.dart new file mode 100755 index 0000000..7fb2fe0 --- /dev/null +++ b/lib/model/exam.dart @@ -0,0 +1,14 @@ +import 'package:muesli_app/model/exerciselist.dart'; + +class Exam { + int id; + String name; + String url; + ExerciseList exercises; + + Exam({required this.id, required this.name, required this.url, required this.exercises}); + + @override String toString() { + return 'Exam{id: $id, name: $name, url: $url, exercises: ${exercises.toString()}}'; + } +} diff --git a/lib/model/examlist.dart b/lib/model/examlist.dart new file mode 100755 index 0000000..c0873c6 --- /dev/null +++ b/lib/model/examlist.dart @@ -0,0 +1,27 @@ +import 'package:muesli_app/model/exam.dart'; + +class ExamList { + List exams; + + ExamList({required this.exams}); + + Future fromJson(List json) async { + for (var exam in json) { + exams.add(await exam.fromJson(exam)); + } + return ExamList(exams: exams); + } + + @override + String toString() { + String result = 'ExamList:'; + for (Exam exam in exams) { + result += '\n\t${exam.toString()}'; + } + return result; + } + + void add(Exam exam) { + exams.add(exam); + } +} diff --git a/lib/model/exercise.dart b/lib/model/exercise.dart new file mode 100755 index 0000000..899fa0e --- /dev/null +++ b/lib/model/exercise.dart @@ -0,0 +1,29 @@ +import 'package:muesli_app/model/exerciseresult.dart'; + +class Exercise { + int id; + double maxPoints; + int number; + ExerciseResult exerciseResult; + + Exercise({ + required this.id, + required this.maxPoints, + required this.number, + required this.exerciseResult, + }); + + static Exercise fromJson(Map json, ExerciseResult exerciseResult) { + return Exercise( + id: json["id"], + maxPoints: json["maxpoints"], + number: json["nr"], + exerciseResult: exerciseResult, + ); + } + + @override + String toString() { + return 'Exercise{id: $id, maxPoints: $maxPoints, number: $number, exerciseResultList: ${exerciseResult.toString()}}'; + } +} diff --git a/lib/model/exerciselist.dart b/lib/model/exerciselist.dart new file mode 100755 index 0000000..0169415 --- /dev/null +++ b/lib/model/exerciselist.dart @@ -0,0 +1,66 @@ +import 'package:f_logs/model/flog/flog.dart'; +import 'package:flutter/material.dart'; +import 'package:muesli_app/services/exceptions.dart'; +import 'package:muesli_app/services/request.dart'; +import 'package:muesli_app/model/exercise.dart'; +import 'package:muesli_app/model/exerciseresultlist.dart'; +import 'package:overlay_support/overlay_support.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:muesli_app/services/globals.dart' as globals; + +const String className = "ExerciseList"; + +class ExerciseList { + List exercises; + + ExerciseList({required this.exercises}); + + static Future fromJson(List json) async { + try { + if (json.isEmpty) { + return ExerciseList(exercises: []); + } + List exercises = []; + ExerciseResultList exerciseResultList = + await HttpRequest.getExerciseResultList(json[0]['id']); + if (exerciseResultList.exerciseResults.isNotEmpty) { + for (int i = 0; i < exerciseResultList.exerciseResults.length; i++) { + exercises.add(Exercise.fromJson( + json[i], exerciseResultList.exerciseResults[i])); + } + } + return ExerciseList(exercises: exercises); + } on NoServerConnectionException { + FLog.error( + className: className, + methodName: "fromJson", + text: "No connection to server.", + stacktrace: StackTrace.current); + showSimpleNotification( + Text( + AppLocalizations.of(globals.context).no_connection_to_server, + style: TextStyle( + fontFamily: "Inter", + color: Theme.of(globals.context).colorScheme.onErrorContainer), + ), + background: Theme.of(globals.context).colorScheme.errorContainer, + slideDismissDirection: DismissDirection.up, + duration: const Duration(seconds: 3), + ); + return ExerciseList(exercises: []); + } + } + + @override + String toString() { + String result = "ExerciseList:"; + for (Exercise exercise in exercises) { + result += "\n\t${exercise.toString()}"; + } + return result; + } + + void add(Exercise exercise) { + exercises.add(exercise); + } +} diff --git a/lib/model/exerciseresult.dart b/lib/model/exerciseresult.dart new file mode 100755 index 0000000..65bd32c --- /dev/null +++ b/lib/model/exerciseresult.dart @@ -0,0 +1,16 @@ +class ExerciseResult { + double points; + + ExerciseResult({required this.points}); + + factory ExerciseResult.fromJson(Map json) { + return ExerciseResult( + points: json['points'] ?? 0, + ); + } + + @override + String toString() { + return 'ExerciseResult{points: $points}'; + } +} diff --git a/lib/model/exerciseresultlist.dart b/lib/model/exerciseresultlist.dart new file mode 100755 index 0000000..6157028 --- /dev/null +++ b/lib/model/exerciseresultlist.dart @@ -0,0 +1,24 @@ +import 'package:muesli_app/model/exerciseresult.dart'; + +class ExerciseResultList { + List exerciseResults; + + ExerciseResultList({required this.exerciseResults}); + + factory ExerciseResultList.fromJson(List json) { + return ExerciseResultList( + exerciseResults: json.map((e) => ExerciseResult.fromJson(e)).toList(), + ); + } + + @override + String toString() { + String result = "ExerciseResultList:"; + for (ExerciseResult exerciseResult in exerciseResults) { + result += "\n\t${exerciseResult.toString()}"; + } + return result; + } + + operator [](int index) => exerciseResults[index]; +} diff --git a/lib/model/lecture.dart b/lib/model/lecture.dart new file mode 100644 index 0000000..7915912 --- /dev/null +++ b/lib/model/lecture.dart @@ -0,0 +1,18 @@ +import 'package:muesli_app/model/user.dart'; + +class Lecture { + int id; + String name; + String term; + String lecturer; + List assistants; + String url; + + Lecture( + {required this.id, + required this.name, + required this.term, + required this.lecturer, + required this.assistants, + required this.url}); +} diff --git a/lib/model/tutorial.dart b/lib/model/tutorial.dart new file mode 100755 index 0000000..c60c41c --- /dev/null +++ b/lib/model/tutorial.dart @@ -0,0 +1,27 @@ +import 'package:muesli_app/model/user.dart'; +import 'package:muesli_app/model/exam.dart'; + +class Tutorial { + int id; + int lectureId; + String name; + User tutor; + String place; + String time; + List exams; + + Tutorial({ + required this.id, + required this.lectureId, + required this.name, + required this.tutor, + required this.place, + required this.time, + required this.exams, + }); + + @override + String toString() { + return 'Tutorial{id: $id, lectureId: $lectureId, name: $name, tutor: $tutor, place: $place, time: $time, exams: ${exams.toString()}}'; + } +} diff --git a/lib/model/tutoriallist.dart b/lib/model/tutoriallist.dart new file mode 100755 index 0000000..4cd515b --- /dev/null +++ b/lib/model/tutoriallist.dart @@ -0,0 +1,13 @@ +import 'package:muesli_app/model/tutorial.dart'; + +class TutorialList { + List tutorials; + + TutorialList({ + required this.tutorials, + }); + + factory TutorialList.fromJson(Map json) { + return TutorialList(tutorials: json['tutorials']); + } +} diff --git a/lib/model/user.dart b/lib/model/user.dart new file mode 100755 index 0000000..7250c88 --- /dev/null +++ b/lib/model/user.dart @@ -0,0 +1,26 @@ +class User { + int id; + String name; + String lastName; + String email; + + User({ + required this.id, + required this.name, + required this.lastName, + required this.email, + }); + + factory User.fromJson(Map json) { + return User( + id: json['id'], + name: json['first_name'], + lastName: json['last_name'], + email: json['email'], + ); + } + + @override String toString() { + return 'User{id: $id, name: $name, lastName: $lastName, email: $email}'; + } +} diff --git a/lib/services/exceptions.dart b/lib/services/exceptions.dart new file mode 100644 index 0000000..4e258ab --- /dev/null +++ b/lib/services/exceptions.dart @@ -0,0 +1,4 @@ +class NoServerConnectionException implements Exception { + String cause; + NoServerConnectionException(this.cause); +} \ No newline at end of file diff --git a/lib/services/globals.dart b/lib/services/globals.dart new file mode 100644 index 0000000..5efc734 --- /dev/null +++ b/lib/services/globals.dart @@ -0,0 +1,7 @@ +import 'package:flutter/material.dart'; +import 'package:package_info_plus/package_info_plus.dart'; +import 'package:shared_preferences/shared_preferences.dart'; + +late PackageInfo packageInfo; +late BuildContext context; +late SharedPreferences prefs; \ No newline at end of file diff --git a/lib/services/request.dart b/lib/services/request.dart new file mode 100755 index 0000000..f421d30 --- /dev/null +++ b/lib/services/request.dart @@ -0,0 +1,404 @@ +import 'dart:async'; +import 'dart:convert'; +import 'dart:io'; +import 'package:f_logs/model/flog/flog.dart'; +import 'package:flutter/material.dart'; +import 'package:http/http.dart' as http; +import 'package:muesli_app/services/exceptions.dart'; +import 'package:muesli_app/storage/storage.dart'; +import 'package:muesli_app/model/lecture.dart'; +import 'package:muesli_app/model/tutorial.dart'; +import 'package:muesli_app/model/exam.dart'; +import 'package:muesli_app/model/exerciselist.dart'; +import 'package:muesli_app/model/exerciseresultlist.dart'; +import 'package:muesli_app/model/user.dart'; +import 'package:overlay_support/overlay_support.dart'; +import 'package:url_launcher/url_launcher.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:muesli_app/services/globals.dart' as globals; + +const String apiUrl = "https://muesli.mathi.uni-heidelberg.de/api/v1"; +const String className = "HttpRequest"; + +class HttpRequest { + const HttpRequest(); + + static Future authenticate(String username, String password) async { + try { + final response = await http.post(Uri.parse("$apiUrl/login"), body: { + "email": username, + "password": password, + }); + + switch (response.statusCode) { + case 200: + Map json = jsonDecode(response.body); + FLog.info(text: "Successfully authenticated."); + return json["token"]; + case 404: + throw NoServerConnectionException('Failed to connect to server'); + default: + throw Exception( + 'Failed to authenticate\nError code: ${response.statusCode}'); + } + } on SocketException { + FLog.error( + className: className, + methodName: "authenticate", + text: "Failed to connect to server.", + stacktrace: StackTrace.current); + throw NoServerConnectionException('Failed to connect to server.'); + } + } + + static Future getUserData() async { + try { + SecureStorage secureStorage = SecureStorage(); + final response = await http.get(Uri.parse("$apiUrl/whoami"), headers: { + "Authorization": + "Bearer ${await secureStorage.readSecureData('token')}", + }); + + if (response.statusCode == 200) { + FLog.info(text: "Successfully requested user data."); + return User.fromJson(jsonDecode(response.body)); + } else { + throw Exception( + 'Failed to get user\nError code: ${response.statusCode}'); + } + } on SocketException { + FLog.error( + className: className, + methodName: "getUserData", + text: "Failed to connect to server.", + stacktrace: StackTrace.current); + throw NoServerConnectionException('Failed to connect to server.'); + } catch (e) { + FLog.error( + className: className, + methodName: "getUserData", + text: "Exception occured:", + exception: e, + stacktrace: StackTrace.current); + return User(id: 0, name: "", lastName: "", email: ""); + } + } + + static Future getLectureName(int id) async { + try { + SecureStorage secureStorage = SecureStorage(); + final response = + await http.get(Uri.parse("$apiUrl/lectures/$id"), headers: { + "Authorization": + "Bearer ${await secureStorage.readSecureData('token')}", + }); + + if (response.statusCode == 200) { + FLog.info(text: "Successfully requested lecture name."); + Map json = jsonDecode(response.body); + return json["lecture"]["name"]; + } else { + throw Exception( + 'Failed to get lecture name\nError code: ${response.statusCode}'); + } + } on SocketException { + FLog.error( + className: className, + methodName: "getLectureName", + text: "Failed to connect to server.", + stacktrace: StackTrace.current); + throw NoServerConnectionException('Failed to connect to server.'); + } catch (e) { + FLog.error( + className: className, + methodName: "getLectureName", + text: "Exception occured with lecture ID $id.", + exception: e, + stacktrace: StackTrace.current); + return ""; + } + } + + static Future> getTutorialList() async { + try { + SecureStorage secureStorage = SecureStorage(); + final response = await http.get(Uri.parse("$apiUrl/tutorials"), headers: { + "Authorization": + "Bearer ${await secureStorage.readSecureData('token')}", + }); + + if (response.statusCode == 200) { + FLog.info(text: "Successfully requested tutorials."); + List json = jsonDecode(response.body); + return await Future.wait( + json.map((tutorial) => HttpRequest.getTutorial(tutorial['id']))); + } else { + throw Exception( + 'Failed to get tutorials\nError code: ${response.statusCode}'); + } + } on SocketException { + FLog.error( + className: className, + methodName: "getLectureList", + text: "Failed to connect to server.", + stacktrace: StackTrace.current); + showSimpleNotification( + Text( + AppLocalizations.of(globals.context).no_connection_to_server, + style: const TextStyle(fontFamily: "Inter"), + ), + background: const Color(0xFF465770), + slideDismissDirection: DismissDirection.up, + duration: const Duration(seconds: 3), + ); + } catch (e) { + FLog.error( + className: className, + methodName: "getExam", + text: "Exception occured.", + exception: e, + stacktrace: StackTrace.current); + } + return []; + } + + static Future> getLectureList() async { + try { + SecureStorage secureStorage = SecureStorage(); + final response = await http.get(Uri.parse("$apiUrl/lectures"), headers: { + "Authorization": + "Bearer ${await secureStorage.readSecureData('token')}", + }); + + if (response.statusCode == 200) { + FLog.info(text: "Successfully requested lectures."); + List json = jsonDecode(response.body); + List lectures = await Future.wait( + json.map((lecture) => HttpRequest.getLecture(lecture['id']))); + lectures.sort((a, b) => a.name.compareTo(b.name)); + return lectures; + } else { + throw Exception( + 'Failed to get lectures\nError code: ${response.statusCode}'); + } + } on SocketException { + FLog.error( + className: className, + methodName: "getLectureList", + text: "Failed to connect to server.", + stacktrace: StackTrace.current); + showSimpleNotification( + Text( + AppLocalizations.of(globals.context).no_connection_to_server, + style: TextStyle( + fontFamily: "Inter", + color: Theme.of(globals.context).colorScheme.onErrorContainer), + ), + background: Theme.of(globals.context).colorScheme.errorContainer, + slideDismissDirection: DismissDirection.up, + duration: const Duration(seconds: 3), + ); + } catch (e) { + FLog.error( + className: className, + methodName: "getExam", + text: "Exception occured.", + exception: e, + stacktrace: StackTrace.current); + } + return []; + } + + static Future getLecture(int id) async { + try { + SecureStorage secureStorage = SecureStorage(); + final response = + await http.get(Uri.parse("$apiUrl/lectures/$id"), headers: { + "Authorization": + "Bearer ${await secureStorage.readSecureData('token')}", + }); + + if (response.statusCode == 200) { + FLog.info(text: "Successfully requested lecture."); + Map json = jsonDecode(response.body); + + List assistants = []; + for (var assistant in json['lecture']['assistants']) { + assistants.add(User( + id: assistant['id'], + name: "${assistant['title']} ${assistant['first_name']}", + lastName: assistant['last_name'], + email: assistant['email'], + )); + } + + return Lecture( + id: json['lecture']['id'], + name: json['lecture']['name'], + term: json['lecture']['term'], + lecturer: json['lecture']['lecturer'], + assistants: assistants, + url: json['lecture']['url'] == "" + ? "Keine Webseite angegeben" + : json['lecture']['url']); + } else { + throw Exception( + 'Failed to get lecture\nError code: ${response.statusCode}'); + } + } on SocketException { + FLog.error( + className: className, + methodName: "getLecture", + text: "Failed to connect to server.", + stacktrace: StackTrace.current); + throw NoServerConnectionException('Failed to connect to server.'); + } catch (e) { + FLog.error( + className: className, + methodName: "getLecture", + text: "Exception occured with lecture ID $id.", + exception: e, + stacktrace: StackTrace.current); + return Lecture(id: 0, name: "", term: "", lecturer: "", assistants: [], url: ""); + } + } + + static Future getTutorial(int id) async { + try { + SecureStorage secureStorage = SecureStorage(); + final response = + await http.get(Uri.parse("$apiUrl/tutorials/$id"), headers: { + "Authorization": + "Bearer ${await secureStorage.readSecureData('token')}", + }); + + if (response.statusCode == 200) { + FLog.info(text: "Successfully requested tutorial."); + Map json = jsonDecode(response.body); + var export = json['exams'] as List; + var exams = await Future.wait( + export.map((exam) => HttpRequest.getExam(exam['id']))); + + exams.sort((a, b) => a.id.compareTo(b.id)); + + return Tutorial( + id: json['id'], + lectureId: json['lecture_id'], + name: await HttpRequest.getLectureName(json['lecture_id']), + tutor: json['tutor'] != null + ? User.fromJson(json['tutor']) + : User(id: 0, name: "User", lastName: "not provided", email: ""), + place: json['place'], + time: json['time'], + exams: exams, + ); + } else { + throw Exception( + 'Failed to get lecture\nError code: ${response.statusCode}'); + } + } on SocketException { + FLog.error( + className: className, + methodName: "getTutorial", + text: "Failed to connect to server.", + stacktrace: StackTrace.current); + throw NoServerConnectionException('Failed to connect to server.'); + } catch (e) { + FLog.error( + className: className, + methodName: "getTutorial", + text: "Exception occured with tutorial ID $id.", + exception: e, + stacktrace: StackTrace.current); + return Tutorial(id: 0, lectureId: 0, name: "", tutor: User(id: 0, name: "", lastName: "", email: ""), place: "", time: "", exams: []); + } + } + + static Future getExam(int id) async { + try { + SecureStorage secureStorage = SecureStorage(); + final response = await http.get(Uri.parse("$apiUrl/exams/$id"), headers: { + "Authorization": + "Bearer ${await secureStorage.readSecureData('token')}", + }); + + if (response.statusCode == 200) { + FLog.info(text: "Successfully requested exam."); + Map json = jsonDecode(response.body); + return Exam( + id: json['id'], + name: json['name'], + url: json['url'], + exercises: await ExerciseList.fromJson(json['exercises']), + ); + } else { + throw Exception( + 'Failed to get exam\nError code: ${response.statusCode}'); + } + } on SocketException { + FLog.error( + className: className, + methodName: "getExam", + text: "Failed to connect to server.", + stacktrace: StackTrace.current); + throw NoServerConnectionException('Failed to connect to server.'); + } catch (e) { + FLog.error( + className: className, + methodName: "getExam", + text: "Exception occured with exam ID $id.", + exception: e, + stacktrace: StackTrace.current); + return Exam(id: 0, name: "", url: "", exercises: ExerciseList(exercises: [])); + } + } + + static Future getExerciseResultList(int id) async { + try { + SecureStorage secureStorage = SecureStorage(); + final response = await http.get( + Uri.parse( + "$apiUrl/exercises/$id/${int.parse(await secureStorage.readSecureData('userId'))}"), + headers: { + "Authorization": + "Bearer ${await secureStorage.readSecureData('token')}", + }); + + if (response.statusCode == 200) { + FLog.info(text: "Successfully requested exercise results."); + return ExerciseResultList.fromJson(jsonDecode(response.body)); + } else { + throw Exception( + 'Failed to get exercise\nError code: ${response.statusCode}'); + } + } on SocketException { + FLog.error( + className: className, + methodName: "getExerciseResultList", + text: "Failed to connect to server.", + stacktrace: StackTrace.current); + throw NoServerConnectionException('Failed to connect to server.'); + } catch (e) { + FLog.error( + className: className, + methodName: "getExerciseResultList", + text: "Exception occured with exercise results ID $id.", + exception: e, + stacktrace: StackTrace.current); + return ExerciseResultList(exerciseResults: []); + } + } + + static launchURLBrowser(String url) async { + if (await canLaunchUrl(Uri.parse(url))) { + await launchUrl(Uri.parse(url), mode: LaunchMode.externalApplication); + FLog.info(text: "Successfully launched url."); + } else { + FLog.warning( + className: className, + methodName: "launchURLBrowser", + text: "Could not launch url $url.", + stacktrace: StackTrace.current); + } + } +} diff --git a/lib/storage/storage.dart b/lib/storage/storage.dart new file mode 100755 index 0000000..7a92d92 --- /dev/null +++ b/lib/storage/storage.dart @@ -0,0 +1,17 @@ +import 'package:flutter_secure_storage/flutter_secure_storage.dart'; + +class SecureStorage { + final _storage = const FlutterSecureStorage(); + + Future writeSecureData(String key, String value) async { + await _storage.write(key: key, value: value); + } + + Future readSecureData(String key) async { + return await _storage.read(key: key) ?? ""; + } + + Future deleteSecureData(String key) async { + await _storage.delete(key: key); + } +} diff --git a/lib/ui/pages/lecture.dart b/lib/ui/pages/lecture.dart new file mode 100644 index 0000000..b031940 --- /dev/null +++ b/lib/ui/pages/lecture.dart @@ -0,0 +1,99 @@ +import 'package:f_logs/model/flog/flog.dart'; +import 'package:fading_edge_scrollview/fading_edge_scrollview.dart'; +import 'package:flutter/material.dart'; +import 'package:loading_animation_widget/loading_animation_widget.dart'; +import 'package:muesli_app/services/exceptions.dart'; +import 'package:muesli_app/services/request.dart'; +import 'package:muesli_app/model/lecture.dart' as models; +import 'package:muesli_app/ui/widgets/lecture.dart'; +import 'package:overlay_support/overlay_support.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:muesli_app/services/globals.dart' as globals; + +const String className = "LecturePage"; + +class LecturePage extends StatefulWidget { + const LecturePage({Key? key}) : super(key: key); + + @override + State createState() => _LecturePageState(); +} + +class _LecturePageState extends State + with AutomaticKeepAliveClientMixin { + @override + bool get wantKeepAlive => true; + + List lectureData = []; + + final _controller = ScrollController(); + + @override + void initState() { + super.initState(); + + // use async call to get a build context during initState + try { + _lectures = FutureBuilder( + future: HttpRequest.getLectureList(), + builder: (context, AsyncSnapshot> snapshot) { + if (snapshot.hasData) { + lectureData = snapshot.data!; + return Padding( + padding: const EdgeInsets.only(left: 14, right: 14, bottom: 14), + child: FadingEdgeScrollView.fromSingleChildScrollView( + child: SingleChildScrollView( + controller: _controller, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Flexible( + child: ListView.builder( + itemBuilder: (context, index) => Padding( + padding: const EdgeInsets.only(bottom: 10.0), + child: Lecture(lecture: lectureData[index])), + itemCount: lectureData.length, + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + ), + ), + ], + ), + ), + ), + ); + } else { + return LoadingAnimationWidget.fourRotatingDots( + color: Theme.of(context).colorScheme.onBackground, size: 45); + } + }, + ); + } on NoServerConnectionException { + _lectures = Container(); + FLog.error( + className: className, + methodName: "fromJson", + text: "No connection to server.", + stacktrace: StackTrace.current); + showSimpleNotification( + Text( + AppLocalizations.of(globals.context).no_connection_to_server, + style: TextStyle( + fontFamily: "Inter", + color: Theme.of(globals.context).colorScheme.onErrorContainer), + ), + background: Theme.of(globals.context).colorScheme.errorContainer, + slideDismissDirection: DismissDirection.up, + duration: const Duration(seconds: 3), + ); + } + } + + late Widget _lectures; + + @override + Widget build(BuildContext context) { + super.build(context); + return _lectures; + } +} diff --git a/lib/ui/pages/login.dart b/lib/ui/pages/login.dart new file mode 100755 index 0000000..c9bc3bf --- /dev/null +++ b/lib/ui/pages/login.dart @@ -0,0 +1,272 @@ +// ignore_for_file: use_build_context_synchronously + +import 'package:f_logs/model/flog/flog.dart'; +import 'package:flutter/material.dart'; +import 'package:loading_animation_widget/loading_animation_widget.dart'; +import 'package:muesli_app/services/exceptions.dart'; +import 'package:muesli_app/services/request.dart'; +import 'package:muesli_app/storage/storage.dart'; +import 'package:muesli_app/ui/pages/overview.dart'; +import 'package:muesli_app/ui/widgets/muesliappbar.dart'; +import 'package:overlay_support/overlay_support.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:shared_preferences/shared_preferences.dart'; + +const String className = "LoginPage"; + +class LoginPage extends StatefulWidget { + const LoginPage({Key? key}) : super(key: key); + + @override + State createState() => _LoginPageState(); +} + +class _LoginPageState extends State { + final TextEditingController _usernameController = TextEditingController(); + final TextEditingController _passwordController = TextEditingController(); + + // validate username is an email address + bool _isUsernameValid(String username) { + return RegExp( + r"^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,253}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,253}[a-zA-Z0-9])?)*$") + .hasMatch(username); + } + + bool _loading = false; + + void _login(BuildContext context) async { + if (_isUsernameValid(_usernameController.text) && + !(_passwordController.text == "")) { + FocusManager.instance.primaryFocus?.unfocus(); + setState(() { + _loading = true; + }); + + final secureStorage = SecureStorage(); + final prefs = await SharedPreferences.getInstance(); + secureStorage.writeSecureData("username", _usernameController.text); + secureStorage.writeSecureData("password", _passwordController.text); + String token; + + try { + token = await HttpRequest.authenticate( + await secureStorage.readSecureData("username"), + await secureStorage.readSecureData("password"), + ); + secureStorage.writeSecureData("token", token); + + final now = DateTime.now(); + + prefs.setInt( + "expireDate", + DateTime(now.year, now.month, now.day + 29) + .toUtc() + .millisecondsSinceEpoch); + + setState(() { + _loading = false; + }); + + secureStorage.writeSecureData( + "userId", (await HttpRequest.getUserData()).id.toString()); + + Navigator.pushReplacement(context, + MaterialPageRoute(builder: ((context) => const OverviewPage()))); + } on NoServerConnectionException { + setState(() { + _loading = false; + }); + + showSimpleNotification( + Text( + AppLocalizations.of(context).no_connection_to_server, + style: TextStyle( + fontFamily: "Inter", + color: Theme.of(context).colorScheme.onErrorContainer), + ), + background: Theme.of(context).colorScheme.errorContainer, + slideDismissDirection: DismissDirection.up, + duration: const Duration(seconds: 3), + ); + } catch (e) { + setState(() { + _loading = false; + }); + + FLog.error( + className: className, + methodName: "_login", + text: "Exception occured:", + exception: e, + stacktrace: StackTrace.current); + } + } else { + FLog.info(text: "No email or password entered."); + showSimpleNotification( + Text( + AppLocalizations.of(context).no_email_or_password_entered, + style: TextStyle( + fontFamily: "Inter", + color: Theme.of(context).colorScheme.onErrorContainer), + ), + background: Theme.of(context).colorScheme.errorContainer, + slideDismissDirection: DismissDirection.up, + duration: const Duration(seconds: 3), + ); + } + } + + @override + Widget build(BuildContext context) { + return Stack( + children: [ + Scaffold( + resizeToAvoidBottomInset: false, + body: SafeArea( + child: Column( + children: [ + MuesliAppBar( + children: [ + Expanded( + child: Center( + child: Text( + AppLocalizations.of(context).login, + style: const TextStyle( + fontSize: 28, + fontWeight: FontWeight.bold, + fontFamily: "Inter"), + ), + ), + ), + ], + ), + SizedBox( + height: 150, + width: 150, + child: Image.asset("assets/cereal.png"), + ), + Padding( + padding: + const EdgeInsets.only(left: 20, right: 20, bottom: 20), + child: SingleChildScrollView( + child: Column( + children: [ + Text( + AppLocalizations.of(context).login_description, + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 12, + fontFamily: "Inter", + fontWeight: FontWeight.bold, + color: Theme.of(context).colorScheme.onBackground, + ), + ), + const SizedBox(height: 10), + AutofillGroup( + child: Column( + children: [ + TextField( + controller: _usernameController, + keyboardType: TextInputType.emailAddress, + autofillHints: const [AutofillHints.email], + decoration: InputDecoration( + labelText: + AppLocalizations.of(context).email_login, + labelStyle: TextStyle( + fontSize: 16, + fontFamily: "Inter", + fontWeight: FontWeight.bold, + color: Theme.of(context) + .colorScheme + .onBackground, + ), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(10), + borderSide: BorderSide( + color: Theme.of(context) + .colorScheme + .onBackground)), + ), + ), + const SizedBox(height: 20), + TextField( + controller: _passwordController, + keyboardType: TextInputType.visiblePassword, + autofillHints: const [AutofillHints.password], + obscureText: true, + decoration: InputDecoration( + labelText: AppLocalizations.of(context) + .password_login, + labelStyle: TextStyle( + fontSize: 16, + fontFamily: "Inter", + fontWeight: FontWeight.bold, + color: Theme.of(context) + .colorScheme + .onBackground, + ), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(10), + borderSide: BorderSide( + color: Theme.of(context) + .colorScheme + .onBackground)), + ), + ), + ], + ), + ), + const SizedBox(height: 20), + GestureDetector( + onTapDown: (details) => _login(context), + child: Container( + width: 125, + height: 50, + decoration: BoxDecoration( + color: Theme.of(context) + .colorScheme + .secondaryContainer + .withOpacity(0.7), + borderRadius: BorderRadius.circular(10), + ), + child: Center( + child: Text( + AppLocalizations.of(context).execute_login, + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 16, + fontFamily: "Inter", + fontWeight: FontWeight.bold, + color: Theme.of(context) + .colorScheme + .onSecondaryContainer, + ), + ), + ), + ), + ), + ], + ), + ), + ), + ], + ), + ), + ), + _loading + ? Container( + decoration: BoxDecoration( + color: + Theme.of(context).colorScheme.background.withOpacity(0.7), + ), + child: Center( + child: LoadingAnimationWidget.fourRotatingDots( + color: Theme.of(context).colorScheme.onBackground, + size: 45), + ), + ) + : Container(), + ], + ); + } +} diff --git a/lib/ui/pages/overview.dart b/lib/ui/pages/overview.dart new file mode 100755 index 0000000..ebfe18b --- /dev/null +++ b/lib/ui/pages/overview.dart @@ -0,0 +1,131 @@ +import 'dart:math'; +import 'package:f_logs/f_logs.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:muesli_app/storage/storage.dart'; +import 'package:muesli_app/ui/pages/lecture.dart'; +import 'package:muesli_app/ui/pages/login.dart'; +import 'package:muesli_app/ui/pages/tutorial.dart'; +import 'package:muesli_app/ui/widgets/muesliappbar.dart'; +import 'package:muesli_app/ui/widgets/settings.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:muesli_app/services/globals.dart' as globals; + +class OverviewPage extends StatefulWidget { + const OverviewPage({Key? key}) : super(key: key); + + @override + State createState() => _OverviewPageState(); +} + +class _OverviewPageState extends State + with AutomaticKeepAliveClientMixin { + @override + bool get wantKeepAlive => true; + + SecureStorage secureStorage = SecureStorage(); + int _currentPageIndex = 0; + final PageController _pageController = PageController(initialPage: 0); + + @override + void dispose() { + _pageController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + super.build(context); + return Scaffold( + bottomNavigationBar: NavigationBar( + onDestinationSelected: (int index) { + setState(() { + _currentPageIndex = index; + _pageController.jumpToPage(index); + }); + }, + selectedIndex: _currentPageIndex, + destinations: [ + NavigationDestination( + icon: const Icon(Icons.book_outlined), + selectedIcon: const Icon(Icons.book), + label: AppLocalizations.of(context).tutorials_navbar), + NavigationDestination( + icon: const Icon(Icons.summarize_outlined), + selectedIcon: const Icon(Icons.summarize), + label: AppLocalizations.of(context).lectures_navbar), + ], + ), + body: SafeArea( + bottom: false, + child: Column( + children: [ + MuesliAppBar( + children: [ + GestureDetector( + onTap: () { + secureStorage.deleteSecureData("token"); + secureStorage.deleteSecureData("username"); + secureStorage.deleteSecureData("password"); + globals.prefs.remove("expireDate"); + + FLog.info(text: "Successcully logged out."); + + Navigator.pushReplacement( + context, + MaterialPageRoute( + builder: (context) => const LoginPage(), + )); + }, + child: Transform.rotate( + angle: pi, + child: SvgPicture.asset( + "assets/logout.svg", + colorFilter: ColorFilter.mode( + Theme.of(context).colorScheme.onBackground, + BlendMode.srcIn), + width: 25, + height: 25, + ), + ), + ), + Text( + AppLocalizations.of(context).overview_header, + style: TextStyle( + fontSize: 28, + fontWeight: FontWeight.bold, + fontFamily: "Inter", + color: Theme.of(context).colorScheme.onBackground, + ), + ), + GestureDetector( + onTap: () { + FLog.info(text: "Open Settings Dialog."); + showDialog( + context: context, + builder: (BuildContext context) => const Settings()); + }, + child: SvgPicture.asset( + "assets/settings.svg", + colorFilter: ColorFilter.mode( + Theme.of(context).colorScheme.onBackground, + BlendMode.srcIn), + width: 25, + height: 25, + ), + ), + ], + ), + Expanded( + child: PageView( + controller: _pageController, + physics: const NeverScrollableScrollPhysics(), + children: [TutorialPage(), const LecturePage()], + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/ui/pages/tutorial.dart b/lib/ui/pages/tutorial.dart new file mode 100644 index 0000000..17f9b75 --- /dev/null +++ b/lib/ui/pages/tutorial.dart @@ -0,0 +1,72 @@ +import 'package:flutter/material.dart'; +import 'package:loading_animation_widget/loading_animation_widget.dart'; +import 'package:muesli_app/services/request.dart'; +import 'package:muesli_app/storage/storage.dart'; +import 'package:muesli_app/model/tutorial.dart' as models; +import 'package:muesli_app/ui/widgets/tutorial.dart' as widgets; +import 'package:muesli_app/ui/widgets/tutorialsnapscrolllist.dart'; + +class TutorialPage extends StatefulWidget { + TutorialPage({Key? key}) : super(key: key); + + final SecureStorage secureStorage = SecureStorage(); + + @override + State createState() => _TutorialPageState(); +} + +class _TutorialPageState extends State + with AutomaticKeepAliveClientMixin { + @override + bool get wantKeepAlive => true; + + late Widget _tutorials; + + @override + void initState() { + super.initState(); + + _tutorials = FutureBuilder>( + future: HttpRequest.getTutorialList(), + builder: (context, AsyncSnapshot> snapshot) { + if (snapshot.hasData) { + tutorialData = snapshot.data!; + return TutorialScrollSnapList( + itemCount: tutorialData.length, + buildItemList: (context, index) => _buildItemList(context, index), + tutorialData: tutorialData, + noDataWidget: Container()); + } + return LoadingAnimationWidget.fourRotatingDots( + color: Theme.of(context).colorScheme.onBackground, size: 45); + }, + ); + } + + List tutorialData = []; + + Widget _buildItemList(BuildContext context, int index) { + if (index == tutorialData.length) { + return Center( + child: LoadingAnimationWidget.fourRotatingDots( + color: Theme.of(context).colorScheme.onBackground, size: 45), + ); + } + return SizedBox( + width: 340, + child: Padding( + padding: const EdgeInsets.only(left: 5, right: 5), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [widgets.Tutorial(tutorial: tutorialData[index])], + ), + ), + ); + } + + @override + Widget build(BuildContext context) { + super.build(context); + return _tutorials; + } +} diff --git a/lib/ui/widgets/card.dart b/lib/ui/widgets/card.dart new file mode 100755 index 0000000..23836b1 --- /dev/null +++ b/lib/ui/widgets/card.dart @@ -0,0 +1,24 @@ +import 'package:flutter/material.dart'; + +class Card extends StatelessWidget { + const Card({Key? key, this.child, this.height = 170, required this.color}) : super(key: key); + + final Widget? child; + + final double height; + + final Color color; + + @override + Widget build(BuildContext context) { + return Container( + height: height, + width: double.maxFinite, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(25), + color: color, + ), + child: child, + ); + } +} diff --git a/lib/ui/widgets/dialogbox.dart b/lib/ui/widgets/dialogbox.dart new file mode 100644 index 0000000..065354b --- /dev/null +++ b/lib/ui/widgets/dialogbox.dart @@ -0,0 +1,116 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; + +class DialogBox extends StatelessWidget { + const DialogBox( + {Key? key, + required this.iconPath, + required this.children, + required this.buttonText, + required this.onPressed, + required this.title}) + : super(key: key); + + final String title; + final String iconPath; + final List children; + final String buttonText; + final Function onPressed; + + @override + Widget build(BuildContext context) { + return Dialog( + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(30)), + elevation: 0, + backgroundColor: Colors.transparent, + child: Stack( + children: [ + Container( + margin: const EdgeInsets.only(top: 28), + padding: + const EdgeInsets.only(left: 20, right: 20, bottom: 20, top: 30), + decoration: BoxDecoration( + shape: BoxShape.rectangle, + color: Theme.of(context) + .colorScheme + .secondaryContainer + .withOpacity(0.7), + borderRadius: BorderRadius.circular(25), + boxShadow: const [ + BoxShadow( + color: Colors.black, offset: Offset(0, 10), blurRadius: 10), + ], + ), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + title, + style: TextStyle( + fontSize: 22, + color: Theme.of(context).colorScheme.onSecondaryContainer, + fontWeight: FontWeight.bold), + ), + const SizedBox( + height: 15, + ), + Column( + children: children, + ), + const SizedBox( + height: 22, + ), + Align( + alignment: Alignment.bottomRight, + child: GestureDetector( + onTapDown: (details) => onPressed(), + child: Container( + width: 100, + height: 40, + decoration: BoxDecoration( + color: const Color(0xFF465770), + borderRadius: BorderRadius.circular(10), + ), + child: Center( + child: Text( + buttonText, + textAlign: TextAlign.center, + style: const TextStyle( + fontSize: 16, + fontFamily: "Inter", + fontWeight: FontWeight.bold, + color: Colors.white, + ), + ), + ), + ), + ), + ), + ], + ), + ), + Positioned( + left: 20, + right: 20, + child: CircleAvatar( + backgroundColor: Theme.of(context).colorScheme.secondaryContainer, + radius: 28, + child: ClipRRect( + borderRadius: const BorderRadius.all(Radius.circular(25)), + child: SvgPicture.asset( + iconPath, + colorFilter: ColorFilter.mode( + Theme.of(context).colorScheme.onSecondaryContainer, + BlendMode.srcIn), + width: 35, + height: 35, + ), + ), + ), + ), + ], + ), + ); + } +} diff --git a/lib/ui/widgets/exam.dart b/lib/ui/widgets/exam.dart new file mode 100755 index 0000000..e608afd --- /dev/null +++ b/lib/ui/widgets/exam.dart @@ -0,0 +1,29 @@ +import 'package:flutter/material.dart'; +import 'package:muesli_app/model/exam.dart' as models; +import 'package:muesli_app/ui/widgets/exerciselist.dart'; + +class Exam extends StatelessWidget { + const Exam({Key? key, required this.exam}) : super(key: key); + + final models.Exam exam; + + @override + Widget build(BuildContext context) { + return Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(exam.name.length > 20 ? "${exam.name.substring(0, 20)}..." : exam.name, + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, + fontFamily: "Inter", + color: Theme.of(context).colorScheme.onSecondaryContainer.withOpacity(0.8))), + const SizedBox( + width: 30, + ), + ExerciseList(exercises: exam.exercises), + ], + ); + } +} diff --git a/lib/ui/widgets/examlist.dart b/lib/ui/widgets/examlist.dart new file mode 100755 index 0000000..97dc0fb --- /dev/null +++ b/lib/ui/widgets/examlist.dart @@ -0,0 +1,83 @@ +import 'package:flutter/material.dart'; +import 'package:muesli_app/model/exam.dart'; +import 'package:muesli_app/ui/widgets/card.dart' as widgets; +import 'package:muesli_app/ui/widgets/exam.dart' as widgets; +import 'package:muesli_app/ui/widgets/icontextpair.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; + +class ExamList extends StatelessWidget { + const ExamList( + {Key? key, + required this.exams, + required this.percentage, + this.maxPoints = 0, + this.points = 0}) + : super(key: key); + + final List exams; + final double percentage; + final double maxPoints; + final double points; + + @override + Widget build(BuildContext context) { + return Expanded( + child: Padding( + padding: const EdgeInsets.only(left: 20, right: 20, bottom: 10), + child: widgets.Card( + color: Theme.of(context).colorScheme.secondaryContainer.withOpacity(0.4), + height: 500, + child: Container( + margin: + const EdgeInsets.only(left: 16, right: 16, top: 10, bottom: 10), + child: exams.isNotEmpty + ? Column( + children: [ + Stack( + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(20), + child: LinearProgressIndicator( + value: percentage, + minHeight: 20, + backgroundColor: Theme.of(context).colorScheme.secondaryContainer, + valueColor: AlwaysStoppedAnimation( + Theme.of(context).colorScheme.onSecondaryContainer.withOpacity(0.6), + ), + ), + ), + Padding( + padding: const EdgeInsets.only(left: 10), + child: Text( + "$points/$maxPoints ${AppLocalizations.of(context).total_points_examlist} (${(percentage*100).toInt()}%)", + style: const TextStyle( + color: Colors.white, fontFamily: "Inter", fontWeight: FontWeight.bold), + ), + ), + ], + ), + const SizedBox(height: 10), + Expanded( + child: SingleChildScrollView( + child: Column( + children: exams + .map((exam) => widgets.Exam(exam: exam)) + .toList(), + ), + ), + ), + ], + ) + : Center( + child: IconTextPair( + iconPath: "assets/sheet.svg", + text: AppLocalizations.of(context).no_exams_available, + direction: Axis.vertical, + ), + ), + ), + ), + ), + ); + } +} diff --git a/lib/ui/widgets/exercise.dart b/lib/ui/widgets/exercise.dart new file mode 100755 index 0000000..7ef8d47 --- /dev/null +++ b/lib/ui/widgets/exercise.dart @@ -0,0 +1,22 @@ +import 'package:auto_size_text/auto_size_text.dart'; +import 'package:flutter/material.dart'; +import 'package:muesli_app/model/exercise.dart' as models; + +class Exercise extends StatelessWidget { + const Exercise({Key? key, required this.exercise}) : super(key: key); + + final models.Exercise exercise; + + @override + Widget build(BuildContext context) { + return AutoSizeText( + "${exercise.exerciseResult.points} / ${exercise.maxPoints}", + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, + fontFamily: "Inter", + color: Theme.of(context).colorScheme.onSecondaryContainer.withOpacity(0.8), + ), + ); + } +} diff --git a/lib/ui/widgets/exerciselist.dart b/lib/ui/widgets/exerciselist.dart new file mode 100755 index 0000000..d875969 --- /dev/null +++ b/lib/ui/widgets/exerciselist.dart @@ -0,0 +1,21 @@ +import 'package:flutter/cupertino.dart'; +import 'package:muesli_app/model/exerciselist.dart' as models; +import 'package:muesli_app/ui/widgets/exercise.dart' as widgets; + +class ExerciseList extends StatelessWidget { + const ExerciseList({Key? key, required this.exercises}) : super(key: key); + + final models.ExerciseList exercises; + + @override + Widget build(BuildContext context) { + return Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.end, + children: exercises.exercises + .map((exercise) => widgets.Exercise(exercise: exercise)) + .toList(), + ), + ); + } +} diff --git a/lib/ui/widgets/icontextpair.dart b/lib/ui/widgets/icontextpair.dart new file mode 100755 index 0000000..559e907 --- /dev/null +++ b/lib/ui/widgets/icontextpair.dart @@ -0,0 +1,46 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; + +class IconTextPair extends StatelessWidget { + const IconTextPair( + {Key? key, + required this.iconPath, + required this.text, + this.direction = Axis.horizontal}) + : super(key: key); + + final String iconPath; + final String text; + final Axis direction; + + @override + Widget build(BuildContext context) { + return Wrap( + direction: direction, + crossAxisAlignment: WrapCrossAlignment.center, + spacing: 10, + children: [ + SvgPicture.asset( + iconPath, + colorFilter: ColorFilter.mode( + Theme.of(context) + .colorScheme + .onSecondaryContainer + .withOpacity(0.8), + BlendMode.srcIn), + width: 25, + height: 25, + ), + Text(text, + style: TextStyle( + fontSize: 16, + fontFamily: "Inter", + fontWeight: FontWeight.bold, + color: Theme.of(context) + .colorScheme + .onSecondaryContainer + .withOpacity(0.8))), + ], + ); + } +} diff --git a/lib/ui/widgets/lecture.dart b/lib/ui/widgets/lecture.dart new file mode 100644 index 0000000..4e7c5c4 --- /dev/null +++ b/lib/ui/widgets/lecture.dart @@ -0,0 +1,81 @@ +import 'package:auto_size_text/auto_size_text.dart'; +import 'package:flutter/material.dart'; +import 'package:muesli_app/services/request.dart'; +import 'package:muesli_app/model/lecture.dart' as models; +import 'package:muesli_app/ui/widgets/card.dart' as widget; +import 'package:muesli_app/ui/widgets/icontextpair.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; + +class Lecture extends StatelessWidget { + const Lecture({Key? key, required this.lecture}) : super(key: key); + + final models.Lecture lecture; + + @override + Widget build(BuildContext context) { + List assistants = []; + lecture.assistants.map((assistant) { + if (!lecture.lecturer.contains(assistant.lastName)) { + assistants.add("${assistant.name} ${assistant.lastName}"); + } + }).toList(); + + return GestureDetector( + onTap: () { + HttpRequest.launchURLBrowser(lecture.url); + }, + child: widget.Card( + color: + Theme.of(context).colorScheme.secondaryContainer.withOpacity(0.4), + child: Padding( + padding: const EdgeInsets.all(14), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox( + width: MediaQuery.of(context).size.width, + child: AutoSizeText( + lecture.name, + maxLines: 2, + style: TextStyle( + fontSize: 22, + fontWeight: FontWeight.bold, + fontFamily: "Inter", + color: Theme.of(context) + .colorScheme + .onSecondaryContainer + .withOpacity(0.8), + ), + ), + ), + Expanded( + child: Wrap( + alignment: WrapAlignment.spaceEvenly, + direction: Axis.vertical, + children: [ + IconTextPair( + iconPath: "assets/time.svg", text: lecture.term), + IconTextPair( + iconPath: "assets/person.svg", + text: lecture.lecturer.isEmpty + ? AppLocalizations.of(context).no_lecturer_lecture + : lecture.lecturer.length < 40 + ? lecture.lecturer + : "${lecture.lecturer.substring(0, 40)}..."), + IconTextPair( + iconPath: "assets/multi_person.svg", + text: assistants.isEmpty + ? AppLocalizations.of(context).no_assistants_lecture + : assistants.join(", ").length < 35 + ? assistants.join(", ") + : "${assistants.join(", ").substring(0, 35)}..."), + ], + ), + ), + ], + ), + ), + ), + ); + } +} diff --git a/lib/ui/widgets/muesliappbar.dart b/lib/ui/widgets/muesliappbar.dart new file mode 100755 index 0000000..edacfc2 --- /dev/null +++ b/lib/ui/widgets/muesliappbar.dart @@ -0,0 +1,27 @@ +import 'package:flutter/material.dart'; +import 'package:muesli_app/storage/storage.dart'; + +class MuesliAppBar extends StatelessWidget { + MuesliAppBar({Key? key, required this.children}) : super(key: key); + + final List children; + final SecureStorage secureStorage = SecureStorage(); + + @override + Widget build(BuildContext context) { + return Column( + children: [ + Padding( + padding: const EdgeInsets.symmetric(horizontal: 20), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: children, + ), + ), + Divider( + color: Theme.of(context).colorScheme.onBackground, + ), + ], + ); + } +} diff --git a/lib/ui/widgets/settings.dart b/lib/ui/widgets/settings.dart new file mode 100644 index 0000000..5b14e3a --- /dev/null +++ b/lib/ui/widgets/settings.dart @@ -0,0 +1,106 @@ +// ignore_for_file: use_build_context_synchronously + +import 'dart:io'; +import 'package:f_logs/model/flog/flog.dart'; +import 'package:flutter/material.dart'; +import 'package:muesli_app/services/request.dart'; +import 'package:muesli_app/ui/widgets/dialogbox.dart'; +import 'package:muesli_app/ui/widgets/settingsmenubutton.dart'; +import 'package:muesli_app/services/globals.dart' as globals; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:overlay_support/overlay_support.dart'; + +class Settings extends StatefulWidget { + const Settings({Key? key}) : super(key: key); + + @override + State createState() => _SettingsState(); +} + +class _SettingsState extends State { + @override + Widget build(BuildContext context) { + return DialogBox( + title: AppLocalizations.of(context).settings, + iconPath: "assets/settings.svg", + onPressed: () => Navigator.pop(context), + buttonText: AppLocalizations.of(context).save_settings, + children: [ + Text( + "${AppLocalizations.of(context).available_soon}:\n${AppLocalizations.of(context).notifications_new_lectures}", + style: TextStyle( + fontFamily: "Inter", + color: Theme.of(context) + .colorScheme + .onSecondaryContainer + .withOpacity(0.8)), + ), + const SizedBox(height: 10), + SettingsMenuButton( + text: AppLocalizations.of(context).legal_notice_settings, + onTap: () => Navigator.push( + context, + MaterialPageRoute( + builder: ((context) => LicensePage( + applicationName: AppLocalizations.of(context).app_name, + applicationVersion: globals.packageInfo.version, + )), + ), + ), + ), + SettingsMenuButton( + text: AppLocalizations.of(context).github_settings, + onTap: () { + HttpRequest.launchURLBrowser( + "https://github.com/niels-beier/muesli_app"); + }), + SettingsMenuButton( + text: + "${AppLocalizations.of(context).version_settings} ${globals.packageInfo.version}", + onTap: () {}), + SettingsMenuButton( + text: AppLocalizations.of(context).export_logs_settings, + onTap: () async { + File exported = await FLog.exportLogs(); + if (Platform.isAndroid) { + showSimpleNotification( + Text( + "${AppLocalizations.of(context).exported_logs_success} ${exported.path}"), + duration: const Duration(seconds: 5)); + FLog.info(text: "Exported logs."); + } else { + // TODO: Add share menu for exporting on iOS + } + }), + SettingsMenuButton( + text: AppLocalizations.of(context).privacy_settings, + onTap: () { + if (Platform.isAndroid) { + showDialog( + context: context, + builder: (_) => AlertDialog( + title: Text(AppLocalizations.of(context).privacy_settings), + content: Text(AppLocalizations.of(context).privacy_content), + actions: [ + TextButton( + onPressed: () => Navigator.of(context).pop(), + child: Text( + "OK", + style: TextStyle( + color: Theme.of(context) + .colorScheme + .onSecondaryContainer), + ), + ), + ], + backgroundColor: + Theme.of(context).colorScheme.secondaryContainer, + ), + ); + } + }), + const Divider(), + ], + ); + } +} diff --git a/lib/ui/widgets/settingsmenubutton.dart b/lib/ui/widgets/settingsmenubutton.dart new file mode 100644 index 0000000..85ed536 --- /dev/null +++ b/lib/ui/widgets/settingsmenubutton.dart @@ -0,0 +1,22 @@ +import 'package:flutter/material.dart'; + +class SettingsMenuButton extends StatelessWidget { + const SettingsMenuButton({Key? key, required this.text, required this.onTap}) + : super(key: key); + + final String text; + final Function onTap; + + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: () => onTap(), + child: Column( + children: [ + const Divider(), + Text(text, style: const TextStyle(fontFamily: "Inter"),), + ], + ), + ); + } +} diff --git a/lib/ui/widgets/tutorial.dart b/lib/ui/widgets/tutorial.dart new file mode 100755 index 0000000..34e6abd --- /dev/null +++ b/lib/ui/widgets/tutorial.dart @@ -0,0 +1,58 @@ +import 'package:auto_size_text/auto_size_text.dart'; +import 'package:flutter/material.dart'; +import 'package:muesli_app/model/tutorial.dart' as models; +import 'package:muesli_app/ui/widgets/card.dart' as widget; +import 'package:muesli_app/ui/widgets/icontextpair.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; + +class Tutorial extends StatelessWidget { + const Tutorial({Key? key, required this.tutorial}) : super(key: key); + + final models.Tutorial tutorial; + + @override + Widget build(BuildContext context) { + return widget.Card( + color: Theme.of(context).colorScheme.secondaryContainer.withOpacity(0.4), + child: Padding( + padding: const EdgeInsets.all(14), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox( + width: MediaQuery.of(context).size.width, + child: AutoSizeText( + tutorial.name, + maxLines: 2, + style: TextStyle( + fontSize: 22, + fontWeight: FontWeight.bold, + fontFamily: "Inter", + color: Theme.of(context).colorScheme.onSecondaryContainer.withOpacity(0.8), + ), + ), + ), + Expanded( + flex: 1, + child: Wrap( + alignment: WrapAlignment.spaceEvenly, + direction: Axis.vertical, + children: [ + IconTextPair( + iconPath: "assets/time.svg", + text: "${tutorial.time} ${AppLocalizations.of(context).o_clock_tutorial}"), + IconTextPair( + iconPath: "assets/person.svg", + text: + "${tutorial.tutor.name} ${tutorial.tutor.lastName}"), + IconTextPair( + iconPath: "assets/place.svg", text: tutorial.place.length > 30 ? "${tutorial.place.substring(0, 30)}..." : tutorial.place), + ], + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/ui/widgets/tutorialsnapscrolllist.dart b/lib/ui/widgets/tutorialsnapscrolllist.dart new file mode 100644 index 0000000..0d44fc8 --- /dev/null +++ b/lib/ui/widgets/tutorialsnapscrolllist.dart @@ -0,0 +1,91 @@ +import 'package:flutter/material.dart'; +import 'package:muesli_app/model/tutorial.dart'; +import 'package:muesli_app/ui/widgets/examlist.dart'; +import 'dart:io' show Platform; + +import 'package:scroll_snap_list/scroll_snap_list.dart'; + +// ignore: must_be_immutable +class TutorialScrollSnapList extends StatefulWidget { + TutorialScrollSnapList( + {Key? key, + required this.buildItemList, + required this.itemCount, + required this.tutorialData, required this.noDataWidget}) + : super(key: key); + + final Widget Function(BuildContext, int) buildItemList; + final int itemCount; + final List tutorialData; + final Widget noDataWidget; + + int _selectedIndex = 0; + + @override + State createState() => _TutorialScrollSnapListState(); +} + +class _TutorialScrollSnapListState extends State { + final List _percentages = []; + final List _maxPoints = []; + final List _points = []; + + @override + void initState() { + super.initState(); + for (var tutorial in widget.tutorialData) { + double maxPoints = 0; + double points = 0; + for (var exam in tutorial.exams) { + for (var exercise in exam.exercises.exercises) { + maxPoints += exercise.maxPoints; + points += exercise.exerciseResult.points; + } + } + _percentages + .add(maxPoints != 0 && !maxPoints.isNaN ? points / maxPoints : 0); + _maxPoints.add(maxPoints); + _points.add(points); + } + } + + @override + Widget build(BuildContext context) { + return widget.tutorialData.isNotEmpty + ? Column( + children: [ + SizedBox( + height: 170, + child: ScrollSnapList( + itemBuilder: widget.buildItemList, + itemSize: 340, + onReachEnd: () {}, + itemCount: widget.itemCount, + scrollPhysics: + Platform.isIOS ? const BouncingScrollPhysics() : null, + onItemFocus: (current) { + setState(() { + widget._selectedIndex = current; + }); + }, + ), + ), + const SizedBox(height: 10), + SizedBox( + width: 260, + child: Divider( + color: Theme.of(context).colorScheme.onBackground, + ), + ), + const SizedBox(height: 10), + ExamList( + exams: widget.tutorialData[widget._selectedIndex].exams, + percentage: _percentages[widget._selectedIndex], + maxPoints: _maxPoints[widget._selectedIndex], + points: _points[widget._selectedIndex], + ), + ], + ) + : widget.noDataWidget; + } +} diff --git a/pubspec.lock b/pubspec.lock new file mode 100644 index 0000000..e77273a --- /dev/null +++ b/pubspec.lock @@ -0,0 +1,775 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + adaptive_action_sheet: + dependency: "direct main" + description: + name: adaptive_action_sheet + sha256: "2cf53889102f2f476d03da30ef4219a3199f1d9b9f7bf063e2b23cd5aa88ea02" + url: "https://pub.dev" + source: hosted + version: "2.0.2" + archive: + dependency: transitive + description: + name: archive + sha256: d6347d54a2d8028e0437e3c099f66fdb8ae02c4720c1e7534c9f24c10351f85d + url: "https://pub.dev" + source: hosted + version: "3.3.6" + args: + dependency: transitive + description: + name: args + sha256: "4cab82a83ffef80b262ddedf47a0a8e56ee6fbf7fe21e6e768b02792034dd440" + url: "https://pub.dev" + source: hosted + version: "2.4.0" + async: + dependency: transitive + description: + name: async + sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 + url: "https://pub.dev" + source: hosted + version: "2.10.0" + auto_size_text: + dependency: "direct main" + description: + name: auto_size_text + sha256: "3f5261cd3fb5f2a9ab4e2fc3fba84fd9fcaac8821f20a1d4e71f557521b22599" + url: "https://pub.dev" + source: hosted + version: "3.0.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + characters: + dependency: transitive + description: + name: characters + sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c + url: "https://pub.dev" + source: hosted + version: "1.2.1" + checked_yaml: + dependency: transitive + description: + name: checked_yaml + sha256: "3d1505d91afa809d177efd4eed5bb0eb65805097a1463abdd2add076effae311" + url: "https://pub.dev" + source: hosted + version: "2.0.2" + cli_util: + dependency: transitive + description: + name: cli_util + sha256: "66f86e916d285c1a93d3b79587d94bd71984a66aac4ff74e524cfa7877f1395c" + url: "https://pub.dev" + source: hosted + version: "0.3.5" + 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: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 + url: "https://pub.dev" + source: hosted + version: "1.17.0" + convert: + dependency: transitive + description: + name: convert + sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" + url: "https://pub.dev" + source: hosted + version: "3.1.1" + crypto: + dependency: transitive + description: + name: crypto + sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67 + url: "https://pub.dev" + source: hosted + version: "3.0.2" + device_info_plus: + dependency: "direct main" + description: + name: device_info_plus + sha256: "1d6e5a61674ba3a68fb048a7c7b4ff4bebfed8d7379dbe8f2b718231be9a7c95" + url: "https://pub.dev" + source: hosted + version: "8.1.0" + device_info_plus_platform_interface: + dependency: transitive + description: + name: device_info_plus_platform_interface + sha256: d3b01d5868b50ae571cd1dc6e502fc94d956b665756180f7b16ead09e836fd64 + url: "https://pub.dev" + source: hosted + version: "7.0.0" + dynamic_color: + dependency: "direct main" + description: + name: dynamic_color + sha256: c4a508284b14ec4dda5adba2c28b2cdd34fbae1afead7e8c52cad87d51c5405b + url: "https://pub.dev" + source: hosted + version: "1.6.2" + f_logs: + dependency: "direct main" + description: + name: f_logs + sha256: "8ccf733949dcc934d7c7425e94a973cee71af1d7675b94dd1fbd6cbe707a3ce7" + url: "https://pub.dev" + source: hosted + version: "2.0.1" + fading_edge_scrollview: + dependency: "direct main" + description: + name: fading_edge_scrollview + sha256: c25c2231652ce774cc31824d0112f11f653881f43d7f5302c05af11942052031 + url: "https://pub.dev" + source: hosted + version: "3.0.0" + 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: a38574032c5f1dd06c4aee541789906c12ccaab8ba01446e800d9c5b79c4a978 + url: "https://pub.dev" + source: hosted + version: "2.0.1" + file: + dependency: transitive + description: + name: file + sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" + url: "https://pub.dev" + source: hosted + version: "6.1.4" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_launcher_icons: + dependency: "direct main" + description: + name: flutter_launcher_icons + sha256: ce0e501cfc258907842238e4ca605e74b7fd1cdf04b3b43e86c43f3e40a1592c + url: "https://pub.dev" + source: hosted + version: "0.11.0" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + sha256: aeb0b80a8b3709709c9cc496cdc027c5b3216796bc0af0ce1007eaf24464fd4c + url: "https://pub.dev" + source: hosted + version: "2.0.1" + flutter_localizations: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_secure_storage: + dependency: "direct main" + description: + name: flutter_secure_storage + sha256: "98352186ee7ad3639ccc77ad7924b773ff6883076ab952437d20f18a61f0a7c5" + url: "https://pub.dev" + source: hosted + version: "8.0.0" + flutter_secure_storage_linux: + dependency: transitive + description: + name: flutter_secure_storage_linux + sha256: "0912ae29a572230ad52d8a4697e5518d7f0f429052fd51df7e5a7952c7efe2a3" + url: "https://pub.dev" + source: hosted + version: "1.1.3" + flutter_secure_storage_macos: + dependency: transitive + description: + name: flutter_secure_storage_macos + sha256: "083add01847fc1c80a07a08e1ed6927e9acd9618a35e330239d4422cd2a58c50" + url: "https://pub.dev" + source: hosted + version: "3.0.0" + flutter_secure_storage_platform_interface: + dependency: transitive + description: + name: flutter_secure_storage_platform_interface + sha256: b3773190e385a3c8a382007893d678ae95462b3c2279e987b55d140d3b0cb81b + url: "https://pub.dev" + source: hosted + version: "1.0.1" + flutter_secure_storage_web: + dependency: transitive + description: + name: flutter_secure_storage_web + sha256: "42938e70d4b872e856e678c423cc0e9065d7d294f45bc41fc1981a4eb4beaffe" + url: "https://pub.dev" + source: hosted + version: "1.1.1" + flutter_secure_storage_windows: + dependency: transitive + description: + name: flutter_secure_storage_windows + sha256: fc2910ec9b28d60598216c29ea763b3a96c401f0ce1d13cdf69ccb0e5c93c3ee + url: "https://pub.dev" + source: hosted + version: "2.0.0" + flutter_svg: + dependency: "direct main" + description: + name: flutter_svg + sha256: "97c5b291b4fd34ae4f55d6a4c05841d4d0ed94952e033c5a6529e1b47b4d2a29" + url: "https://pub.dev" + source: hosted + version: "2.0.2" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + http: + dependency: "direct main" + description: + name: http + sha256: "6aa2946395183537c8b880962d935877325d6a09a2867c3970c05c0fed6ac482" + url: "https://pub.dev" + source: hosted + version: "0.13.5" + 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: "8e9d133755c3e84c73288363e6343157c383a0c6c56fc51afcc5d4d7180306d6" + url: "https://pub.dev" + source: hosted + version: "3.3.0" + intl: + dependency: "direct main" + description: + name: intl + sha256: "910f85bce16fb5c6f614e117efa303e85a1731bb0081edf3604a2ae6e9a3cc91" + url: "https://pub.dev" + source: hosted + version: "0.17.0" + js: + dependency: transitive + description: + name: js + sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7" + url: "https://pub.dev" + source: hosted + version: "0.6.5" + json_annotation: + dependency: transitive + description: + name: json_annotation + sha256: c33da08e136c3df0190bd5bbe51ae1df4a7d96e7954d1d7249fea2968a72d317 + url: "https://pub.dev" + source: hosted + version: "4.8.0" + lints: + dependency: transitive + description: + name: lints + sha256: "5e4a9cd06d447758280a8ac2405101e0e2094d2a1dbdd3756aec3fe7775ba593" + url: "https://pub.dev" + source: hosted + version: "2.0.1" + loading_animation_widget: + dependency: "direct main" + description: + name: loading_animation_widget + sha256: "1901682600273a966c34cf44a85fc5355da92a8d08a8a43c11adc4e471993e3a" + url: "https://pub.dev" + source: hosted + version: "1.2.0+4" + matcher: + dependency: transitive + description: + name: matcher + sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" + url: "https://pub.dev" + source: hosted + version: "0.12.13" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + url: "https://pub.dev" + source: hosted + version: "0.2.0" + meta: + dependency: transitive + description: + name: meta + sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" + url: "https://pub.dev" + source: hosted + version: "1.8.0" + overlay_support: + dependency: "direct main" + description: + name: overlay_support + sha256: fc39389bfd94e6985e1e13b2a88a125fc4027608485d2d4e2847afe1b2bb339c + url: "https://pub.dev" + source: hosted + version: "2.1.0" + package_info_plus: + dependency: "direct main" + description: + name: package_info_plus + sha256: "8df5ab0a481d7dc20c0e63809e90a588e496d276ba53358afc4c4443d0a00697" + url: "https://pub.dev" + source: hosted + version: "3.0.3" + package_info_plus_platform_interface: + dependency: transitive + description: + name: package_info_plus_platform_interface + sha256: "9bc8ba46813a4cc42c66ab781470711781940780fd8beddd0c3da62506d3a6c6" + url: "https://pub.dev" + source: hosted + version: "2.0.1" + path: + dependency: transitive + description: + name: path + sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b + url: "https://pub.dev" + source: hosted + version: "1.8.2" + path_parsing: + dependency: transitive + description: + name: path_parsing + sha256: e3e67b1629e6f7e8100b367d3db6ba6af4b1f0bb80f64db18ef1fbabd2fa9ccf + url: "https://pub.dev" + source: hosted + version: "1.0.1" + path_provider: + dependency: transitive + description: + name: path_provider + sha256: "04890b994ee89bfa80bf3080bfec40d5a92c5c7a785ebb02c13084a099d2b6f9" + url: "https://pub.dev" + source: hosted + version: "2.0.13" + path_provider_android: + dependency: transitive + description: + name: path_provider_android + sha256: "7623b7d4be0f0f7d9a8b5ee6879fc13e4522d4c875ab86801dee4af32b54b83e" + url: "https://pub.dev" + source: hosted + version: "2.0.23" + path_provider_foundation: + dependency: transitive + description: + name: path_provider_foundation + sha256: eec003594f19fe2456ea965ae36b3fc967bc5005f508890aafe31fa75e41d972 + url: "https://pub.dev" + source: hosted + version: "2.1.2" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + sha256: "525ad5e07622d19447ad740b1ed5070031f7a5437f44355ae915ff56e986429a" + url: "https://pub.dev" + source: hosted + version: "2.1.9" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + sha256: "57585299a729335f1298b43245842678cb9f43a6310351b18fb577d6e33165ec" + url: "https://pub.dev" + source: hosted + version: "2.0.6" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + sha256: "642ddf65fde5404f83267e8459ddb4556316d3ee6d511ed193357e25caa3632d" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + petitparser: + dependency: transitive + description: + name: petitparser + sha256: "49392a45ced973e8d94a85fdb21293fbb40ba805fc49f2965101ae748a3683b4" + url: "https://pub.dev" + source: hosted + version: "5.1.0" + platform: + dependency: transitive + description: + name: platform + sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76" + url: "https://pub.dev" + source: hosted + version: "3.1.0" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + sha256: "6a2128648c854906c53fa8e33986fc0247a1116122f9534dd20e3ab9e16a32bc" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + pointycastle: + dependency: transitive + description: + name: pointycastle + sha256: db7306cf0249f838d1a24af52b5a5887c5bf7f31d8bb4e827d071dc0939ad346 + url: "https://pub.dev" + source: hosted + version: "3.6.2" + process: + dependency: transitive + description: + name: process + sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09" + url: "https://pub.dev" + source: hosted + version: "4.2.4" + scroll_snap_list: + dependency: "direct main" + description: + name: scroll_snap_list + sha256: "8009ad9030f680b93f3107b29b1ea31284d867aa4972868d2970c6d61fe9e59f" + url: "https://pub.dev" + source: hosted + version: "0.9.1" + sdk_int: + dependency: "direct main" + description: + name: sdk_int + sha256: e685b4c98177d7d2a3d646c566e2458739bc208b87c3527e384e576ac321ef1a + url: "https://pub.dev" + source: hosted + version: "0.0.1" + sembast: + dependency: transitive + description: + name: sembast + sha256: "4997717aa84f0622691815d7e2739988b7f7d3a463302fc878f7d5acfa748e96" + url: "https://pub.dev" + source: hosted + version: "3.4.0+6" + shared_preferences: + dependency: "direct main" + description: + name: shared_preferences + sha256: ee6257848f822b8481691f20c3e6d2bfee2e9eccb2a3d249907fcfb198c55b41 + url: "https://pub.dev" + source: hosted + version: "2.0.18" + shared_preferences_android: + dependency: transitive + description: + name: shared_preferences_android + sha256: a51a4f9375097f94df1c6e0a49c0374440d31ab026b59d58a7e7660675879db4 + url: "https://pub.dev" + source: hosted + version: "2.0.16" + shared_preferences_foundation: + dependency: transitive + description: + name: shared_preferences_foundation + sha256: "6b84fdf06b32bb336f972d373cd38b63734f3461ba56ac2ba01b56d052796259" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + shared_preferences_linux: + dependency: transitive + description: + name: shared_preferences_linux + sha256: d7fb71e6e20cd3dfffcc823a28da3539b392e53ed5fc5c2b90b55fdaa8a7e8fa + url: "https://pub.dev" + source: hosted + version: "2.1.4" + shared_preferences_platform_interface: + dependency: transitive + description: + name: shared_preferences_platform_interface + sha256: "824bfd02713e37603b2bdade0842e47d56e7db32b1dcdd1cae533fb88e2913fc" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + shared_preferences_web: + dependency: transitive + description: + name: shared_preferences_web + sha256: "6737b757e49ba93de2a233df229d0b6a87728cea1684da828cbc718b65dcf9d7" + url: "https://pub.dev" + source: hosted + version: "2.0.5" + shared_preferences_windows: + dependency: transitive + description: + name: shared_preferences_windows + sha256: bd014168e8484837c39ef21065b78f305810ceabc1d4f90be6e3b392ce81b46d + url: "https://pub.dev" + source: hosted + version: "2.1.4" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.99" + source_span: + dependency: transitive + description: + name: source_span + sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + url: "https://pub.dev" + source: hosted + version: "1.9.1" + stack_trace: + dependency: transitive + description: + name: stack_trace + sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + url: "https://pub.dev" + source: hosted + version: "1.11.0" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" + source: hosted + version: "1.2.0" + synchronized: + dependency: transitive + description: + name: synchronized + sha256: "33b31b6beb98100bf9add464a36a8dd03eb10c7a8cf15aeec535e9b054aaf04b" + url: "https://pub.dev" + source: hosted + version: "3.0.1" + 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: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 + url: "https://pub.dev" + source: hosted + version: "0.4.16" + typed_data: + dependency: transitive + description: + name: typed_data + sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5" + url: "https://pub.dev" + source: hosted + version: "1.3.1" + universal_io: + dependency: transitive + description: + name: universal_io + sha256: "06866290206d196064fd61df4c7aea1ffe9a4e7c4ccaa8fcded42dd41948005d" + url: "https://pub.dev" + source: hosted + version: "2.2.0" + url_launcher: + dependency: "direct main" + description: + name: url_launcher + sha256: "75f2846facd11168d007529d6cd8fcb2b750186bea046af9711f10b907e1587e" + url: "https://pub.dev" + source: hosted + version: "6.1.10" + url_launcher_android: + dependency: transitive + description: + name: url_launcher_android + sha256: "1f4d9ebe86f333c15d318f81dcdc08b01d45da44af74552608455ebdc08d9732" + url: "https://pub.dev" + source: hosted + version: "6.0.24" + url_launcher_ios: + dependency: transitive + description: + name: url_launcher_ios + sha256: c9cd648d2f7ab56968e049d4e9116f96a85517f1dd806b96a86ea1018a3a82e5 + url: "https://pub.dev" + source: hosted + version: "6.1.1" + url_launcher_linux: + dependency: transitive + description: + name: url_launcher_linux + sha256: e29039160ab3730e42f3d811dc2a6d5f2864b90a70fb765ea60144b03307f682 + url: "https://pub.dev" + source: hosted + version: "3.0.3" + url_launcher_macos: + dependency: transitive + description: + name: url_launcher_macos + sha256: "2dddb3291a57b074dade66b5e07e64401dd2487caefd4e9e2f467138d8c7eb06" + url: "https://pub.dev" + source: hosted + version: "3.0.3" + url_launcher_platform_interface: + dependency: transitive + description: + name: url_launcher_platform_interface + sha256: "6c9ca697a5ae218ce56cece69d46128169a58aa8653c1b01d26fcd4aad8c4370" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + url_launcher_web: + dependency: transitive + description: + name: url_launcher_web + sha256: "574cfbe2390666003c3a1d129bdc4574aaa6728f0c00a4829a81c316de69dd9b" + url: "https://pub.dev" + source: hosted + version: "2.0.15" + url_launcher_windows: + dependency: transitive + description: + name: url_launcher_windows + sha256: "97c9067950a0d09cbd93e2e3f0383d1403989362b97102fbf446473a48079a4b" + url: "https://pub.dev" + source: hosted + version: "3.0.4" + vector_graphics: + dependency: transitive + description: + name: vector_graphics + sha256: "254348b40251c995cf8301ac715486c8cfa0a93b7fdc4dbd495a30f04db1fb44" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + vector_graphics_codec: + dependency: transitive + description: + name: vector_graphics_codec + sha256: "143c290b762646c696c63be5d976bde7379ea892cb6868ddc5a17cbc56e71411" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + vector_graphics_compiler: + dependency: transitive + description: + name: vector_graphics_compiler + sha256: "3190cc26d9ebda686bafb9721bb6a74c6d358700f4fc978a0f2cba6912daff86" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + vector_math: + dependency: transitive + description: + name: vector_math + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + win32: + dependency: transitive + description: + name: win32 + sha256: c9ebe7ee4ab0c2194e65d3a07d8c54c5d00bb001b76081c4a04cdb8448b59e46 + url: "https://pub.dev" + source: hosted + version: "3.1.3" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + sha256: ee1505df1426458f7f60aac270645098d318a8b4766d85fde75f76f2e21807d1 + url: "https://pub.dev" + source: hosted + version: "1.0.0" + xml: + dependency: transitive + description: + name: xml + sha256: "979ee37d622dec6365e2efa4d906c37470995871fe9ae080d967e192d88286b5" + url: "https://pub.dev" + source: hosted + version: "6.2.2" + xxtea: + dependency: transitive + description: + name: xxtea + sha256: edd57229638e16e88f4bb299737fe76a235d0f11da6df8573b3c7f28dec283ce + url: "https://pub.dev" + source: hosted + version: "2.1.0" + yaml: + dependency: transitive + description: + name: yaml + sha256: "23812a9b125b48d4007117254bca50abb6c712352927eece9e155207b1db2370" + url: "https://pub.dev" + source: hosted + version: "3.1.1" +sdks: + dart: ">=2.19.0-0 <3.0.0" + flutter: ">=3.7.0-0" diff --git a/pubspec.yaml b/pubspec.yaml new file mode 100755 index 0000000..a09afaf --- /dev/null +++ b/pubspec.yaml @@ -0,0 +1,118 @@ +name: muesli_app +description: A new Flutter project. + +# The following line prevents the package from being accidentally published to +# pub.dev using `flutter pub publish`. This is preferred for private packages. +publish_to: 'none' # Remove this line if you wish to publish to pub.dev + +# 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 used as CFBundleVersion. +# Read more about iOS versioning at +# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html +version: 0.0.1-beta + +environment: + sdk: ">=2.15.1 <3.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: + flutter: + sdk: flutter + + http: ^0.13.4 + + flutter_secure_storage: ^8.0.0 + + auto_size_text: ^3.0.0 + + flutter_svg: ^2.0.2 + + scroll_snap_list: ^0.9.1 + + loading_animation_widget: + + fading_edge_scrollview: ^3.0.0 + + url_launcher: ^6.1.2 + + adaptive_action_sheet: ^2.0.1 + + package_info_plus: ^3.0.3 + + overlay_support: ^2.0.1 + + dynamic_color: ^1.6.2 + + flutter_localizations: + sdk: flutter + + intl: any + + sdk_int: ^0.0.1 + f_logs: ^2.0.1 + shared_preferences: ^2.0.17 + device_info_plus: ^8.1.0 + flutter_launcher_icons: ^0.11.0 + +dev_dependencies: + flutter_test: + sdk: flutter + + # The "flutter_lints" package below contains a set of recommended lints to + # encourage good coding practices. The lint set provided by the package is + # activated in the `analysis_options.yaml` file located at the root of your + # package. See that file for information about deactivating specific lint + # rules and activating additional ones. + flutter_lints: ^2.0.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. +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 + generate: true + + assets: + - ./assets/ + + # 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 + + # To add custom fonts to your application, add a fonts section here, + # in this "flutter" section. Each entry in this list should have a + # "family" key with the font family name, and a "fonts" key with a + # list giving the asset and other descriptors for the font. For + # example: + # fonts: + # - family: Schyler + # fonts: + # - asset: fonts/Schyler-Regular.ttf + # - asset: fonts/Schyler-Italic.ttf + # style: italic + # - family: Trajan Pro + # fonts: + # - asset: fonts/TrajanPro.ttf + # - asset: fonts/TrajanPro_Bold.ttf + # weight: 700 + # + # For details regarding fonts from package dependencies, + # see https://flutter.dev/custom-fonts/#from-packages