diff --git a/.vscode/launch.json b/.vscode/launch.json
index 70febd0..5f383eb 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -1,7 +1,4 @@
 {
-  // Use IntelliSense to learn about possible attributes.
-  // Hover to view descriptions of existing attributes.
-  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
   "version": "0.2.0",
   "configurations": [
     {
@@ -10,8 +7,27 @@
       "request": "launch",
       "type": "dart",
       "toolArgs": [
-        "--dart-define=APPVER=$(cat pubspec.yaml | grep version: | cut -d' ' -f2 | cut -d+ -f1) --release"
+        "--dart-define=APPVER=$(cat pubspec.yaml | grep version: | cut -d' ' -f2 | cut -d+ -f1)"
       ]
+    },
+    {
+      "name": "filcnaplo release",
+      "cwd": "filcnaplo release",
+      "request": "launch",
+      "type": "dart",
+      "flutterMode": "release",
+      "program": "lib/main.dart",
+      "toolArgs": [
+        "--dart-define=APPVER=$(cat pubspec.yaml | grep version: | cut -d' ' -f2 | cut -d+ -f1)"
+      ]
+    },
+    {
+      "name": "Flutter",
+      "program": "lib/main.dart",
+      "cwd": "filcnaplo",
+      "request": "launch",
+      "type": "dart",
+      "flutterMode": "release"
     }
   ]
 }
\ No newline at end of file
diff --git a/README.md b/README.md
index d4b8706..a3f6fc6 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
 <p align=center>
-  <img src="https://media.discordapp.net/attachments/1111727410677825596/1111790518964326510/reFilc_Logo2.png?width=671&height=671" width=150>
+  <img src="https://media.discordapp.net/attachments/1111727410677825596/1113217167513624646/reFilc_Logo_Squircle.png?width=671&height=671" width=150>
   <h1 align=center><b>reFilc</b></h1>
 </p>
 
diff --git a/filcnaplo/ios/Flutter/Generated 2.xcconfig b/filcnaplo/ios/Flutter/Generated 2.xcconfig
new file mode 100644
index 0000000..f54bc25
--- /dev/null
+++ b/filcnaplo/ios/Flutter/Generated 2.xcconfig	
@@ -0,0 +1,15 @@
+// This is a generated file; do not edit or check into version control.
+FLUTTER_ROOT=/Users/kima/development/flutter
+FLUTTER_APPLICATION_PATH=/Users/kima/Documents/refilc/app/naplo/filcnaplo
+COCOAPODS_PARALLEL_CODE_SIGN=true
+FLUTTER_TARGET=/Users/kima/Documents/refilc/app/naplo/filcnaplo/lib/main.dart
+FLUTTER_BUILD_DIR=build
+FLUTTER_BUILD_NAME=3.5.1
+FLUTTER_BUILD_NUMBER=197
+EXCLUDED_ARCHS[sdk=iphonesimulator*]=i386
+EXCLUDED_ARCHS[sdk=iphoneos*]=armv7
+DART_DEFINES=RkxVVFRFUl9XRUJfQVVUT19ERVRFQ1Q9dHJ1ZQ==,RkxVVFRFUl9XRUJfQ0FOVkFTS0lUX1VSTD1odHRwczovL3d3dy5nc3RhdGljLmNvbS9mbHV0dGVyLWNhbnZhc2tpdC9iNGZiMTEyMTRkZDJkZGE2Y2UwMTJkZDk4ZWE0OThlOWU4YjkxMjYyLw==
+DART_OBFUSCATION=false
+TRACK_WIDGET_CREATION=true
+TREE_SHAKE_ICONS=false
+PACKAGE_CONFIG=/Users/kima/Documents/refilc/app/naplo/filcnaplo/.dart_tool/package_config.json
diff --git a/filcnaplo/ios/Podfile.lock b/filcnaplo/ios/Podfile.lock
index 28ab956..296d39d 100644
--- a/filcnaplo/ios/Podfile.lock
+++ b/filcnaplo/ios/Podfile.lock
@@ -77,6 +77,8 @@ PODS:
   - Mantle/extobjc (2.2.0)
   - open_file (0.0.1):
     - Flutter
+  - package_info_plus (0.4.5):
+    - Flutter
   - path_provider_foundation (0.0.1):
     - Flutter
     - FlutterMacOS
@@ -120,6 +122,7 @@ DEPENDENCIES:
   - image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`)
   - live_activities (from `.symlinks/plugins/live_activities/ios`)
   - open_file (from `.symlinks/plugins/open_file/ios`)
+  - package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
   - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
   - permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`)
   - quick_actions_ios (from `.symlinks/plugins/quick_actions_ios/ios`)
@@ -171,6 +174,8 @@ EXTERNAL SOURCES:
     :path: ".symlinks/plugins/live_activities/ios"
   open_file:
     :path: ".symlinks/plugins/open_file/ios"
+  package_info_plus:
+    :path: ".symlinks/plugins/package_info_plus/ios"
   path_provider_foundation:
     :path: ".symlinks/plugins/path_provider_foundation/darwin"
   permission_handler_apple:
@@ -213,6 +218,7 @@ SPEC CHECKSUMS:
   live_activities: 9ff56a06a2d43ecd68f56deeed13b18a8304789c
   Mantle: c5aa8794a29a022dfbbfc9799af95f477a69b62d
   open_file: 02eb5cb6b21264bd3a696876f5afbfb7ca4f4b7d
+  package_info_plus: 6c92f08e1f853dc01228d6f553146438dafcd14e
   path_provider_foundation: eaf5b3e458fc0e5fbb9940fb09980e853fe058b8
   permission_handler_apple: 44366e37eaf29454a1e7b1b7d736c2cceaeb17ce
   quick_actions_ios: 9e80dcfadfbc5d47d9cf8f47bcf428b11cf383d4
diff --git a/filcnaplo/ios/Runner.xcodeproj/project.pbxproj b/filcnaplo/ios/Runner.xcodeproj/project.pbxproj
index b4bcb5a..08dfd60 100644
--- a/filcnaplo/ios/Runner.xcodeproj/project.pbxproj
+++ b/filcnaplo/ios/Runner.xcodeproj/project.pbxproj
@@ -478,7 +478,7 @@
 				CLANG_ENABLE_MODULES = YES;
 				CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
 				CURRENT_PROJECT_VERSION = 195;
-				DEVELOPMENT_TEAM = JWGEQSC9U7;
+				DEVELOPMENT_TEAM = 48XS7JAZB7;
 				ENABLE_BITCODE = NO;
 				INFOPLIST_FILE = Runner/Info.plist;
 				INFOPLIST_KEY_CFBundleDisplayName = reFilc;
@@ -488,7 +488,7 @@
 					"@executable_path/Frameworks",
 				);
 				MARKETING_VERSION = 3.6.0;
-				PRODUCT_BUNDLE_IDENTIFIER = hu.refilc.naplo;
+				PRODUCT_BUNDLE_IDENTIFIER = com.refilc.naplo;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
 				SWIFT_VERSION = 5.0;
@@ -510,7 +510,7 @@
 				CODE_SIGN_IDENTITY = "Apple Development";
 				CODE_SIGN_STYLE = Automatic;
 				CURRENT_PROJECT_VERSION = 1;
-				DEVELOPMENT_TEAM = JWGEQSC9U7;
+				DEVELOPMENT_TEAM = 48XS7JAZB7;
 				GCC_C_LANGUAGE_STANDARD = gnu11;
 				GENERATE_INFOPLIST_FILE = YES;
 				INFOPLIST_FILE = livecard/Info.plist;
@@ -526,7 +526,7 @@
 				MARKETING_VERSION = 1.0;
 				MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
 				MTL_FAST_MATH = YES;
-				PRODUCT_BUNDLE_IDENTIFIER = hu.refilc.naplo.livecardpro;
+				PRODUCT_BUNDLE_IDENTIFIER = com.refilc.naplo.livecardpro;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				PROVISIONING_PROFILE_SPECIFIER = "";
 				SKIP_INSTALL = YES;
@@ -552,7 +552,7 @@
 				CODE_SIGN_IDENTITY = "Apple Development";
 				CODE_SIGN_STYLE = Automatic;
 				CURRENT_PROJECT_VERSION = 1;
-				DEVELOPMENT_TEAM = JWGEQSC9U7;
+				DEVELOPMENT_TEAM = 48XS7JAZB7;
 				GCC_C_LANGUAGE_STANDARD = gnu11;
 				GENERATE_INFOPLIST_FILE = YES;
 				INFOPLIST_FILE = livecard/Info.plist;
@@ -567,7 +567,7 @@
 				);
 				MARKETING_VERSION = 1.0;
 				MTL_FAST_MATH = YES;
-				PRODUCT_BUNDLE_IDENTIFIER = hu.refilc.naplo.livecardpro;
+				PRODUCT_BUNDLE_IDENTIFIER = com.refilc.naplo.livecardpro;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				PROVISIONING_PROFILE_SPECIFIER = "";
 				SKIP_INSTALL = YES;
@@ -592,7 +592,7 @@
 				CODE_SIGN_IDENTITY = "Apple Development";
 				CODE_SIGN_STYLE = Automatic;
 				CURRENT_PROJECT_VERSION = 1;
-				DEVELOPMENT_TEAM = JWGEQSC9U7;
+				DEVELOPMENT_TEAM = 48XS7JAZB7;
 				GCC_C_LANGUAGE_STANDARD = gnu11;
 				GENERATE_INFOPLIST_FILE = YES;
 				INFOPLIST_FILE = livecard/Info.plist;
@@ -607,7 +607,7 @@
 				);
 				MARKETING_VERSION = 1.0;
 				MTL_FAST_MATH = YES;
-				PRODUCT_BUNDLE_IDENTIFIER = hu.refilc.naplo.livecardpro;
+				PRODUCT_BUNDLE_IDENTIFIER = com.refilc.naplo.livecardpro;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				PROVISIONING_PROFILE_SPECIFIER = "";
 				SKIP_INSTALL = YES;
@@ -736,7 +736,7 @@
 				CLANG_ENABLE_MODULES = YES;
 				CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
 				CURRENT_PROJECT_VERSION = 195;
-				DEVELOPMENT_TEAM = JWGEQSC9U7;
+				DEVELOPMENT_TEAM = 48XS7JAZB7;
 				ENABLE_BITCODE = NO;
 				INFOPLIST_FILE = Runner/Info.plist;
 				INFOPLIST_KEY_CFBundleDisplayName = reFilc;
@@ -746,7 +746,7 @@
 					"@executable_path/Frameworks",
 				);
 				MARKETING_VERSION = 3.6.0;
-				PRODUCT_BUNDLE_IDENTIFIER = hu.refilc.naplo;
+				PRODUCT_BUNDLE_IDENTIFIER = com.refilc.naplo;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
 				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
@@ -764,7 +764,7 @@
 				CLANG_ENABLE_MODULES = YES;
 				CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
 				CURRENT_PROJECT_VERSION = 195;
-				DEVELOPMENT_TEAM = JWGEQSC9U7;
+				DEVELOPMENT_TEAM = 48XS7JAZB7;
 				ENABLE_BITCODE = NO;
 				INFOPLIST_FILE = Runner/Info.plist;
 				INFOPLIST_KEY_CFBundleDisplayName = reFilc;
@@ -774,7 +774,7 @@
 					"@executable_path/Frameworks",
 				);
 				MARKETING_VERSION = 3.6.0;
-				PRODUCT_BUNDLE_IDENTIFIER = hu.refilc.naplo;
+				PRODUCT_BUNDLE_IDENTIFIER = com.refilc.naplo;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
 				SWIFT_VERSION = 5.0;
diff --git a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
deleted file mode 100644
index 133efe0..0000000
Binary files a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png and /dev/null differ
diff --git a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
deleted file mode 100644
index d83c2b3..0000000
Binary files a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png and /dev/null differ
diff --git a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
deleted file mode 100644
index f244bc1..0000000
Binary files a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png and /dev/null differ
diff --git a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
deleted file mode 100644
index 6aee44e..0000000
Binary files a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png and /dev/null differ
diff --git a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
deleted file mode 100644
index 2b73f29..0000000
Binary files a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png and /dev/null differ
diff --git a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
deleted file mode 100644
index 4aa81df..0000000
Binary files a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png and /dev/null differ
diff --git a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
deleted file mode 100644
index 0137bf1..0000000
Binary files a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png and /dev/null differ
diff --git a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
deleted file mode 100644
index f244bc1..0000000
Binary files a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png and /dev/null differ
diff --git a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
deleted file mode 100644
index 47587cf..0000000
Binary files a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png and /dev/null differ
diff --git a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
deleted file mode 100644
index 24e23ac..0000000
Binary files a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png and /dev/null differ
diff --git a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png b/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png
deleted file mode 100644
index 25219b2..0000000
Binary files a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png and /dev/null differ
diff --git a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png b/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png
deleted file mode 100644
index 5721dd3..0000000
Binary files a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png and /dev/null differ
diff --git a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png b/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png
deleted file mode 100644
index 46a0ea0..0000000
Binary files a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png and /dev/null differ
diff --git a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png b/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png
deleted file mode 100644
index 3a61e54..0000000
Binary files a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png and /dev/null differ
diff --git a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
deleted file mode 100644
index 24e23ac..0000000
Binary files a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png and /dev/null differ
diff --git a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
deleted file mode 100644
index 89601bf..0000000
Binary files a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png and /dev/null differ
diff --git a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png b/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png
deleted file mode 100644
index 12ec2ad..0000000
Binary files a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png and /dev/null differ
diff --git a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png b/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png
deleted file mode 100644
index 90aa017..0000000
Binary files a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png and /dev/null differ
diff --git a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
deleted file mode 100644
index 2319cf9..0000000
Binary files a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png and /dev/null differ
diff --git a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
deleted file mode 100644
index 8d2550c..0000000
Binary files a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png and /dev/null differ
diff --git a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
deleted file mode 100644
index 7a57904..0000000
Binary files a/filcnaplo/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png and /dev/null differ
diff --git a/filcnaplo/lib/api/providers/update_provider.dart b/filcnaplo/lib/api/providers/update_provider.dart
index 3013d06..a942df6 100644
--- a/filcnaplo/lib/api/providers/update_provider.dart
+++ b/filcnaplo/lib/api/providers/update_provider.dart
@@ -3,6 +3,7 @@ import 'dart:io';
 import 'package:filcnaplo/api/client.dart';
 import 'package:filcnaplo/models/release.dart';
 import 'package:flutter/material.dart';
+import 'package:package_info_plus/package_info_plus.dart';
 
 class UpdateProvider extends ChangeNotifier {
   // Private
@@ -20,9 +21,11 @@ class UpdateProvider extends ChangeNotifier {
     _releases = List.castFrom(initialReleases);
   }
 
-  static const currentVersion = String.fromEnvironment("APPVER", defaultValue: "1.0");
-
   Future<void> fetch() async {
+    late String currentVersion;
+    PackageInfo packageInfo = await PackageInfo.fromPlatform();
+    currentVersion = packageInfo.version;
+
     if (!Platform.isAndroid) return;
 
     _releases = await FilcAPI.getReleases() ?? [];
@@ -30,10 +33,30 @@ class UpdateProvider extends ChangeNotifier {
 
     // Check for new releases
     if (_releases.isNotEmpty) {
-      _available = _releases.first.version.compareTo(Version.fromString(currentVersion)) == 1;
+      _available = _releases.first.version
+              .compareTo(Version.fromString(currentVersion)) ==
+          1;
       // ignore: avoid_print
       if (_available) print("INFO: New update: ${releases.first.version}");
       notifyListeners();
     }
   }
+
+  Future<Map> installedVersion() async {
+    PackageInfo packageInfo = await PackageInfo.fromPlatform();
+
+    String appName = packageInfo.appName;
+    String packageName = packageInfo.packageName;
+    String version = packageInfo.version;
+    String buildNumber = packageInfo.buildNumber;
+
+    Map<String, String> release = {
+      "app_name": appName,
+      "package_name": packageName,
+      "version": version,
+      "build_number": buildNumber,
+    };
+
+    return release;
+  }
 }
diff --git a/filcnaplo/macos/Flutter/GeneratedPluginRegistrant.swift b/filcnaplo/macos/Flutter/GeneratedPluginRegistrant.swift
index d61de2b..0a7b9c7 100644
--- a/filcnaplo/macos/Flutter/GeneratedPluginRegistrant.swift
+++ b/filcnaplo/macos/Flutter/GeneratedPluginRegistrant.swift
@@ -9,6 +9,7 @@ import connectivity_plus
 import dynamic_color
 import flutter_acrylic
 import flutter_local_notifications
+import package_info_plus
 import path_provider_foundation
 import share_plus_macos
 import sqflite
@@ -19,6 +20,7 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
   DynamicColorPlugin.register(with: registry.registrar(forPlugin: "DynamicColorPlugin"))
   FlutterAcrylicPlugin.register(with: registry.registrar(forPlugin: "FlutterAcrylicPlugin"))
   FlutterLocalNotificationsPlugin.register(with: registry.registrar(forPlugin: "FlutterLocalNotificationsPlugin"))
+  FLTPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FLTPackageInfoPlusPlugin"))
   PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
   SharePlusMacosPlugin.register(with: registry.registrar(forPlugin: "SharePlusMacosPlugin"))
   SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin"))
diff --git a/filcnaplo/macos/Podfile b/filcnaplo/macos/Podfile
index 077cc7c..049abe2 100644
--- a/filcnaplo/macos/Podfile
+++ b/filcnaplo/macos/Podfile
@@ -1,40 +1,40 @@
-platform :osx, '10.11'
-
-# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
-ENV['COCOAPODS_DISABLE_STATS'] = 'true'
-
-project 'Runner', {
-  'Debug' => :debug,
-  'Profile' => :release,
-  'Release' => :release,
-}
-
-def flutter_root
-  generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__)
-  unless File.exist?(generated_xcode_build_settings_path)
-    raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first"
-  end
-
-  File.foreach(generated_xcode_build_settings_path) do |line|
-    matches = line.match(/FLUTTER_ROOT\=(.*)/)
-    return matches[1].strip if matches
-  end
-  raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\""
-end
-
-require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
-
-flutter_macos_podfile_setup
-
-target 'Runner' do
-  use_frameworks!
-  use_modular_headers!
-
-  flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__))
-end
-
-post_install do |installer|
-  installer.pods_project.targets.each do |target|
-    flutter_additional_macos_build_settings(target)
-  end
-end
+platform :osx, '10.14'
+
+# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
+ENV['COCOAPODS_DISABLE_STATS'] = 'true'
+
+project 'Runner', {
+  'Debug' => :debug,
+  'Profile' => :release,
+  'Release' => :release,
+}
+
+def flutter_root
+  generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__)
+  unless File.exist?(generated_xcode_build_settings_path)
+    raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first"
+  end
+
+  File.foreach(generated_xcode_build_settings_path) do |line|
+    matches = line.match(/FLUTTER_ROOT\=(.*)/)
+    return matches[1].strip if matches
+  end
+  raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\""
+end
+
+require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
+
+flutter_macos_podfile_setup
+
+target 'Runner' do
+  use_frameworks!
+  use_modular_headers!
+
+  flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__))
+end
+
+post_install do |installer|
+  installer.pods_project.targets.each do |target|
+    flutter_additional_macos_build_settings(target)
+  end
+end
diff --git a/filcnaplo/macos/Podfile.lock b/filcnaplo/macos/Podfile.lock
index 7cfc6b5..17504a6 100644
--- a/filcnaplo/macos/Podfile.lock
+++ b/filcnaplo/macos/Podfile.lock
@@ -1,71 +1,78 @@
-PODS:
-  - connectivity_plus (0.0.1):
-    - FlutterMacOS
-    - ReachabilitySwift
-  - dynamic_color (0.0.2):
-    - FlutterMacOS
-  - flutter_acrylic (0.1.0):
-    - FlutterMacOS
-  - FlutterMacOS (1.0.0)
-  - FMDB (2.7.5):
-    - FMDB/standard (= 2.7.5)
-  - FMDB/standard (2.7.5)
-  - path_provider_macos (0.0.1):
-    - FlutterMacOS
-  - ReachabilitySwift (5.0.0)
-  - share_plus_macos (0.0.1):
-    - FlutterMacOS
-  - sqflite (0.0.2):
-    - FlutterMacOS
-    - FMDB (>= 2.7.5)
-  - url_launcher_macos (0.0.1):
-    - FlutterMacOS
-
-DEPENDENCIES:
-  - connectivity_plus (from `Flutter/ephemeral/.symlinks/plugins/connectivity_plus/macos`)
-  - dynamic_color (from `Flutter/ephemeral/.symlinks/plugins/dynamic_color/macos`)
-  - flutter_acrylic (from `Flutter/ephemeral/.symlinks/plugins/flutter_acrylic/macos`)
-  - FlutterMacOS (from `Flutter/ephemeral`)
-  - path_provider_macos (from `Flutter/ephemeral/.symlinks/plugins/path_provider_macos/macos`)
-  - share_plus_macos (from `Flutter/ephemeral/.symlinks/plugins/share_plus_macos/macos`)
-  - sqflite (from `Flutter/ephemeral/.symlinks/plugins/sqflite/macos`)
-  - url_launcher_macos (from `Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos`)
-
-SPEC REPOS:
-  trunk:
-    - FMDB
-    - ReachabilitySwift
-
-EXTERNAL SOURCES:
-  connectivity_plus:
-    :path: Flutter/ephemeral/.symlinks/plugins/connectivity_plus/macos
-  dynamic_color:
-    :path: Flutter/ephemeral/.symlinks/plugins/dynamic_color/macos
-  flutter_acrylic:
-    :path: Flutter/ephemeral/.symlinks/plugins/flutter_acrylic/macos
-  FlutterMacOS:
-    :path: Flutter/ephemeral
-  path_provider_macos:
-    :path: Flutter/ephemeral/.symlinks/plugins/path_provider_macos/macos
-  share_plus_macos:
-    :path: Flutter/ephemeral/.symlinks/plugins/share_plus_macos/macos
-  sqflite:
-    :path: Flutter/ephemeral/.symlinks/plugins/sqflite/macos
-  url_launcher_macos:
-    :path: Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos
-
-SPEC CHECKSUMS:
-  connectivity_plus: 18d3c32514c886e046de60e9c13895109866c747
-  dynamic_color: 394d6a888650f8534e029b27d2f8bc5c64e44008
-  flutter_acrylic: c3df24ae52ab6597197837ce59ef2a8542640c17
-  FlutterMacOS: ae6af50a8ea7d6103d888583d46bd8328a7e9811
-  FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
-  path_provider_macos: 3c0c3b4b0d4a76d2bf989a913c2de869c5641a19
-  ReachabilitySwift: 985039c6f7b23a1da463388634119492ff86c825
-  share_plus_macos: 853ee48e7dce06b633998ca0735d482dd671ade4
-  sqflite: a5789cceda41d54d23f31d6de539d65bb14100ea
-  url_launcher_macos: 597e05b8e514239626bcf4a850fcf9ef5c856ec3
-
-PODFILE CHECKSUM: 6eac6b3292e5142cfc23bdeb71848a40ec51c14c
-
-COCOAPODS: 1.11.3
+PODS:
+  - connectivity_plus (0.0.1):
+    - FlutterMacOS
+    - ReachabilitySwift
+  - dynamic_color (0.0.2):
+    - FlutterMacOS
+  - flutter_acrylic (0.1.0):
+    - FlutterMacOS
+  - flutter_local_notifications (0.0.1):
+    - FlutterMacOS
+  - FlutterMacOS (1.0.0)
+  - FMDB (2.7.5):
+    - FMDB/standard (= 2.7.5)
+  - FMDB/standard (2.7.5)
+  - path_provider_foundation (0.0.1):
+    - Flutter
+    - FlutterMacOS
+  - ReachabilitySwift (5.0.0)
+  - share_plus_macos (0.0.1):
+    - FlutterMacOS
+  - sqflite (0.0.2):
+    - FlutterMacOS
+    - FMDB (>= 2.7.5)
+  - url_launcher_macos (0.0.1):
+    - FlutterMacOS
+
+DEPENDENCIES:
+  - connectivity_plus (from `Flutter/ephemeral/.symlinks/plugins/connectivity_plus/macos`)
+  - dynamic_color (from `Flutter/ephemeral/.symlinks/plugins/dynamic_color/macos`)
+  - flutter_acrylic (from `Flutter/ephemeral/.symlinks/plugins/flutter_acrylic/macos`)
+  - flutter_local_notifications (from `Flutter/ephemeral/.symlinks/plugins/flutter_local_notifications/macos`)
+  - FlutterMacOS (from `Flutter/ephemeral`)
+  - path_provider_foundation (from `Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin`)
+  - share_plus_macos (from `Flutter/ephemeral/.symlinks/plugins/share_plus_macos/macos`)
+  - sqflite (from `Flutter/ephemeral/.symlinks/plugins/sqflite/macos`)
+  - url_launcher_macos (from `Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos`)
+
+SPEC REPOS:
+  trunk:
+    - FMDB
+    - ReachabilitySwift
+
+EXTERNAL SOURCES:
+  connectivity_plus:
+    :path: Flutter/ephemeral/.symlinks/plugins/connectivity_plus/macos
+  dynamic_color:
+    :path: Flutter/ephemeral/.symlinks/plugins/dynamic_color/macos
+  flutter_acrylic:
+    :path: Flutter/ephemeral/.symlinks/plugins/flutter_acrylic/macos
+  flutter_local_notifications:
+    :path: Flutter/ephemeral/.symlinks/plugins/flutter_local_notifications/macos
+  FlutterMacOS:
+    :path: Flutter/ephemeral
+  path_provider_foundation:
+    :path: Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin
+  share_plus_macos:
+    :path: Flutter/ephemeral/.symlinks/plugins/share_plus_macos/macos
+  sqflite:
+    :path: Flutter/ephemeral/.symlinks/plugins/sqflite/macos
+  url_launcher_macos:
+    :path: Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos
+
+SPEC CHECKSUMS:
+  connectivity_plus: 18d3c32514c886e046de60e9c13895109866c747
+  dynamic_color: 2eaa27267de1ca20d879fbd6e01259773fb1670f
+  flutter_acrylic: c3df24ae52ab6597197837ce59ef2a8542640c17
+  flutter_local_notifications: 3805ca215b2fb7f397d78b66db91f6a747af52e4
+  FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24
+  FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
+  path_provider_foundation: eaf5b3e458fc0e5fbb9940fb09980e853fe058b8
+  ReachabilitySwift: 985039c6f7b23a1da463388634119492ff86c825
+  share_plus_macos: 853ee48e7dce06b633998ca0735d482dd671ade4
+  sqflite: a5789cceda41d54d23f31d6de539d65bb14100ea
+  url_launcher_macos: 5335912b679c073563f29d89d33d10d459f95451
+
+PODFILE CHECKSUM: 353c8bcc5d5b0994e508d035b5431cfe18c1dea7
+
+COCOAPODS: 1.12.1
diff --git a/filcnaplo/macos/Runner.xcodeproj/project.pbxproj b/filcnaplo/macos/Runner.xcodeproj/project.pbxproj
index 75f5b52..61c33df 100644
--- a/filcnaplo/macos/Runner.xcodeproj/project.pbxproj
+++ b/filcnaplo/macos/Runner.xcodeproj/project.pbxproj
@@ -1,669 +1,670 @@
-// !$*UTF8*$!
-{
-	archiveVersion = 1;
-	classes = {
-	};
-	objectVersion = 51;
-	objects = {
-
-/* Begin PBXAggregateTarget section */
-		33CC111A2044C6BA0003C045 /* Flutter Assemble */ = {
-			isa = PBXAggregateTarget;
-			buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */;
-			buildPhases = (
-				33CC111E2044C6BF0003C045 /* ShellScript */,
-			);
-			dependencies = (
-			);
-			name = "Flutter Assemble";
-			productName = FLX;
-		};
-/* End PBXAggregateTarget section */
-
-/* Begin PBXBuildFile section */
-		335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; };
-		33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; };
-		33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; };
-		33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; };
-		33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; };
-		43DE217EE63035454211B258 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BB026B00EBE728C695C538A /* Pods_Runner.framework */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXContainerItemProxy section */
-		33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 33CC10E52044A3C60003C045 /* Project object */;
-			proxyType = 1;
-			remoteGlobalIDString = 33CC111A2044C6BA0003C045;
-			remoteInfo = FLX;
-		};
-/* End PBXContainerItemProxy section */
-
-/* Begin PBXCopyFilesBuildPhase section */
-		33CC110E2044A8840003C045 /* Bundle Framework */ = {
-			isa = PBXCopyFilesBuildPhase;
-			buildActionMask = 2147483647;
-			dstPath = "";
-			dstSubfolderSpec = 10;
-			files = (
-			);
-			name = "Bundle Framework";
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXCopyFilesBuildPhase section */
-
-/* Begin PBXFileReference section */
-		333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = "<group>"; };
-		335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = "<group>"; };
-		33CC10ED2044A3C60003C045 /* Felt Diary.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Felt Diary.app"; sourceTree = BUILT_PRODUCTS_DIR; };
-		33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
-		33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = "<group>"; };
-		33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
-		33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = "<group>"; };
-		33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = "<group>"; };
-		33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = "<group>"; };
-		33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = "<group>"; };
-		33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = "<group>"; };
-		33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = "<group>"; };
-		33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = "<group>"; };
-		33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = "<group>"; };
-		72E0977D2D8959666A33F54C /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
-		7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = "<group>"; };
-		8BB026B00EBE728C695C538A /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
-		9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = "<group>"; };
-		9C848561CA407DAFCC1F5699 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
-		C200D9112D0A790C324733AA /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
-		33CC10EA2044A3C60003C045 /* Frameworks */ = {
-			isa = PBXFrameworksBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				43DE217EE63035454211B258 /* Pods_Runner.framework in Frameworks */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
-		33BA886A226E78AF003329D5 /* Configs */ = {
-			isa = PBXGroup;
-			children = (
-				33E5194F232828860026EE4D /* AppInfo.xcconfig */,
-				9740EEB21CF90195004384FC /* Debug.xcconfig */,
-				7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
-				333000ED22D3DE5D00554162 /* Warnings.xcconfig */,
-			);
-			path = Configs;
-			sourceTree = "<group>";
-		};
-		33CC10E42044A3C60003C045 = {
-			isa = PBXGroup;
-			children = (
-				33FAB671232836740065AC1E /* Runner */,
-				33CEB47122A05771004F2AC0 /* Flutter */,
-				33CC10EE2044A3C60003C045 /* Products */,
-				51085A7CB06D107E9E0B55D2 /* Pods */,
-				D1EA9707C367C55447080BD3 /* Frameworks */,
-			);
-			sourceTree = "<group>";
-		};
-		33CC10EE2044A3C60003C045 /* Products */ = {
-			isa = PBXGroup;
-			children = (
-				33CC10ED2044A3C60003C045 /* Felt Diary.app */,
-			);
-			name = Products;
-			sourceTree = "<group>";
-		};
-		33CC11242044D66E0003C045 /* Resources */ = {
-			isa = PBXGroup;
-			children = (
-				33CC10F22044A3C60003C045 /* Assets.xcassets */,
-				33CC10F42044A3C60003C045 /* MainMenu.xib */,
-				33CC10F72044A3C60003C045 /* Info.plist */,
-			);
-			name = Resources;
-			path = ..;
-			sourceTree = "<group>";
-		};
-		33CEB47122A05771004F2AC0 /* Flutter */ = {
-			isa = PBXGroup;
-			children = (
-				335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */,
-				33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */,
-				33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */,
-				33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */,
-			);
-			path = Flutter;
-			sourceTree = "<group>";
-		};
-		33FAB671232836740065AC1E /* Runner */ = {
-			isa = PBXGroup;
-			children = (
-				33CC10F02044A3C60003C045 /* AppDelegate.swift */,
-				33CC11122044BFA00003C045 /* MainFlutterWindow.swift */,
-				33E51913231747F40026EE4D /* DebugProfile.entitlements */,
-				33E51914231749380026EE4D /* Release.entitlements */,
-				33CC11242044D66E0003C045 /* Resources */,
-				33BA886A226E78AF003329D5 /* Configs */,
-			);
-			path = Runner;
-			sourceTree = "<group>";
-		};
-		51085A7CB06D107E9E0B55D2 /* Pods */ = {
-			isa = PBXGroup;
-			children = (
-				72E0977D2D8959666A33F54C /* Pods-Runner.debug.xcconfig */,
-				C200D9112D0A790C324733AA /* Pods-Runner.release.xcconfig */,
-				9C848561CA407DAFCC1F5699 /* Pods-Runner.profile.xcconfig */,
-			);
-			path = Pods;
-			sourceTree = "<group>";
-		};
-		D1EA9707C367C55447080BD3 /* Frameworks */ = {
-			isa = PBXGroup;
-			children = (
-				8BB026B00EBE728C695C538A /* Pods_Runner.framework */,
-			);
-			name = Frameworks;
-			sourceTree = "<group>";
-		};
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
-		33CC10EC2044A3C60003C045 /* Runner */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */;
-			buildPhases = (
-				FD4539A7C90013601C734851 /* [CP] Check Pods Manifest.lock */,
-				33CC10E92044A3C60003C045 /* Sources */,
-				33CC10EA2044A3C60003C045 /* Frameworks */,
-				33CC10EB2044A3C60003C045 /* Resources */,
-				33CC110E2044A8840003C045 /* Bundle Framework */,
-				3399D490228B24CF009A79C7 /* ShellScript */,
-				558B4163B66FBD35BF611538 /* [CP] Embed Pods Frameworks */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-				33CC11202044C79F0003C045 /* PBXTargetDependency */,
-			);
-			name = Runner;
-			productName = Runner;
-			productReference = 33CC10ED2044A3C60003C045 /* Felt Diary.app */;
-			productType = "com.apple.product-type.application";
-		};
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
-		33CC10E52044A3C60003C045 /* Project object */ = {
-			isa = PBXProject;
-			attributes = {
-				LastSwiftUpdateCheck = 0920;
-				LastUpgradeCheck = 1400;
-				ORGANIZATIONNAME = "";
-				TargetAttributes = {
-					33CC10EC2044A3C60003C045 = {
-						CreatedOnToolsVersion = 9.2;
-						LastSwiftMigration = 1100;
-						SystemCapabilities = {
-							com.apple.Sandbox = {
-								enabled = 1;
-							};
-						};
-					};
-					33CC111A2044C6BA0003C045 = {
-						CreatedOnToolsVersion = 9.2;
-						ProvisioningStyle = Manual;
-					};
-				};
-			};
-			buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */;
-			compatibilityVersion = "Xcode 9.3";
-			developmentRegion = en;
-			hasScannedForEncodings = 0;
-			knownRegions = (
-				en,
-				Base,
-			);
-			mainGroup = 33CC10E42044A3C60003C045;
-			productRefGroup = 33CC10EE2044A3C60003C045 /* Products */;
-			projectDirPath = "";
-			projectRoot = "";
-			targets = (
-				33CC10EC2044A3C60003C045 /* Runner */,
-				33CC111A2044C6BA0003C045 /* Flutter Assemble */,
-			);
-		};
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
-		33CC10EB2044A3C60003C045 /* Resources */ = {
-			isa = PBXResourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */,
-				33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXShellScriptBuildPhase section */
-		3399D490228B24CF009A79C7 /* ShellScript */ = {
-			isa = PBXShellScriptBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-			);
-			inputFileListPaths = (
-			);
-			inputPaths = (
-			);
-			outputFileListPaths = (
-			);
-			outputPaths = (
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-			shellPath = /bin/sh;
-			shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n";
-		};
-		33CC111E2044C6BF0003C045 /* ShellScript */ = {
-			isa = PBXShellScriptBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-			);
-			inputFileListPaths = (
-				Flutter/ephemeral/FlutterInputs.xcfilelist,
-			);
-			inputPaths = (
-				Flutter/ephemeral/tripwire,
-			);
-			outputFileListPaths = (
-				Flutter/ephemeral/FlutterOutputs.xcfilelist,
-			);
-			outputPaths = (
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-			shellPath = /bin/sh;
-			shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire";
-		};
-		558B4163B66FBD35BF611538 /* [CP] Embed Pods Frameworks */ = {
-			isa = PBXShellScriptBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-			);
-			inputFileListPaths = (
-				"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
-			);
-			name = "[CP] Embed Pods Frameworks";
-			outputFileListPaths = (
-				"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-			shellPath = /bin/sh;
-			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
-			showEnvVarsInLog = 0;
-		};
-		FD4539A7C90013601C734851 /* [CP] Check Pods Manifest.lock */ = {
-			isa = PBXShellScriptBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-			);
-			inputFileListPaths = (
-			);
-			inputPaths = (
-				"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
-				"${PODS_ROOT}/Manifest.lock",
-			);
-			name = "[CP] Check Pods Manifest.lock";
-			outputFileListPaths = (
-			);
-			outputPaths = (
-				"$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-			shellPath = /bin/sh;
-			shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n    # print error to STDERR\n    echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n    exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
-			showEnvVarsInLog = 0;
-		};
-/* End PBXShellScriptBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
-		33CC10E92044A3C60003C045 /* Sources */ = {
-			isa = PBXSourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */,
-				33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */,
-				335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXTargetDependency section */
-		33CC11202044C79F0003C045 /* PBXTargetDependency */ = {
-			isa = PBXTargetDependency;
-			target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */;
-			targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */;
-		};
-/* End PBXTargetDependency section */
-
-/* Begin PBXVariantGroup section */
-		33CC10F42044A3C60003C045 /* MainMenu.xib */ = {
-			isa = PBXVariantGroup;
-			children = (
-				33CC10F52044A3C60003C045 /* Base */,
-			);
-			name = MainMenu.xib;
-			path = Runner;
-			sourceTree = "<group>";
-		};
-/* End PBXVariantGroup section */
-
-/* Begin XCBuildConfiguration section */
-		338D0CE9231458BD00FA5F75 /* Profile */ = {
-			isa = XCBuildConfiguration;
-			baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
-			buildSettings = {
-				ALWAYS_SEARCH_USER_PATHS = NO;
-				CLANG_ANALYZER_NONNULL = YES;
-				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
-				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
-				CLANG_CXX_LIBRARY = "libc++";
-				CLANG_ENABLE_MODULES = YES;
-				CLANG_ENABLE_OBJC_ARC = YES;
-				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
-				CLANG_WARN_BOOL_CONVERSION = YES;
-				CLANG_WARN_CONSTANT_CONVERSION = YES;
-				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
-				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
-				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
-				CLANG_WARN_EMPTY_BODY = YES;
-				CLANG_WARN_ENUM_CONVERSION = YES;
-				CLANG_WARN_INFINITE_RECURSION = YES;
-				CLANG_WARN_INT_CONVERSION = YES;
-				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
-				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
-				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
-				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
-				CLANG_WARN_SUSPICIOUS_MOVE = YES;
-				CODE_SIGN_IDENTITY = "-";
-				COPY_PHASE_STRIP = NO;
-				DEAD_CODE_STRIPPING = YES;
-				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
-				ENABLE_NS_ASSERTIONS = NO;
-				ENABLE_STRICT_OBJC_MSGSEND = YES;
-				GCC_C_LANGUAGE_STANDARD = gnu11;
-				GCC_NO_COMMON_BLOCKS = YES;
-				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
-				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
-				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
-				GCC_WARN_UNUSED_FUNCTION = YES;
-				GCC_WARN_UNUSED_VARIABLE = YES;
-				MACOSX_DEPLOYMENT_TARGET = 10.13;
-				MTL_ENABLE_DEBUG_INFO = NO;
-				SDKROOT = macosx;
-				SWIFT_COMPILATION_MODE = wholemodule;
-				SWIFT_OPTIMIZATION_LEVEL = "-O";
-			};
-			name = Profile;
-		};
-		338D0CEA231458BD00FA5F75 /* Profile */ = {
-			isa = XCBuildConfiguration;
-			baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */;
-			buildSettings = {
-				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
-				CLANG_ENABLE_MODULES = YES;
-				CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements;
-				CODE_SIGN_IDENTITY = "Apple Development";
-				"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
-				CODE_SIGN_STYLE = Automatic;
-				COMBINE_HIDPI_IMAGES = YES;
-				DEAD_CODE_STRIPPING = YES;
-				DEVELOPMENT_TEAM = MYUTW2GF6J;
-				INFOPLIST_FILE = Runner/Info.plist;
-				INFOPLIST_KEY_CFBundleDisplayName = "reFilc";
-				INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.education";
-				LD_RUNPATH_SEARCH_PATHS = (
-					"$(inherited)",
-					"@executable_path/../Frameworks",
-				);
-				MACOSX_DEPLOYMENT_TARGET = 10.13;
-				NEW_SETTING = "";
-				PRODUCT_BUNDLE_IDENTIFIER = hu.filc.filcnaplo;
-				PRODUCT_NAME = "Felt Diary";
-				PROVISIONING_PROFILE_SPECIFIER = "";
-				SWIFT_VERSION = 5.0;
-			};
-			name = Profile;
-		};
-		338D0CEB231458BD00FA5F75 /* Profile */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				CODE_SIGN_STYLE = Manual;
-				DEAD_CODE_STRIPPING = YES;
-				MACOSX_DEPLOYMENT_TARGET = 10.13;
-				PRODUCT_NAME = "$(TARGET_NAME)";
-			};
-			name = Profile;
-		};
-		33CC10F92044A3C60003C045 /* Debug */ = {
-			isa = XCBuildConfiguration;
-			baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
-			buildSettings = {
-				ALWAYS_SEARCH_USER_PATHS = NO;
-				CLANG_ANALYZER_NONNULL = YES;
-				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
-				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
-				CLANG_CXX_LIBRARY = "libc++";
-				CLANG_ENABLE_MODULES = YES;
-				CLANG_ENABLE_OBJC_ARC = YES;
-				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
-				CLANG_WARN_BOOL_CONVERSION = YES;
-				CLANG_WARN_CONSTANT_CONVERSION = YES;
-				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
-				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
-				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
-				CLANG_WARN_EMPTY_BODY = YES;
-				CLANG_WARN_ENUM_CONVERSION = YES;
-				CLANG_WARN_INFINITE_RECURSION = YES;
-				CLANG_WARN_INT_CONVERSION = YES;
-				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
-				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
-				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
-				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
-				CLANG_WARN_SUSPICIOUS_MOVE = YES;
-				CODE_SIGN_IDENTITY = "-";
-				COPY_PHASE_STRIP = NO;
-				DEAD_CODE_STRIPPING = YES;
-				DEBUG_INFORMATION_FORMAT = dwarf;
-				ENABLE_STRICT_OBJC_MSGSEND = YES;
-				ENABLE_TESTABILITY = YES;
-				GCC_C_LANGUAGE_STANDARD = gnu11;
-				GCC_DYNAMIC_NO_PIC = NO;
-				GCC_NO_COMMON_BLOCKS = YES;
-				GCC_OPTIMIZATION_LEVEL = 0;
-				GCC_PREPROCESSOR_DEFINITIONS = (
-					"DEBUG=1",
-					"$(inherited)",
-				);
-				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
-				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
-				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
-				GCC_WARN_UNUSED_FUNCTION = YES;
-				GCC_WARN_UNUSED_VARIABLE = YES;
-				MACOSX_DEPLOYMENT_TARGET = 10.13;
-				MTL_ENABLE_DEBUG_INFO = YES;
-				ONLY_ACTIVE_ARCH = YES;
-				SDKROOT = macosx;
-				SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
-				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
-			};
-			name = Debug;
-		};
-		33CC10FA2044A3C60003C045 /* Release */ = {
-			isa = XCBuildConfiguration;
-			baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
-			buildSettings = {
-				ALWAYS_SEARCH_USER_PATHS = NO;
-				CLANG_ANALYZER_NONNULL = YES;
-				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
-				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
-				CLANG_CXX_LIBRARY = "libc++";
-				CLANG_ENABLE_MODULES = YES;
-				CLANG_ENABLE_OBJC_ARC = YES;
-				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
-				CLANG_WARN_BOOL_CONVERSION = YES;
-				CLANG_WARN_CONSTANT_CONVERSION = YES;
-				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
-				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
-				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
-				CLANG_WARN_EMPTY_BODY = YES;
-				CLANG_WARN_ENUM_CONVERSION = YES;
-				CLANG_WARN_INFINITE_RECURSION = YES;
-				CLANG_WARN_INT_CONVERSION = YES;
-				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
-				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
-				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
-				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
-				CLANG_WARN_SUSPICIOUS_MOVE = YES;
-				CODE_SIGN_IDENTITY = "-";
-				COPY_PHASE_STRIP = NO;
-				DEAD_CODE_STRIPPING = YES;
-				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
-				ENABLE_NS_ASSERTIONS = NO;
-				ENABLE_STRICT_OBJC_MSGSEND = YES;
-				GCC_C_LANGUAGE_STANDARD = gnu11;
-				GCC_NO_COMMON_BLOCKS = YES;
-				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
-				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
-				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
-				GCC_WARN_UNUSED_FUNCTION = YES;
-				GCC_WARN_UNUSED_VARIABLE = YES;
-				MACOSX_DEPLOYMENT_TARGET = 10.13;
-				MTL_ENABLE_DEBUG_INFO = NO;
-				SDKROOT = macosx;
-				SWIFT_COMPILATION_MODE = wholemodule;
-				SWIFT_OPTIMIZATION_LEVEL = "-O";
-			};
-			name = Release;
-		};
-		33CC10FC2044A3C60003C045 /* Debug */ = {
-			isa = XCBuildConfiguration;
-			baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */;
-			buildSettings = {
-				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
-				CLANG_ENABLE_MODULES = YES;
-				CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements;
-				CODE_SIGN_IDENTITY = "Apple Development";
-				"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
-				CODE_SIGN_STYLE = Automatic;
-				COMBINE_HIDPI_IMAGES = YES;
-				DEAD_CODE_STRIPPING = YES;
-				DEVELOPMENT_TEAM = MYUTW2GF6J;
-				INFOPLIST_FILE = Runner/Info.plist;
-				INFOPLIST_KEY_CFBundleDisplayName = "reFilc";
-				INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.education";
-				LD_RUNPATH_SEARCH_PATHS = (
-					"$(inherited)",
-					"@executable_path/../Frameworks",
-				);
-				MACOSX_DEPLOYMENT_TARGET = 10.13;
-				NEW_SETTING = "";
-				PRODUCT_BUNDLE_IDENTIFIER = hu.filc.filcnaplo;
-				PRODUCT_NAME = "Felt Diary";
-				PROVISIONING_PROFILE_SPECIFIER = "";
-				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
-				SWIFT_VERSION = 5.0;
-			};
-			name = Debug;
-		};
-		33CC10FD2044A3C60003C045 /* Release */ = {
-			isa = XCBuildConfiguration;
-			baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */;
-			buildSettings = {
-				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
-				CLANG_ENABLE_MODULES = YES;
-				CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements;
-				CODE_SIGN_IDENTITY = "Apple Development";
-				"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
-				CODE_SIGN_STYLE = Automatic;
-				COMBINE_HIDPI_IMAGES = YES;
-				DEAD_CODE_STRIPPING = YES;
-				DEVELOPMENT_TEAM = MYUTW2GF6J;
-				INFOPLIST_FILE = Runner/Info.plist;
-				INFOPLIST_KEY_CFBundleDisplayName = "reFilc";
-				INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.education";
-				LD_RUNPATH_SEARCH_PATHS = (
-					"$(inherited)",
-					"@executable_path/../Frameworks",
-				);
-				MACOSX_DEPLOYMENT_TARGET = 10.13;
-				NEW_SETTING = "";
-				PRODUCT_BUNDLE_IDENTIFIER = hu.filc.filcnaplo;
-				PRODUCT_NAME = "Felt Diary";
-				PROVISIONING_PROFILE_SPECIFIER = "";
-				SWIFT_VERSION = 5.0;
-			};
-			name = Release;
-		};
-		33CC111C2044C6BA0003C045 /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				CODE_SIGN_STYLE = Manual;
-				DEAD_CODE_STRIPPING = YES;
-				MACOSX_DEPLOYMENT_TARGET = 10.13;
-				PRODUCT_NAME = "$(TARGET_NAME)";
-			};
-			name = Debug;
-		};
-		33CC111D2044C6BA0003C045 /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				CODE_SIGN_STYLE = Automatic;
-				DEAD_CODE_STRIPPING = YES;
-				MACOSX_DEPLOYMENT_TARGET = 10.13;
-				PRODUCT_NAME = "$(TARGET_NAME)";
-			};
-			name = Release;
-		};
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
-		33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				33CC10F92044A3C60003C045 /* Debug */,
-				33CC10FA2044A3C60003C045 /* Release */,
-				338D0CE9231458BD00FA5F75 /* Profile */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
-		33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				33CC10FC2044A3C60003C045 /* Debug */,
-				33CC10FD2044A3C60003C045 /* Release */,
-				338D0CEA231458BD00FA5F75 /* Profile */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
-		33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				33CC111C2044C6BA0003C045 /* Debug */,
-				33CC111D2044C6BA0003C045 /* Release */,
-				338D0CEB231458BD00FA5F75 /* Profile */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
-/* End XCConfigurationList section */
-	};
-	rootObject = 33CC10E52044A3C60003C045 /* Project object */;
-}
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 54;
+	objects = {
+
+/* Begin PBXAggregateTarget section */
+		33CC111A2044C6BA0003C045 /* Flutter Assemble */ = {
+			isa = PBXAggregateTarget;
+			buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */;
+			buildPhases = (
+				33CC111E2044C6BF0003C045 /* ShellScript */,
+			);
+			dependencies = (
+			);
+			name = "Flutter Assemble";
+			productName = FLX;
+		};
+/* End PBXAggregateTarget section */
+
+/* Begin PBXBuildFile section */
+		335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; };
+		33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; };
+		33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; };
+		33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; };
+		33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; };
+		43DE217EE63035454211B258 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BB026B00EBE728C695C538A /* Pods_Runner.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+		33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 33CC10E52044A3C60003C045 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 33CC111A2044C6BA0003C045;
+			remoteInfo = FLX;
+		};
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+		33CC110E2044A8840003C045 /* Bundle Framework */ = {
+			isa = PBXCopyFilesBuildPhase;
+			buildActionMask = 2147483647;
+			dstPath = "";
+			dstSubfolderSpec = 10;
+			files = (
+			);
+			name = "Bundle Framework";
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+		333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = "<group>"; };
+		335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = "<group>"; };
+		33CC10ED2044A3C60003C045 /* Felt Diary.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Felt Diary.app"; sourceTree = BUILT_PRODUCTS_DIR; };
+		33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
+		33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = "<group>"; };
+		33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
+		33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = "<group>"; };
+		33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = "<group>"; };
+		33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = "<group>"; };
+		33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = "<group>"; };
+		33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = "<group>"; };
+		33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = "<group>"; };
+		33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = "<group>"; };
+		33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = "<group>"; };
+		72E0977D2D8959666A33F54C /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
+		7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = "<group>"; };
+		8BB026B00EBE728C695C538A /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+		9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = "<group>"; };
+		9C848561CA407DAFCC1F5699 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
+		C200D9112D0A790C324733AA /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		33CC10EA2044A3C60003C045 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				43DE217EE63035454211B258 /* Pods_Runner.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		33BA886A226E78AF003329D5 /* Configs */ = {
+			isa = PBXGroup;
+			children = (
+				33E5194F232828860026EE4D /* AppInfo.xcconfig */,
+				9740EEB21CF90195004384FC /* Debug.xcconfig */,
+				7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
+				333000ED22D3DE5D00554162 /* Warnings.xcconfig */,
+			);
+			path = Configs;
+			sourceTree = "<group>";
+		};
+		33CC10E42044A3C60003C045 = {
+			isa = PBXGroup;
+			children = (
+				33FAB671232836740065AC1E /* Runner */,
+				33CEB47122A05771004F2AC0 /* Flutter */,
+				33CC10EE2044A3C60003C045 /* Products */,
+				51085A7CB06D107E9E0B55D2 /* Pods */,
+				D1EA9707C367C55447080BD3 /* Frameworks */,
+			);
+			sourceTree = "<group>";
+		};
+		33CC10EE2044A3C60003C045 /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				33CC10ED2044A3C60003C045 /* Felt Diary.app */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		33CC11242044D66E0003C045 /* Resources */ = {
+			isa = PBXGroup;
+			children = (
+				33CC10F22044A3C60003C045 /* Assets.xcassets */,
+				33CC10F42044A3C60003C045 /* MainMenu.xib */,
+				33CC10F72044A3C60003C045 /* Info.plist */,
+			);
+			name = Resources;
+			path = ..;
+			sourceTree = "<group>";
+		};
+		33CEB47122A05771004F2AC0 /* Flutter */ = {
+			isa = PBXGroup;
+			children = (
+				335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */,
+				33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */,
+				33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */,
+				33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */,
+			);
+			path = Flutter;
+			sourceTree = "<group>";
+		};
+		33FAB671232836740065AC1E /* Runner */ = {
+			isa = PBXGroup;
+			children = (
+				33CC10F02044A3C60003C045 /* AppDelegate.swift */,
+				33CC11122044BFA00003C045 /* MainFlutterWindow.swift */,
+				33E51913231747F40026EE4D /* DebugProfile.entitlements */,
+				33E51914231749380026EE4D /* Release.entitlements */,
+				33CC11242044D66E0003C045 /* Resources */,
+				33BA886A226E78AF003329D5 /* Configs */,
+			);
+			path = Runner;
+			sourceTree = "<group>";
+		};
+		51085A7CB06D107E9E0B55D2 /* Pods */ = {
+			isa = PBXGroup;
+			children = (
+				72E0977D2D8959666A33F54C /* Pods-Runner.debug.xcconfig */,
+				C200D9112D0A790C324733AA /* Pods-Runner.release.xcconfig */,
+				9C848561CA407DAFCC1F5699 /* Pods-Runner.profile.xcconfig */,
+			);
+			path = Pods;
+			sourceTree = "<group>";
+		};
+		D1EA9707C367C55447080BD3 /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				8BB026B00EBE728C695C538A /* Pods_Runner.framework */,
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+		33CC10EC2044A3C60003C045 /* Runner */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */;
+			buildPhases = (
+				FD4539A7C90013601C734851 /* [CP] Check Pods Manifest.lock */,
+				33CC10E92044A3C60003C045 /* Sources */,
+				33CC10EA2044A3C60003C045 /* Frameworks */,
+				33CC10EB2044A3C60003C045 /* Resources */,
+				33CC110E2044A8840003C045 /* Bundle Framework */,
+				3399D490228B24CF009A79C7 /* ShellScript */,
+				558B4163B66FBD35BF611538 /* [CP] Embed Pods Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				33CC11202044C79F0003C045 /* PBXTargetDependency */,
+			);
+			name = Runner;
+			productName = Runner;
+			productReference = 33CC10ED2044A3C60003C045 /* Felt Diary.app */;
+			productType = "com.apple.product-type.application";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		33CC10E52044A3C60003C045 /* Project object */ = {
+			isa = PBXProject;
+			attributes = {
+				LastSwiftUpdateCheck = 0920;
+				LastUpgradeCheck = 1300;
+				ORGANIZATIONNAME = "";
+				TargetAttributes = {
+					33CC10EC2044A3C60003C045 = {
+						CreatedOnToolsVersion = 9.2;
+						LastSwiftMigration = 1100;
+						SystemCapabilities = {
+							com.apple.Sandbox = {
+								enabled = 1;
+							};
+						};
+					};
+					33CC111A2044C6BA0003C045 = {
+						CreatedOnToolsVersion = 9.2;
+						ProvisioningStyle = Manual;
+					};
+				};
+			};
+			buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */;
+			compatibilityVersion = "Xcode 9.3";
+			developmentRegion = en;
+			hasScannedForEncodings = 0;
+			knownRegions = (
+				en,
+				Base,
+			);
+			mainGroup = 33CC10E42044A3C60003C045;
+			productRefGroup = 33CC10EE2044A3C60003C045 /* Products */;
+			projectDirPath = "";
+			projectRoot = "";
+			targets = (
+				33CC10EC2044A3C60003C045 /* Runner */,
+				33CC111A2044C6BA0003C045 /* Flutter Assemble */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+		33CC10EB2044A3C60003C045 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */,
+				33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+		3399D490228B24CF009A79C7 /* ShellScript */ = {
+			isa = PBXShellScriptBuildPhase;
+			alwaysOutOfDate = 1;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputFileListPaths = (
+			);
+			inputPaths = (
+			);
+			outputFileListPaths = (
+			);
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n";
+		};
+		33CC111E2044C6BF0003C045 /* ShellScript */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputFileListPaths = (
+				Flutter/ephemeral/FlutterInputs.xcfilelist,
+			);
+			inputPaths = (
+				Flutter/ephemeral/tripwire,
+			);
+			outputFileListPaths = (
+				Flutter/ephemeral/FlutterOutputs.xcfilelist,
+			);
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire";
+		};
+		558B4163B66FBD35BF611538 /* [CP] Embed Pods Frameworks */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputFileListPaths = (
+				"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
+			);
+			name = "[CP] Embed Pods Frameworks";
+			outputFileListPaths = (
+				"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
+			showEnvVarsInLog = 0;
+		};
+		FD4539A7C90013601C734851 /* [CP] Check Pods Manifest.lock */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputFileListPaths = (
+			);
+			inputPaths = (
+				"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+				"${PODS_ROOT}/Manifest.lock",
+			);
+			name = "[CP] Check Pods Manifest.lock";
+			outputFileListPaths = (
+			);
+			outputPaths = (
+				"$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n    # print error to STDERR\n    echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n    exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+			showEnvVarsInLog = 0;
+		};
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+		33CC10E92044A3C60003C045 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */,
+				33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */,
+				335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+		33CC11202044C79F0003C045 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */;
+			targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */;
+		};
+/* End PBXTargetDependency section */
+
+/* Begin PBXVariantGroup section */
+		33CC10F42044A3C60003C045 /* MainMenu.xib */ = {
+			isa = PBXVariantGroup;
+			children = (
+				33CC10F52044A3C60003C045 /* Base */,
+			);
+			name = MainMenu.xib;
+			path = Runner;
+			sourceTree = "<group>";
+		};
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+		338D0CE9231458BD00FA5F75 /* Profile */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_ANALYZER_NONNULL = YES;
+				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INFINITE_RECURSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
+				CODE_SIGN_IDENTITY = "-";
+				COPY_PHASE_STRIP = NO;
+				DEAD_CODE_STRIPPING = YES;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				ENABLE_NS_ASSERTIONS = NO;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu11;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				MACOSX_DEPLOYMENT_TARGET = 10.14;
+				MTL_ENABLE_DEBUG_INFO = NO;
+				SDKROOT = macosx;
+				SWIFT_COMPILATION_MODE = wholemodule;
+				SWIFT_OPTIMIZATION_LEVEL = "-O";
+			};
+			name = Profile;
+		};
+		338D0CEA231458BD00FA5F75 /* Profile */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */;
+			buildSettings = {
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				CLANG_ENABLE_MODULES = YES;
+				CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements;
+				CODE_SIGN_IDENTITY = "Apple Development";
+				"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
+				CODE_SIGN_STYLE = Automatic;
+				COMBINE_HIDPI_IMAGES = YES;
+				DEAD_CODE_STRIPPING = YES;
+				DEVELOPMENT_TEAM = MYUTW2GF6J;
+				INFOPLIST_FILE = Runner/Info.plist;
+				INFOPLIST_KEY_CFBundleDisplayName = "reFilc";
+				INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.education";
+				LD_RUNPATH_SEARCH_PATHS = (
+					"$(inherited)",
+					"@executable_path/../Frameworks",
+				);
+				MACOSX_DEPLOYMENT_TARGET = 10.14;
+				NEW_SETTING = "";
+				PRODUCT_BUNDLE_IDENTIFIER = hu.filc.filcnaplo;
+				PRODUCT_NAME = "Felt Diary";
+				PROVISIONING_PROFILE_SPECIFIER = "";
+				SWIFT_VERSION = 5.0;
+			};
+			name = Profile;
+		};
+		338D0CEB231458BD00FA5F75 /* Profile */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				CODE_SIGN_STYLE = Manual;
+				DEAD_CODE_STRIPPING = YES;
+				MACOSX_DEPLOYMENT_TARGET = 10.14;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+			};
+			name = Profile;
+		};
+		33CC10F92044A3C60003C045 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_ANALYZER_NONNULL = YES;
+				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INFINITE_RECURSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
+				CODE_SIGN_IDENTITY = "-";
+				COPY_PHASE_STRIP = NO;
+				DEAD_CODE_STRIPPING = YES;
+				DEBUG_INFORMATION_FORMAT = dwarf;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				ENABLE_TESTABILITY = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu11;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"DEBUG=1",
+					"$(inherited)",
+				);
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				MACOSX_DEPLOYMENT_TARGET = 10.14;
+				MTL_ENABLE_DEBUG_INFO = YES;
+				ONLY_ACTIVE_ARCH = YES;
+				SDKROOT = macosx;
+				SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+			};
+			name = Debug;
+		};
+		33CC10FA2044A3C60003C045 /* Release */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_ANALYZER_NONNULL = YES;
+				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INFINITE_RECURSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
+				CODE_SIGN_IDENTITY = "-";
+				COPY_PHASE_STRIP = NO;
+				DEAD_CODE_STRIPPING = YES;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				ENABLE_NS_ASSERTIONS = NO;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu11;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				MACOSX_DEPLOYMENT_TARGET = 10.14;
+				MTL_ENABLE_DEBUG_INFO = NO;
+				SDKROOT = macosx;
+				SWIFT_COMPILATION_MODE = wholemodule;
+				SWIFT_OPTIMIZATION_LEVEL = "-O";
+			};
+			name = Release;
+		};
+		33CC10FC2044A3C60003C045 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */;
+			buildSettings = {
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				CLANG_ENABLE_MODULES = YES;
+				CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements;
+				CODE_SIGN_IDENTITY = "Apple Development";
+				"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
+				CODE_SIGN_STYLE = Automatic;
+				COMBINE_HIDPI_IMAGES = YES;
+				DEAD_CODE_STRIPPING = YES;
+				DEVELOPMENT_TEAM = MYUTW2GF6J;
+				INFOPLIST_FILE = Runner/Info.plist;
+				INFOPLIST_KEY_CFBundleDisplayName = "reFilc";
+				INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.education";
+				LD_RUNPATH_SEARCH_PATHS = (
+					"$(inherited)",
+					"@executable_path/../Frameworks",
+				);
+				MACOSX_DEPLOYMENT_TARGET = 10.14;
+				NEW_SETTING = "";
+				PRODUCT_BUNDLE_IDENTIFIER = hu.filc.filcnaplo;
+				PRODUCT_NAME = "Felt Diary";
+				PROVISIONING_PROFILE_SPECIFIER = "";
+				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+				SWIFT_VERSION = 5.0;
+			};
+			name = Debug;
+		};
+		33CC10FD2044A3C60003C045 /* Release */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */;
+			buildSettings = {
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				CLANG_ENABLE_MODULES = YES;
+				CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements;
+				CODE_SIGN_IDENTITY = "Apple Development";
+				"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
+				CODE_SIGN_STYLE = Automatic;
+				COMBINE_HIDPI_IMAGES = YES;
+				DEAD_CODE_STRIPPING = YES;
+				DEVELOPMENT_TEAM = MYUTW2GF6J;
+				INFOPLIST_FILE = Runner/Info.plist;
+				INFOPLIST_KEY_CFBundleDisplayName = "reFilc";
+				INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.education";
+				LD_RUNPATH_SEARCH_PATHS = (
+					"$(inherited)",
+					"@executable_path/../Frameworks",
+				);
+				MACOSX_DEPLOYMENT_TARGET = 10.14;
+				NEW_SETTING = "";
+				PRODUCT_BUNDLE_IDENTIFIER = hu.filc.filcnaplo;
+				PRODUCT_NAME = "Felt Diary";
+				PROVISIONING_PROFILE_SPECIFIER = "";
+				SWIFT_VERSION = 5.0;
+			};
+			name = Release;
+		};
+		33CC111C2044C6BA0003C045 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				CODE_SIGN_STYLE = Manual;
+				DEAD_CODE_STRIPPING = YES;
+				MACOSX_DEPLOYMENT_TARGET = 10.14;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+			};
+			name = Debug;
+		};
+		33CC111D2044C6BA0003C045 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				CODE_SIGN_STYLE = Automatic;
+				DEAD_CODE_STRIPPING = YES;
+				MACOSX_DEPLOYMENT_TARGET = 10.14;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				33CC10F92044A3C60003C045 /* Debug */,
+				33CC10FA2044A3C60003C045 /* Release */,
+				338D0CE9231458BD00FA5F75 /* Profile */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				33CC10FC2044A3C60003C045 /* Debug */,
+				33CC10FD2044A3C60003C045 /* Release */,
+				338D0CEA231458BD00FA5F75 /* Profile */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				33CC111C2044C6BA0003C045 /* Debug */,
+				33CC111D2044C6BA0003C045 /* Release */,
+				338D0CEB231458BD00FA5F75 /* Profile */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = 33CC10E52044A3C60003C045 /* Project object */;
+}
diff --git a/filcnaplo/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/filcnaplo/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
index 78fb329..f2f63a8 100644
--- a/filcnaplo/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
+++ b/filcnaplo/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
@@ -1,87 +1,87 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Scheme
-   LastUpgradeVersion = "1400"
-   version = "1.3">
-   <BuildAction
-      parallelizeBuildables = "YES"
-      buildImplicitDependencies = "YES">
-      <BuildActionEntries>
-         <BuildActionEntry
-            buildForTesting = "YES"
-            buildForRunning = "YES"
-            buildForProfiling = "YES"
-            buildForArchiving = "YES"
-            buildForAnalyzing = "YES">
-            <BuildableReference
-               BuildableIdentifier = "primary"
-               BlueprintIdentifier = "33CC10EC2044A3C60003C045"
-               BuildableName = "Felt Diary.app"
-               BlueprintName = "Runner"
-               ReferencedContainer = "container:Runner.xcodeproj">
-            </BuildableReference>
-         </BuildActionEntry>
-      </BuildActionEntries>
-   </BuildAction>
-   <TestAction
-      buildConfiguration = "Debug"
-      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
-      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
-      shouldUseLaunchSchemeArgsEnv = "YES">
-      <MacroExpansion>
-         <BuildableReference
-            BuildableIdentifier = "primary"
-            BlueprintIdentifier = "33CC10EC2044A3C60003C045"
-            BuildableName = "Felt Diary.app"
-            BlueprintName = "Runner"
-            ReferencedContainer = "container:Runner.xcodeproj">
-         </BuildableReference>
-      </MacroExpansion>
-      <Testables>
-      </Testables>
-   </TestAction>
-   <LaunchAction
-      buildConfiguration = "Debug"
-      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
-      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
-      launchStyle = "0"
-      useCustomWorkingDirectory = "NO"
-      ignoresPersistentStateOnLaunch = "NO"
-      debugDocumentVersioning = "YES"
-      debugServiceExtension = "internal"
-      allowLocationSimulation = "YES">
-      <BuildableProductRunnable
-         runnableDebuggingMode = "0">
-         <BuildableReference
-            BuildableIdentifier = "primary"
-            BlueprintIdentifier = "33CC10EC2044A3C60003C045"
-            BuildableName = "Felt Diary.app"
-            BlueprintName = "Runner"
-            ReferencedContainer = "container:Runner.xcodeproj">
-         </BuildableReference>
-      </BuildableProductRunnable>
-   </LaunchAction>
-   <ProfileAction
-      buildConfiguration = "Profile"
-      shouldUseLaunchSchemeArgsEnv = "YES"
-      savedToolIdentifier = ""
-      useCustomWorkingDirectory = "NO"
-      debugDocumentVersioning = "YES">
-      <BuildableProductRunnable
-         runnableDebuggingMode = "0">
-         <BuildableReference
-            BuildableIdentifier = "primary"
-            BlueprintIdentifier = "33CC10EC2044A3C60003C045"
-            BuildableName = "Felt Diary.app"
-            BlueprintName = "Runner"
-            ReferencedContainer = "container:Runner.xcodeproj">
-         </BuildableReference>
-      </BuildableProductRunnable>
-   </ProfileAction>
-   <AnalyzeAction
-      buildConfiguration = "Debug">
-   </AnalyzeAction>
-   <ArchiveAction
-      buildConfiguration = "Release"
-      revealArchiveInOrganizer = "YES">
-   </ArchiveAction>
-</Scheme>
+<?xml version="1.0" encoding="UTF-8"?>
+<Scheme
+   LastUpgradeVersion = "1300"
+   version = "1.3">
+   <BuildAction
+      parallelizeBuildables = "YES"
+      buildImplicitDependencies = "YES">
+      <BuildActionEntries>
+         <BuildActionEntry
+            buildForTesting = "YES"
+            buildForRunning = "YES"
+            buildForProfiling = "YES"
+            buildForArchiving = "YES"
+            buildForAnalyzing = "YES">
+            <BuildableReference
+               BuildableIdentifier = "primary"
+               BlueprintIdentifier = "33CC10EC2044A3C60003C045"
+               BuildableName = "Felt Diary.app"
+               BlueprintName = "Runner"
+               ReferencedContainer = "container:Runner.xcodeproj">
+            </BuildableReference>
+         </BuildActionEntry>
+      </BuildActionEntries>
+   </BuildAction>
+   <TestAction
+      buildConfiguration = "Debug"
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+      shouldUseLaunchSchemeArgsEnv = "YES">
+      <MacroExpansion>
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "33CC10EC2044A3C60003C045"
+            BuildableName = "Felt Diary.app"
+            BlueprintName = "Runner"
+            ReferencedContainer = "container:Runner.xcodeproj">
+         </BuildableReference>
+      </MacroExpansion>
+      <Testables>
+      </Testables>
+   </TestAction>
+   <LaunchAction
+      buildConfiguration = "Debug"
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+      launchStyle = "0"
+      useCustomWorkingDirectory = "NO"
+      ignoresPersistentStateOnLaunch = "NO"
+      debugDocumentVersioning = "YES"
+      debugServiceExtension = "internal"
+      allowLocationSimulation = "YES">
+      <BuildableProductRunnable
+         runnableDebuggingMode = "0">
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "33CC10EC2044A3C60003C045"
+            BuildableName = "Felt Diary.app"
+            BlueprintName = "Runner"
+            ReferencedContainer = "container:Runner.xcodeproj">
+         </BuildableReference>
+      </BuildableProductRunnable>
+   </LaunchAction>
+   <ProfileAction
+      buildConfiguration = "Profile"
+      shouldUseLaunchSchemeArgsEnv = "YES"
+      savedToolIdentifier = ""
+      useCustomWorkingDirectory = "NO"
+      debugDocumentVersioning = "YES">
+      <BuildableProductRunnable
+         runnableDebuggingMode = "0">
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "33CC10EC2044A3C60003C045"
+            BuildableName = "Felt Diary.app"
+            BlueprintName = "Runner"
+            ReferencedContainer = "container:Runner.xcodeproj">
+         </BuildableReference>
+      </BuildableProductRunnable>
+   </ProfileAction>
+   <AnalyzeAction
+      buildConfiguration = "Debug">
+   </AnalyzeAction>
+   <ArchiveAction
+      buildConfiguration = "Release"
+      revealArchiveInOrganizer = "YES">
+   </ArchiveAction>
+</Scheme>
diff --git a/filcnaplo/pubspec.yaml b/filcnaplo/pubspec.yaml
index 3b0171a..8dd291e 100644
--- a/filcnaplo/pubspec.yaml
+++ b/filcnaplo/pubspec.yaml
@@ -3,7 +3,7 @@ description: "Nem hivatalos e-napló alkalmazás az e-Kréta rendszerhez"
 homepage: https://refilc.hu
 publish_to: "none"
 
-version: 4.0.0+198
+version: 4.0.1+205
 
 environment:
   sdk: ">=2.17.0 <3.0.0"
@@ -67,6 +67,7 @@ dependencies:
   animations: ^2.0.1
   background_fetch: ^1.1.5
   flutter_local_notifications: ^14.1.0
+  package_info_plus: ^3.1.2
 
 dev_dependencies:
   flutter_lints: ^2.0.1
diff --git a/filcnaplo_desktop_ui/lib/pages/grades/grade_subject_view.dart b/filcnaplo_desktop_ui/lib/pages/grades/grade_subject_view.dart
index 1612457..95571f1 100644
--- a/filcnaplo_desktop_ui/lib/pages/grades/grade_subject_view.dart
+++ b/filcnaplo_desktop_ui/lib/pages/grades/grade_subject_view.dart
@@ -26,16 +26,18 @@ import 'package:flutter_expandable_fab/flutter_expandable_fab.dart';
 import 'package:flutter_feather_icons/flutter_feather_icons.dart';
 import 'package:provider/provider.dart';
 import 'grades_page.i18n.dart';
-// import 'package:filcnaplo_premium/ui/mobile/goalplanner/new_goal.dart';
+//import 'package:filcnaplo_premium/ui/mobile/goal_planner/new_goal.dart';
 
 class GradeSubjectView extends StatefulWidget {
-  const GradeSubjectView(this.subject, {Key? key, this.groupAverage = 0.0}) : super(key: key);
+  const GradeSubjectView(this.subject, {Key? key, this.groupAverage = 0.0})
+      : super(key: key);
 
   final Subject subject;
   final double groupAverage;
 
   void push(BuildContext context, {bool root = false}) {
-    Navigator.of(context, rootNavigator: root).push(CupertinoPageRoute(builder: (context) => this));
+    Navigator.of(context, rootNavigator: root)
+        .push(CupertinoPageRoute(builder: (context) => this));
   }
 
   @override
@@ -70,7 +72,9 @@ class _GradeSubjectViewState extends State<GradeSubjectView> {
     final gradeDates = subjectGrades.map((e) => e.date.millisecondsSinceEpoch);
     final maxGradeDate = gradeDates.fold(0, max);
     final minGradeDate = gradeDates.fold(0, min);
-    if (maxGradeDate - minGradeDate < const Duration(days: 5).inMilliseconds) return false; // naplo/#78
+    if (maxGradeDate - minGradeDate < const Duration(days: 5).inMilliseconds) {
+      return false; // naplo/#78
+    }
 
     return subjectGrades.where((e) => e.type == GradeType.midYear).length > 1;
   }
@@ -129,7 +133,8 @@ class _GradeSubjectViewState extends State<GradeSubjectView> {
       ),
     );
 
-    tiles.add(Padding(padding: EdgeInsets.only(bottom: !gradeCalcMode ? 24.0 : 250.0)));
+    tiles.add(Padding(
+        padding: EdgeInsets.only(bottom: !gradeCalcMode ? 24.0 : 250.0)));
     gradeTiles = List.castFrom(tiles);
   }
 
@@ -142,7 +147,10 @@ class _GradeSubjectViewState extends State<GradeSubjectView> {
     average = AverageHelper.averageEvals(subjectGrades);
     final prevAvg = subjectGrades.isNotEmpty
         ? AverageHelper.averageEvals(subjectGrades
-            .where((e) => e.date.isBefore(subjectGrades.reduce((v, e) => e.date.isAfter(v.date) ? e : v).date.subtract(const Duration(days: 30))))
+            .where((e) => e.date.isBefore(subjectGrades
+                .reduce((v, e) => e.date.isAfter(v.date) ? e : v)
+                .date
+                .subtract(const Duration(days: 30))))
             .toList())
         : 0.0;
 
@@ -153,14 +161,17 @@ class _GradeSubjectViewState extends State<GradeSubjectView> {
           mainAxisAlignment: MainAxisAlignment.spaceBetween,
           children: [
             Text("annual_average".i18n),
-            if (average != prevAvg) TrendDisplay(current: average, previous: prevAvg),
+            if (average != prevAvg)
+              TrendDisplay(current: average, previous: prevAvg),
           ],
         ),
         child: Container(
           padding: const EdgeInsets.only(top: 12.0, right: 12.0),
           child: Row(
             children: [
-              Expanded(child: GradeGraph(subjectGrades, dayThreshold: 5, classAvg: widget.groupAverage)),
+              Expanded(
+                  child: GradeGraph(subjectGrades,
+                      dayThreshold: 5, classAvg: widget.groupAverage)),
               Padding(
                 padding: const EdgeInsets.only(bottom: 24.0),
                 child: GradesCount(grades: subjectGrades),
@@ -174,7 +185,9 @@ class _GradeSubjectViewState extends State<GradeSubjectView> {
     if (!gradeCalcMode) {
       buildTiles(subjectGrades);
     } else {
-      List<Grade> ghostGrades = calculatorProvider.ghosts.where((e) => e.subject == widget.subject).toList();
+      List<Grade> ghostGrades = calculatorProvider.ghosts
+          .where((e) => e.subject == widget.subject)
+          .toList();
       buildTiles(ghostGrades);
     }
 
@@ -182,7 +195,10 @@ class _GradeSubjectViewState extends State<GradeSubjectView> {
         key: _scaffoldKey,
         floatingActionButtonLocation: ExpandableFab.location,
         floatingActionButton: Visibility(
-          visible: !gradeCalcMode && subjectGrades.where((e) => e.type == GradeType.midYear).isNotEmpty,
+          visible: !gradeCalcMode &&
+              subjectGrades
+                  .where((e) => e.type == GradeType.midYear)
+                  .isNotEmpty,
           child: ExpandableFab(
             type: ExpandableFabType.up,
             distance: 50,
@@ -215,12 +231,17 @@ class _GradeSubjectViewState extends State<GradeSubjectView> {
               },
               navBarItems: [
                 const SizedBox(width: 6.0),
-                if (widget.groupAverage != 0) Center(child: AverageDisplay(average: widget.groupAverage, border: true)),
+                if (widget.groupAverage != 0)
+                  Center(
+                      child: AverageDisplay(
+                          average: widget.groupAverage, border: true)),
                 const SizedBox(width: 6.0),
-                if (average != 0) Center(child: AverageDisplay(average: average)),
+                if (average != 0)
+                  Center(child: AverageDisplay(average: average)),
                 const SizedBox(width: 12.0),
               ],
-              icon: SubjectIcon.resolveVariant(subject: widget.subject, context: context),
+              icon: SubjectIcon.resolveVariant(
+                  subject: widget.subject, context: context),
               scrollController: _scrollController,
               title: widget.subject.renamedTo ?? widget.subject.name.capital(),
               italic: widget.subject.isRenamed,
@@ -240,13 +261,15 @@ class _GradeSubjectViewState extends State<GradeSubjectView> {
 
   void gradeCalc(BuildContext context) {
     // Scroll to the top of the page
-    _scrollController.animateTo(75, duration: const Duration(milliseconds: 500), curve: Curves.ease);
+    _scrollController.animateTo(75,
+        duration: const Duration(milliseconds: 500), curve: Curves.ease);
 
     calculatorProvider.clear();
     calculatorProvider.addAllGrades(gradeProvider.grades);
 
     _sheetController = _scaffoldKey.currentState?.showBottomSheet(
-      (context) => RoundedBottomSheet(child: GradeCalculator(widget.subject), borderRadius: 14.0),
+      (context) => RoundedBottomSheet(
+          child: GradeCalculator(widget.subject), borderRadius: 14.0),
       backgroundColor: const Color(0x00000000),
       elevation: 12.0,
     );
diff --git a/filcnaplo_desktop_ui/lib/pages/grades/grades_page.dart b/filcnaplo_desktop_ui/lib/pages/grades/grades_page.dart
index c991d9b..619756a 100644
--- a/filcnaplo_desktop_ui/lib/pages/grades/grades_page.dart
+++ b/filcnaplo_desktop_ui/lib/pages/grades/grades_page.dart
@@ -41,13 +41,21 @@ class _GradesPageState extends State<GradesPage> {
 
   int avgDropValue = 0;
 
-  List<Grade> getSubjectGrades(Subject subject, {int days = 0}) => gradeProvider.grades
-      .where(
-          (e) => e.subject == subject && e.type == GradeType.midYear && (days == 0 || e.date.isBefore(DateTime.now().subtract(Duration(days: days)))))
+  List<Grade> getSubjectGrades(Subject subject, {int days = 0}) => gradeProvider
+      .grades
+      .where((e) =>
+          e.subject == subject &&
+          e.type == GradeType.midYear &&
+          (days == 0 ||
+              e.date.isBefore(DateTime.now().subtract(Duration(days: days)))))
       .toList();
 
   void generateTiles() {
-    List<Subject> subjects = gradeProvider.grades.map((e) => e.subject).toSet().toList()..sort((a, b) => a.name.compareTo(b.name));
+    List<Subject> subjects = gradeProvider.grades
+        .map((e) => e.subject)
+        .toSet()
+        .toList()
+      ..sort((a, b) => a.name.compareTo(b.name));
     List<Widget> tiles = [];
 
     Map<Subject, double> subjectAvgs = {};
@@ -59,11 +67,15 @@ class _GradesPageState extends State<GradesPage> {
       double averageBefore = 0.0;
 
       if (avgDropValue != 0) {
-        List<Grade> gradesBefore = getSubjectGrades(subject, days: avgDropValue);
-        averageBefore = avgDropValue == 0 ? 0.0 : AverageHelper.averageEvals(gradesBefore);
+        List<Grade> gradesBefore =
+            getSubjectGrades(subject, days: avgDropValue);
+        averageBefore =
+            avgDropValue == 0 ? 0.0 : AverageHelper.averageEvals(gradesBefore);
       }
       var nullavg = GroupAverage(average: 0.0, subject: subject, uid: "0");
-      double groupAverage = gradeProvider.groupAverages.firstWhere((e) => e.subject == subject, orElse: () => nullavg).average;
+      double groupAverage = gradeProvider.groupAverages
+          .firstWhere((e) => e.subject == subject, orElse: () => nullavg)
+          .average;
 
       if (avg != 0) subjectAvgs[subject] = avg;
 
@@ -73,7 +85,8 @@ class _GradesPageState extends State<GradesPage> {
         average: avg,
         groupAverage: avgDropValue == 0 ? groupAverage : 0.0,
         onTap: () {
-          GradeSubjectView(subject, groupAverage: groupAverage).push(context, root: true);
+          GradeSubjectView(subject, groupAverage: groupAverage)
+              .push(context, root: true);
         },
       );
     }));
@@ -81,7 +94,12 @@ class _GradesPageState extends State<GradesPage> {
     if (tiles.isNotEmpty) {
       tiles.insert(0, yearlyGraph);
       tiles.insert(1, FailWarning(subjectAvgs: subjectAvgs));
-      tiles.insert(2, PanelTitle(title: Text(avgDropValue == 0 ? "Subjects".i18n : "Subjects_changes".i18n)));
+      tiles.insert(
+          2,
+          PanelTitle(
+              title: Text(avgDropValue == 0
+                  ? "Subjects".i18n
+                  : "Subjects_changes".i18n)));
       tiles.insert(3, const PanelHeader(padding: EdgeInsets.only(top: 12.0)));
       tiles.add(const PanelFooter(padding: EdgeInsets.only(bottom: 12.0)));
       tiles.add(const Padding(padding: EdgeInsets.only(bottom: 24.0)));
@@ -95,9 +113,15 @@ class _GradesPageState extends State<GradesPage> {
       );
     }
 
-    double subjectAvg = subjectAvgs.isNotEmpty ? subjectAvgs.values.fold(0.0, (double a, double b) => a + b) / subjectAvgs.length : 0.0;
+    double subjectAvg = subjectAvgs.isNotEmpty
+        ? subjectAvgs.values.fold(0.0, (double a, double b) => a + b) /
+            subjectAvgs.length
+        : 0.0;
     final double classAvg = gradeProvider.groupAverages.isNotEmpty
-        ? gradeProvider.groupAverages.map((e) => e.average).fold(0.0, (double a, double b) => a + b) / gradeProvider.groupAverages.length
+        ? gradeProvider.groupAverages
+                .map((e) => e.average)
+                .fold(0.0, (double a, double b) => a + b) /
+            gradeProvider.groupAverages.length
         : 0.0;
 
     if (subjectAvg > 0) {
@@ -151,18 +175,31 @@ class _GradesPageState extends State<GradesPage> {
 
     final double totalClassAvg = gradeProvider.groupAverages.isEmpty
         ? 0.0
-        : gradeProvider.groupAverages.map((e) => e.average).fold(0.0, (double a, double b) => a + b) / gradeProvider.groupAverages.length;
+        : gradeProvider.groupAverages
+                .map((e) => e.average)
+                .fold(0.0, (double a, double b) => a + b) /
+            gradeProvider.groupAverages.length;
 
-    final now = gradeProvider.grades.isNotEmpty ? gradeProvider.grades.reduce((v, e) => e.date.isAfter(v.date) ? e : v).date : DateTime.now();
+    final now = gradeProvider.grades.isNotEmpty
+        ? gradeProvider.grades
+            .reduce((v, e) => e.date.isAfter(v.date) ? e : v)
+            .date
+        : DateTime.now();
 
-    final currentStudentAvg = AverageHelper.averageEvals(gradeProvider.grades.where((e) => e.type == GradeType.midYear).toList());
+    final currentStudentAvg = AverageHelper.averageEvals(gradeProvider.grades
+        .where((e) => e.type == GradeType.midYear)
+        .toList());
     final prevStudentAvg = AverageHelper.averageEvals(gradeProvider.grades
         .where((e) => e.type == GradeType.midYear)
         .where((e) => e.date.isBefore(now.subtract(const Duration(days: 30))))
         .toList());
 
     List<Grade> graphGrades = gradeProvider.grades
-        .where((e) => e.type == GradeType.midYear && (avgDropValue == 0 || e.date.isAfter(DateTime.now().subtract(Duration(days: avgDropValue)))))
+        .where((e) =>
+            e.type == GradeType.midYear &&
+            (avgDropValue == 0 ||
+                e.date.isAfter(
+                    DateTime.now().subtract(Duration(days: avgDropValue)))))
         .toList();
 
     yearlyGraph = Padding(
@@ -183,8 +220,12 @@ class _GradesPageState extends State<GradesPage> {
               children: [
                 // if (totalClassAvg >= 1.0) AverageDisplay(average: totalClassAvg, border: true),
                 // const SizedBox(width: 4.0),
-                TrendDisplay(previous: prevStudentAvg, current: currentStudentAvg),
-                if (gradeProvider.grades.where((e) => e.type == GradeType.midYear).isNotEmpty) AverageDisplay(average: currentStudentAvg),
+                TrendDisplay(
+                    previous: prevStudentAvg, current: currentStudentAvg),
+                if (gradeProvider.grades
+                    .where((e) => e.type == GradeType.midYear)
+                    .isNotEmpty)
+                  AverageDisplay(average: currentStudentAvg),
               ],
             )
           ],
@@ -193,7 +234,9 @@ class _GradesPageState extends State<GradesPage> {
           padding: const EdgeInsets.only(top: 12.0, right: 12.0),
           child: Row(
             children: [
-              Expanded(child: GradeGraph(graphGrades, dayThreshold: 2, classAvg: totalClassAvg)),
+              Expanded(
+                  child: GradeGraph(graphGrades,
+                      dayThreshold: 2, classAvg: totalClassAvg)),
               Padding(
                 padding: const EdgeInsets.only(bottom: 24.0),
                 child: GradesCount(grades: graphGrades),
@@ -210,7 +253,8 @@ class _GradesPageState extends State<GradesPage> {
       body: Padding(
         padding: const EdgeInsets.only(top: 9.0),
         child: NestedScrollView(
-          physics: const BouncingScrollPhysics(parent: AlwaysScrollableScrollPhysics()),
+          physics: const BouncingScrollPhysics(
+              parent: AlwaysScrollableScrollPhysics()),
           headerSliverBuilder: (context, _) => [
             SliverAppBar(
               centerTitle: false,
@@ -223,7 +267,10 @@ class _GradesPageState extends State<GradesPage> {
                 padding: const EdgeInsets.only(left: 8.0),
                 child: Text(
                   "Grades".i18n,
-                  style: TextStyle(color: AppColors.of(context).text, fontSize: 32.0, fontWeight: FontWeight.bold),
+                  style: TextStyle(
+                      color: AppColors.of(context).text,
+                      fontSize: 32.0,
+                      fontWeight: FontWeight.bold),
                 ),
               ),
               shadowColor: Theme.of(context).shadowColor,
@@ -238,7 +285,8 @@ class _GradesPageState extends State<GradesPage> {
               itemCount: max(subjectTiles.length, 1),
               itemBuilder: (context, index) {
                 if (subjectTiles.isNotEmpty) {
-                  EdgeInsetsGeometry panelPadding = const EdgeInsets.symmetric(horizontal: 24.0);
+                  EdgeInsetsGeometry panelPadding =
+                      const EdgeInsets.symmetric(horizontal: 24.0);
 
                   if (subjectTiles[index].runtimeType == GradeSubjectTile) {
                     return Padding(
@@ -248,7 +296,8 @@ class _GradesPageState extends State<GradesPage> {
                           padding: const EdgeInsets.symmetric(horizontal: 8.0),
                         ));
                   } else {
-                    return Padding(padding: panelPadding, child: subjectTiles[index]);
+                    return Padding(
+                        padding: panelPadding, child: subjectTiles[index]);
                   }
                 } else {
                   return Container();
diff --git a/filcnaplo_mobile_ui/lib/common/hero_scrollview.dart b/filcnaplo_mobile_ui/lib/common/hero_scrollview.dart
index ae09b9d..91872a2 100755
--- a/filcnaplo_mobile_ui/lib/common/hero_scrollview.dart
+++ b/filcnaplo_mobile_ui/lib/common/hero_scrollview.dart
@@ -57,7 +57,8 @@ class _HeroScrollViewState extends State<HeroScrollView> {
   Widget build(BuildContext context) {
     return NestedScrollView(
       controller: _scrollController,
-      physics: const BouncingScrollPhysics(parent: AlwaysScrollableScrollPhysics()),
+      physics:
+          const BouncingScrollPhysics(parent: AlwaysScrollableScrollPhysics()),
       headerSliverBuilder: (context, _) => [
         SliverAppBar(
           pinned: true,
@@ -70,7 +71,8 @@ class _HeroScrollViewState extends State<HeroScrollView> {
               opacity: showBarTitle ? 1.0 : 0.0,
               child: Row(
                 children: [
-                  Icon(widget.icon, color: AppColors.of(context).text.withOpacity(.8)),
+                  Icon(widget.icon,
+                      color: AppColors.of(context).text.withOpacity(.8)),
                   const SizedBox(width: 8.0),
                   Expanded(
                     child: Text(
@@ -78,7 +80,9 @@ class _HeroScrollViewState extends State<HeroScrollView> {
                       overflow: TextOverflow.ellipsis,
                       maxLines: 2,
                       style: TextStyle(
-                          color: AppColors.of(context).text, fontWeight: FontWeight.w500, fontStyle: widget.italic ? FontStyle.italic : null),
+                          color: AppColors.of(context).text,
+                          fontWeight: FontWeight.w500,
+                          fontStyle: widget.italic ? FontStyle.italic : null),
                     ),
                   ),
                 ],
@@ -94,7 +98,7 @@ class _HeroScrollViewState extends State<HeroScrollView> {
                 }
               }),
           actions: widget.navBarItems,
-          expandedHeight: 124.0,
+          expandedHeight: 145.69,
           stretch: true,
           flexibleSpace: FlexibleSpaceBar(
             background: Stack(
diff --git a/filcnaplo_mobile_ui/lib/pages/grades/grade_subject_view.dart b/filcnaplo_mobile_ui/lib/pages/grades/grade_subject_view.dart
index 4258872..1ef632c 100755
--- a/filcnaplo_mobile_ui/lib/pages/grades/grade_subject_view.dart
+++ b/filcnaplo_mobile_ui/lib/pages/grades/grade_subject_view.dart
@@ -29,16 +29,18 @@ import 'package:flutter_expandable_fab/flutter_expandable_fab.dart';
 import 'package:flutter_feather_icons/flutter_feather_icons.dart';
 import 'package:provider/provider.dart';
 import 'grades_page.i18n.dart';
-// import 'package:filcnaplo_premium/ui/mobile/goalplanner/new_goal.dart';
+// import 'package:filcnaplo_premium/ui/mobile/goal_planner/new_goal.dart';
 
 class GradeSubjectView extends StatefulWidget {
-  const GradeSubjectView(this.subject, {Key? key, this.groupAverage = 0.0}) : super(key: key);
+  const GradeSubjectView(this.subject, {Key? key, this.groupAverage = 0.0})
+      : super(key: key);
 
   final Subject subject;
   final double groupAverage;
 
   void push(BuildContext context, {bool root = false}) {
-    Navigator.of(context, rootNavigator: root).push(CupertinoPageRoute(builder: (context) => this));
+    Navigator.of(context, rootNavigator: root)
+        .push(CupertinoPageRoute(builder: (context) => this));
   }
 
   @override
@@ -73,7 +75,8 @@ class _GradeSubjectViewState extends State<GradeSubjectView> {
     final gradeDates = subjectGrades.map((e) => e.date.millisecondsSinceEpoch);
     final maxGradeDate = gradeDates.fold(0, max);
     final minGradeDate = gradeDates.fold(0, min);
-    if (maxGradeDate - minGradeDate < const Duration(days: 5).inMilliseconds) return false; // naplo/#78
+    if (maxGradeDate - minGradeDate < const Duration(days: 5).inMilliseconds)
+      return false; // naplo/#78
 
     return subjectGrades.where((e) => e.type == GradeType.midYear).length > 1;
   }
@@ -139,7 +142,8 @@ class _GradeSubjectViewState extends State<GradeSubjectView> {
       ),
     );
 
-    tiles.add(Padding(padding: EdgeInsets.only(bottom: !gradeCalcMode ? 24.0 : 250.0)));
+    tiles.add(Padding(
+        padding: EdgeInsets.only(bottom: !gradeCalcMode ? 24.0 : 250.0)));
     gradeTiles = List.castFrom(tiles);
   }
 
@@ -152,7 +156,10 @@ class _GradeSubjectViewState extends State<GradeSubjectView> {
     average = AverageHelper.averageEvals(subjectGrades);
     final prevAvg = subjectGrades.isNotEmpty
         ? AverageHelper.averageEvals(subjectGrades
-            .where((e) => e.date.isBefore(subjectGrades.reduce((v, e) => e.date.isAfter(v.date) ? e : v).date.subtract(const Duration(days: 30))))
+            .where((e) => e.date.isBefore(subjectGrades
+                .reduce((v, e) => e.date.isAfter(v.date) ? e : v)
+                .date
+                .subtract(const Duration(days: 30))))
             .toList())
         : 0.0;
 
@@ -163,12 +170,14 @@ class _GradeSubjectViewState extends State<GradeSubjectView> {
           mainAxisAlignment: MainAxisAlignment.spaceBetween,
           children: [
             Text("annual_average".i18n),
-            if (average != prevAvg) TrendDisplay(current: average, previous: prevAvg),
+            if (average != prevAvg)
+              TrendDisplay(current: average, previous: prevAvg),
           ],
         ),
         child: Container(
           padding: const EdgeInsets.only(top: 16.0, right: 12.0),
-          child: GradeGraph(subjectGrades, dayThreshold: 5, classAvg: widget.groupAverage),
+          child: GradeGraph(subjectGrades,
+              dayThreshold: 5, classAvg: widget.groupAverage),
         ),
       ),
     );
@@ -176,7 +185,9 @@ class _GradeSubjectViewState extends State<GradeSubjectView> {
     if (!gradeCalcMode) {
       buildTiles(subjectGrades);
     } else {
-      List<Grade> ghostGrades = calculatorProvider.ghosts.where((e) => e.subject == widget.subject).toList();
+      List<Grade> ghostGrades = calculatorProvider.ghosts
+          .where((e) => e.subject == widget.subject)
+          .toList();
       buildTiles(ghostGrades);
     }
 
@@ -184,7 +195,10 @@ class _GradeSubjectViewState extends State<GradeSubjectView> {
         key: _scaffoldKey,
         floatingActionButtonLocation: ExpandableFab.location,
         floatingActionButton: Visibility(
-          visible: !gradeCalcMode && subjectGrades.where((e) => e.type == GradeType.midYear).isNotEmpty,
+          visible: !gradeCalcMode &&
+              subjectGrades
+                  .where((e) => e.type == GradeType.midYear)
+                  .isNotEmpty,
           child: ExpandableFab(
             backgroundColor: Theme.of(context).colorScheme.secondary,
             type: ExpandableFabType.up,
@@ -204,14 +218,19 @@ class _GradeSubjectViewState extends State<GradeSubjectView> {
                 child: const Icon(FeatherIcons.flag, size: 20.0),
                 backgroundColor: Theme.of(context).colorScheme.secondary,
                 onPressed: () {
-                  if (!Provider.of<PremiumProvider>(context, listen: false).hasScope(PremiumScopes.goalPlanner)) {
-                    PremiumLockedFeatureUpsell.show(context: context, feature: PremiumFeature.goalplanner);
+                  if (!Provider.of<PremiumProvider>(context, listen: false)
+                      .hasScope(PremiumScopes.goalPlanner)) {
+                    PremiumLockedFeatureUpsell.show(
+                        context: context, feature: PremiumFeature.goalplanner);
                     return;
                   }
 
-                  ScaffoldMessenger.of(context).showSnackBar(const SnackBar(content: Text("Hamarosan...")));
+                  ScaffoldMessenger.of(context).showSnackBar(
+                      const SnackBar(content: Text("Hamarosan...")));
 
-                  // Navigator.of(context).push(CupertinoPageRoute(builder: (context) => PremiumGoalplannerNewGoalScreen(subject: widget.subject)));
+                  //Navigator.of(context).push(CupertinoPageRoute(
+                  //builder: (context) => PremiumGoalplannerNewGoalScreen(
+                  // subject: widget.subject)));
                 },
               ),
             ],
@@ -230,12 +249,17 @@ class _GradeSubjectViewState extends State<GradeSubjectView> {
               },
               navBarItems: [
                 const SizedBox(width: 6.0),
-                if (widget.groupAverage != 0) Center(child: AverageDisplay(average: widget.groupAverage, border: true)),
+                if (widget.groupAverage != 0)
+                  Center(
+                      child: AverageDisplay(
+                          average: widget.groupAverage, border: true)),
                 const SizedBox(width: 6.0),
-                if (average != 0) Center(child: AverageDisplay(average: average)),
+                if (average != 0)
+                  Center(child: AverageDisplay(average: average)),
                 const SizedBox(width: 12.0),
               ],
-              icon: SubjectIcon.resolveVariant(subject: widget.subject, context: context),
+              icon: SubjectIcon.resolveVariant(
+                  subject: widget.subject, context: context),
               scrollController: _scrollController,
               title: widget.subject.renamedTo ?? widget.subject.name.capital(),
               italic: widget.subject.isRenamed,
@@ -255,13 +279,15 @@ class _GradeSubjectViewState extends State<GradeSubjectView> {
 
   void gradeCalc(BuildContext context) {
     // Scroll to the top of the page
-    _scrollController.animateTo(75, duration: const Duration(milliseconds: 500), curve: Curves.ease);
+    _scrollController.animateTo(75,
+        duration: const Duration(milliseconds: 500), curve: Curves.ease);
 
     calculatorProvider.clear();
     calculatorProvider.addAllGrades(gradeProvider.grades);
 
     _sheetController = _scaffoldKey.currentState?.showBottomSheet(
-      (context) => RoundedBottomSheet(child: GradeCalculator(widget.subject), borderRadius: 14.0),
+      (context) => RoundedBottomSheet(
+          child: GradeCalculator(widget.subject), borderRadius: 14.0),
       backgroundColor: const Color(0x00000000),
       elevation: 12.0,
     );
diff --git a/filcnaplo_mobile_ui/lib/screens/navigation/navbar_item.dart b/filcnaplo_mobile_ui/lib/screens/navigation/navbar_item.dart
index 8d9f7b7..c28796b 100755
--- a/filcnaplo_mobile_ui/lib/screens/navigation/navbar_item.dart
+++ b/filcnaplo_mobile_ui/lib/screens/navigation/navbar_item.dart
@@ -5,7 +5,8 @@ class NavItem {
   final Widget icon;
   final Widget activeIcon;
 
-  const NavItem({required this.title, required this.icon, required this.activeIcon});
+  const NavItem(
+      {required this.title, required this.icon, required this.activeIcon});
 }
 
 class NavbarItem extends StatelessWidget {
@@ -25,14 +26,16 @@ class NavbarItem extends StatelessWidget {
     final Widget icon = active ? item.activeIcon : item.icon;
 
     return SafeArea(
-      child: InkWell(
+      child: GestureDetector(
         onTap: onTap,
         child: Padding(
           padding: const EdgeInsets.symmetric(vertical: 12.0, horizontal: 6.0),
           child: Container(
             padding: const EdgeInsets.all(12.0),
             decoration: BoxDecoration(
-              color: active ? Theme.of(context).colorScheme.secondary.withOpacity(.4) : null,
+              color: active
+                  ? Theme.of(context).colorScheme.secondary.withOpacity(.4)
+                  : null,
               borderRadius: BorderRadius.circular(14.0),
             ),
             child: Stack(
@@ -45,7 +48,9 @@ class NavbarItem extends StatelessWidget {
                 ),
                 IconTheme(
                   data: IconThemeData(
-                    color: Theme.of(context).brightness == Brightness.light ? Colors.black.withOpacity(.5) : Colors.white.withOpacity(.3),
+                    color: Theme.of(context).brightness == Brightness.light
+                        ? Colors.black.withOpacity(.5)
+                        : Colors.white.withOpacity(.3),
                   ),
                   child: icon,
                 ),
diff --git a/filcnaplo_mobile_ui/lib/screens/settings/privacy_view.dart b/filcnaplo_mobile_ui/lib/screens/settings/privacy_view.dart
index 965df38..f6e34d8 100755
--- a/filcnaplo_mobile_ui/lib/screens/settings/privacy_view.dart
+++ b/filcnaplo_mobile_ui/lib/screens/settings/privacy_view.dart
@@ -6,7 +6,10 @@ import 'settings_screen.i18n.dart';
 class PrivacyView extends StatelessWidget {
   const PrivacyView({Key? key}) : super(key: key);
 
-  static void show(BuildContext context) => showDialog(context: context, builder: (context) => const PrivacyView(), barrierDismissible: true);
+  static void show(BuildContext context) => showDialog(
+      context: context,
+      builder: (context) => const PrivacyView(),
+      barrierDismissible: true);
 
   @override
   Widget build(BuildContext context) {
diff --git a/filcnaplo_mobile_ui/lib/screens/settings/settings_screen.dart b/filcnaplo_mobile_ui/lib/screens/settings/settings_screen.dart
index 640385a..fc5225f 100755
--- a/filcnaplo_mobile_ui/lib/screens/settings/settings_screen.dart
+++ b/filcnaplo_mobile_ui/lib/screens/settings/settings_screen.dart
@@ -54,6 +54,9 @@ class _SettingsScreenState extends State<SettingsScreen>
   int devmodeCountdown = 3;
   bool __ss = false; // secret settings
 
+  late Future<Map> futureRelease =
+      Provider.of<UpdateProvider>(context).installedVersion();
+
   late UserProvider user;
   late UpdateProvider updateProvider;
   late SettingsProvider settings;
@@ -150,6 +153,7 @@ class _SettingsScreenState extends State<SettingsScreen>
   @override
   void initState() {
     super.initState();
+    futureRelease = Provider.of<UpdateProvider>(context).installedVersion();
     _hideContainersController = AnimationController(
         vsync: this, duration: const Duration(milliseconds: 200));
   }
@@ -877,9 +881,36 @@ class _SettingsScreenState extends State<SettingsScreen>
               top: false,
               child: Center(
                 child: GestureDetector(
-                  child: const Panel(
-                      title: Text("v" +
-                          String.fromEnvironment("APPVER", defaultValue: "?"))),
+                  child: FutureBuilder<Map>(
+                    future: futureRelease,
+                    builder: (context, release) {
+                      if (release.hasData) {
+                        return DefaultTextStyle(
+                          style: Theme.of(context)
+                              .textTheme
+                              .titleMedium!
+                              .copyWith(
+                                  fontWeight: FontWeight.w600,
+                                  color: AppColors.of(context)
+                                      .text
+                                      .withOpacity(0.65)),
+                          child: Text("v${release.data!['version']}"),
+                        );
+                      } else {
+                        return DefaultTextStyle(
+                          style: Theme.of(context)
+                              .textTheme
+                              .titleMedium!
+                              .copyWith(
+                                  fontWeight: FontWeight.w600,
+                                  color: AppColors.of(context)
+                                      .text
+                                      .withOpacity(0.65)),
+                          child: const Text("v?"),
+                        );
+                      }
+                    },
+                  ),
                   onTap: () {
                     if (devmodeCountdown > 0) {
                       ScaffoldMessenger.of(context).showSnackBar(SnackBar(
diff --git a/filcnaplo_mobile_ui/lib/screens/settings/settings_screen.i18n.dart b/filcnaplo_mobile_ui/lib/screens/settings/settings_screen.i18n.dart
index cfe0e74..b2b9ff6 100755
--- a/filcnaplo_mobile_ui/lib/screens/settings/settings_screen.i18n.dart
+++ b/filcnaplo_mobile_ui/lib/screens/settings/settings_screen.i18n.dart
@@ -41,7 +41,8 @@ extension SettingsLocalization on String {
           "done": "Done",
           "reset": "Reset",
           "open": "Open",
-          "data_collected": "Data collected: Platform (eg. Android), App version (eg. 3.0.0), Unique Install Identifier",
+          "data_collected":
+              "Data collected: Platform (eg. Android), App version (eg. 3.0.0), Unique Install Identifier",
           "Analytics": "Analytics",
           "Anonymous Usage Analytics": "Anonymous Usage Analytics",
           "graph_class_avg": "Class average on graph",
@@ -92,7 +93,7 @@ extension SettingsLocalization on String {
           "about": "Névjegy",
           "supporters": "Támogatók",
           "privacy": "Adatvédelmi irányelvek",
-          "licenses": "Licenszek",
+          "licenses": "Licencek",
           "vibrate": "Rezgés",
           "voff": "Kikapcsolás",
           "vlight": "Alacsony",
@@ -102,7 +103,8 @@ extension SettingsLocalization on String {
           "done": "Kész",
           "reset": "Visszaállítás",
           "open": "Megnyitás",
-          "data_collected": "Gyűjtött adat: Platform (pl. Android), App verzió (pl. 3.0.0), Egyedi telepítési azonosító",
+          "data_collected":
+              "Gyűjtött adat: Platform (pl. Android), App verzió (pl. 3.0.0), Egyedi telepítési azonosító",
           "Analytics": "Analitika",
           "Anonymous Usage Analytics": "Névtelen használati analitika",
           "graph_class_avg": "Osztályátlag a grafikonon",
@@ -163,7 +165,8 @@ extension SettingsLocalization on String {
           "done": "Fertig",
           "reset": "Zurücksetzen",
           "open": "Öffnen",
-          "data_collected": "Erhobene Daten: Plattform (z.B. Android), App version (z.B. 3.0.0), Eindeutige Installationskennung",
+          "data_collected":
+              "Erhobene Daten: Plattform (z.B. Android), App version (z.B. 3.0.0), Eindeutige Installationskennung",
           "Analytics": "Analytik",
           "Anonymous Usage Analytics": "Anonyme Nutzungsanalyse",
           "graph_class_avg": "Klassendurchschnitt in der Grafik",
diff --git a/filcnaplo_mobile_ui/pubspec.yaml b/filcnaplo_mobile_ui/pubspec.yaml
index 0f76c28..f27fbd7 100755
--- a/filcnaplo_mobile_ui/pubspec.yaml
+++ b/filcnaplo_mobile_ui/pubspec.yaml
@@ -39,6 +39,7 @@ dependencies:
   flutter_svg: ^1.1.6
   background_fetch: ^1.1.5
   wtf_sliding_sheet: ^1.0.0
+  package_info_plus: ^3.1.2
   
 dev_dependencies:
   flutter_lints: ^1.0.0
diff --git a/filcnaplo_premium/lib/ui/mobile/flutter_colorpicker/colorpicker.dart b/filcnaplo_premium/lib/ui/mobile/flutter_colorpicker/colorpicker.dart
index efafd0f..ba3838e 100644
--- a/filcnaplo_premium/lib/ui/mobile/flutter_colorpicker/colorpicker.dart
+++ b/filcnaplo_premium/lib/ui/mobile/flutter_colorpicker/colorpicker.dart
@@ -13,10 +13,10 @@ import 'package:filcnaplo_premium/ui/mobile/flutter_colorpicker/block_picker.dar
 import 'package:filcnaplo_premium/ui/mobile/flutter_colorpicker/palette.dart';
 import 'package:filcnaplo_premium/ui/mobile/flutter_colorpicker/utils.dart';
 import 'package:filcnaplo_premium/ui/mobile/settings/theme.dart';
+import 'package:filcnaplo_premium/ui/mobile/settings/theme.i18n.dart';
 import 'package:flutter/cupertino.dart';
 import 'package:flutter/material.dart';
 import 'package:filcnaplo/theme/colors/colors.dart';
-import 'package:filcnaplo_mobile_ui/common/widgets/custom_switch.dart';
 
 class FilcColorPicker extends StatefulWidget {
   const FilcColorPicker({
@@ -29,9 +29,16 @@ class FilcColorPicker extends StatefulWidget {
     this.onHsvColorChanged,
     this.paletteType = PaletteType.hsvWithHue,
     this.enableAlpha = true,
-    @Deprecated('Use empty list in [labelTypes] to disable label.') this.showLabel = true,
-    this.labelTypes = const [ColorLabelType.rgb, ColorLabelType.hsv, ColorLabelType.hsl],
-    @Deprecated('Use Theme.of(context).textTheme.bodyText1 & 2 to alter text style.') this.labelTextStyle,
+    @Deprecated('Use empty list in [labelTypes] to disable label.')
+    this.showLabel = true,
+    this.labelTypes = const [
+      ColorLabelType.rgb,
+      ColorLabelType.hsv,
+      ColorLabelType.hsl
+    ],
+    @Deprecated(
+        'Use Theme.of(context).textTheme.bodyText1 & 2 to alter text style.')
+    this.labelTextStyle,
     this.displayThumbColor = false,
     this.portraitOnly = false,
     this.colorPickerWidth = 300.0,
@@ -75,7 +82,9 @@ class _FilcColorPickerState extends State<FilcColorPicker> {
 
   @override
   void initState() {
-    currentHsvColor = (widget.pickerHsvColor != null) ? widget.pickerHsvColor as HSVColor : HSVColor.fromColor(widget.pickerColor);
+    currentHsvColor = (widget.pickerHsvColor != null)
+        ? widget.pickerHsvColor as HSVColor
+        : HSVColor.fromColor(widget.pickerColor);
     // If there's no initial text in `hexInputController`,
     if (widget.hexInputController?.text.isEmpty == true) {
       // set it to the current's color HEX value.
@@ -95,7 +104,9 @@ class _FilcColorPickerState extends State<FilcColorPicker> {
   @override
   void didUpdateWidget(FilcColorPicker oldWidget) {
     super.didUpdateWidget(oldWidget);
-    currentHsvColor = (widget.pickerHsvColor != null) ? widget.pickerHsvColor as HSVColor : HSVColor.fromColor(widget.pickerColor);
+    currentHsvColor = (widget.pickerHsvColor != null)
+        ? widget.pickerHsvColor as HSVColor
+        : HSVColor.fromColor(widget.pickerColor);
   }
 
   void colorPickerTextInputListener() {
@@ -104,14 +115,17 @@ class _FilcColorPickerState extends State<FilcColorPicker> {
     if (widget.hexInputController == null) return;
     // If a user is inserting/typing any text — try to get the color value from it,
     // and interpret its transparency, dependent on the widget's settings.
-    final Color? color = colorFromHex(widget.hexInputController!.text, enableAlpha: widget.enableAlpha);
+    final Color? color = colorFromHex(widget.hexInputController!.text,
+        enableAlpha: widget.enableAlpha);
     // If it's the valid color:
     if (color != null) {
       // set it as the current color and
       setState(() => currentHsvColor = HSVColor.fromColor(color));
       // notify with a callback.
       widget.onColorChanged(color);
-      if (widget.onHsvColorChanged != null) widget.onHsvColorChanged!(currentHsvColor);
+      if (widget.onHsvColorChanged != null) {
+        widget.onHsvColorChanged!(currentHsvColor);
+      }
     }
   }
 
@@ -127,17 +141,24 @@ class _FilcColorPickerState extends State<FilcColorPicker> {
       currentHsvColor,
       (HSVColor color) {
         // Update text in `hexInputController` if provided.
-        widget.hexInputController?.text = colorToHex(color.toColor(), enableAlpha: widget.enableAlpha);
+        widget.hexInputController?.text =
+            colorToHex(color.toColor(), enableAlpha: widget.enableAlpha);
         setState(() => currentHsvColor = color);
         widget.onColorChanged(currentHsvColor.toColor());
-        if (widget.onHsvColorChanged != null) widget.onHsvColorChanged!(currentHsvColor);
+        if (widget.onHsvColorChanged != null) {
+          widget.onHsvColorChanged!(currentHsvColor);
+        }
       },
       () => widget.onColorChangeEnd(currentHsvColor.toColor()),
       (p) {
         ScaffoldMessenger.of(context).clearSnackBars();
         ScaffoldMessenger.of(context).showSnackBar(SnackBar(
-            content: Text("Move the ${p == 0 ? 'Saturation (second)' : 'Value (third)'} slider first.",
-                textAlign: TextAlign.center, style: TextStyle(color: AppColors.of(context).text, fontWeight: FontWeight.w600)),
+            content: Text(
+                "Move the ${p == 0 ? 'Saturation (second)' : 'Value (third)'} slider first.",
+                textAlign: TextAlign.center,
+                style: TextStyle(
+                    color: AppColors.of(context).text,
+                    fontWeight: FontWeight.w600)),
             backgroundColor: AppColors.of(context).background));
       },
       displayThumbColor: widget.displayThumbColor,
@@ -146,15 +167,19 @@ class _FilcColorPickerState extends State<FilcColorPicker> {
 
   void onColorChanging(HSVColor color) {
     // Update text in `hexInputController` if provided.
-    widget.hexInputController?.text = colorToHex(color.toColor(), enableAlpha: widget.enableAlpha);
+    widget.hexInputController?.text =
+        colorToHex(color.toColor(), enableAlpha: widget.enableAlpha);
     setState(() => currentHsvColor = color);
     widget.onColorChanged(currentHsvColor.toColor());
-    if (widget.onHsvColorChanged != null) widget.onHsvColorChanged!(currentHsvColor);
+    if (widget.onHsvColorChanged != null) {
+      widget.onHsvColorChanged!(currentHsvColor);
+    }
   }
 
   @override
   Widget build(BuildContext context) {
-    if (MediaQuery.of(context).orientation == Orientation.portrait || widget.portraitOnly) {
+    if (MediaQuery.of(context).orientation == Orientation.portrait ||
+        widget.portraitOnly) {
       return Column(
         children: [
           if (widget.colorMode != CustomColorMode.theme)
@@ -198,7 +223,9 @@ class _FilcColorPickerState extends State<FilcColorPicker> {
                 (Color color) {
                   setState(() => currentHsvColor = HSVColor.fromColor(color));
                   widget.onColorChanged(currentHsvColor.toColor());
-                  if (widget.onHsvColorChanged != null) widget.onHsvColorChanged!(currentHsvColor);
+                  if (widget.onHsvColorChanged != null) {
+                    widget.onHsvColorChanged!(currentHsvColor);
+                  }
                 },
                 enableAlpha: false,
                 embeddedText: false,
@@ -211,26 +238,42 @@ class _FilcColorPickerState extends State<FilcColorPicker> {
               layoutBuilder: (context, colors, child) {
                 return GridView.count(
                   shrinkWrap: true,
-                  crossAxisCount: widget.colorMode == CustomColorMode.theme ? 2 : 1,
+                  crossAxisCount:
+                      widget.colorMode == CustomColorMode.theme ? 2 : 1,
                   scrollDirection: Axis.horizontal,
                   crossAxisSpacing: 15,
                   physics: const BouncingScrollPhysics(),
                   mainAxisSpacing: 15,
-                  padding: const EdgeInsets.symmetric(horizontal: 12.0, vertical: 8.0),
-                  children: List.generate(colors.toSet().length + (widget.colorMode == CustomColorMode.theme ? 1 : 0), (index) {
+                  padding: const EdgeInsets.symmetric(
+                      horizontal: 12.0, vertical: 8.0),
+                  children: List.generate(
+                      colors.toSet().length +
+                          (widget.colorMode == CustomColorMode.theme ? 1 : 0),
+                      (index) {
                     if (widget.colorMode == CustomColorMode.theme) {
                       if (index == 0) {
                         return GestureDetector(
-                          onTap: () => widget.onColorChangeEnd(Colors.transparent, adaptive: true),
-                          child: ColorIndicator(HSVColor.fromColor(const Color.fromARGB(255, 255, 238, 177)),
-                              icon: CupertinoIcons.wand_stars, currentHsvColor: currentHsvColor, width: 30, height: 30, adaptive: true),
+                          onTap: () => widget.onColorChangeEnd(
+                              Colors.transparent,
+                              adaptive: true),
+                          child: ColorIndicator(
+                              HSVColor.fromColor(
+                                  const Color.fromARGB(255, 255, 238, 177)),
+                              icon: CupertinoIcons.wand_stars,
+                              currentHsvColor: currentHsvColor,
+                              width: 30,
+                              height: 30,
+                              adaptive: true),
                         );
                       }
                       index--;
                     }
                     return GestureDetector(
                       onTap: () => widget.onColorChangeEnd(colors[index]),
-                      child: ColorIndicator(HSVColor.fromColor(colors[index]), currentHsvColor: currentHsvColor, width: 30, height: 30),
+                      child: ColorIndicator(HSVColor.fromColor(colors[index]),
+                          currentHsvColor: currentHsvColor,
+                          width: 30,
+                          height: 30),
                     );
                   }),
                 );
@@ -249,22 +292,25 @@ class _FilcColorPickerState extends State<FilcColorPicker> {
                   isAdvancedView = !isAdvancedView;
                 }),
                 child: Padding(
-                  padding: const EdgeInsets.only(left: 8.0, right: 8.0, top: 8.0),
+                  padding:
+                      const EdgeInsets.only(left: 8.0, right: 8.0, top: 8.0),
                   child: Row(
                     mainAxisAlignment: MainAxisAlignment.center,
                     mainAxisSize: MainAxisSize.min,
                     children: [
-                      CustomSwitch(
+                      Switch(
                         onChanged: (v) => setState(() => isAdvancedView = v),
                         value: isAdvancedView,
                       ),
                       const SizedBox(width: 12.0),
                       Text(
-                        "Advanced",
+                        "advanced".i18n,
                         style: TextStyle(
                           fontWeight: FontWeight.w600,
                           fontSize: 16.0,
-                          color: AppColors.of(context).text.withOpacity(isAdvancedView ? 1.0 : .5),
+                          color: AppColors.of(context)
+                              .text
+                              .withOpacity(isAdvancedView ? 1.0 : .5),
                         ),
                       ),
                     ],
@@ -285,7 +331,8 @@ class _FilcColorPickerState extends State<FilcColorPicker> {
                   const SizedBox(width: 20.0),
                   GestureDetector(
                     onTap: () => setState(() {
-                      if (widget.onHistoryChanged != null && !colorHistory.contains(currentHsvColor.toColor())) {
+                      if (widget.onHistoryChanged != null &&
+                          !colorHistory.contains(currentHsvColor.toColor())) {
                         colorHistory.add(currentHsvColor.toColor());
                         widget.onHistoryChanged!(colorHistory);
                       }
@@ -295,7 +342,11 @@ class _FilcColorPickerState extends State<FilcColorPicker> {
                   Column(
                     children: <Widget>[
                       //SizedBox(height: 40.0, width: 260.0, child: sliderByPaletteType()),
-                      if (widget.enableAlpha) SizedBox(height: 40.0, width: 260.0, child: colorPickerSlider(TrackType.alpha)),
+                      if (widget.enableAlpha)
+                        SizedBox(
+                            height: 40.0,
+                            width: 260.0,
+                            child: colorPickerSlider(TrackType.alpha)),
                     ],
                   ),
                   const SizedBox(width: 10.0),
@@ -305,26 +356,30 @@ class _FilcColorPickerState extends State<FilcColorPicker> {
                 SizedBox(
                   width: widget.colorPickerWidth,
                   height: 50,
-                  child: ListView(scrollDirection: Axis.horizontal, children: <Widget>[
-                    for (Color color in colorHistory)
-                      Padding(
-                        key: Key(color.hashCode.toString()),
-                        padding: const EdgeInsets.fromLTRB(15, 18, 0, 0),
-                        child: Center(
-                          child: GestureDetector(
-                            onTap: () => onColorChanging(HSVColor.fromColor(color)),
-                            onLongPress: () {
-                              if (colorHistory.remove(color)) {
-                                widget.onHistoryChanged!(colorHistory);
-                                setState(() {});
-                              }
-                            },
-                            child: ColorIndicator(HSVColor.fromColor(color), width: 30, height: 30),
+                  child: ListView(
+                      scrollDirection: Axis.horizontal,
+                      children: <Widget>[
+                        for (Color color in colorHistory)
+                          Padding(
+                            key: Key(color.hashCode.toString()),
+                            padding: const EdgeInsets.fromLTRB(15, 18, 0, 0),
+                            child: Center(
+                              child: GestureDetector(
+                                onTap: () =>
+                                    onColorChanging(HSVColor.fromColor(color)),
+                                onLongPress: () {
+                                  if (colorHistory.remove(color)) {
+                                    widget.onHistoryChanged!(colorHistory);
+                                    setState(() {});
+                                  }
+                                },
+                                child: ColorIndicator(HSVColor.fromColor(color),
+                                    width: 30, height: 30),
+                              ),
+                            ),
                           ),
-                        ),
-                      ),
-                    const SizedBox(width: 15),
-                  ]),
+                        const SizedBox(width: 15),
+                      ]),
                 ),
               const SizedBox(height: 20.0),
               if (widget.hexInputBar)
@@ -333,7 +388,9 @@ class _FilcColorPickerState extends State<FilcColorPicker> {
                   (Color color) {
                     setState(() => currentHsvColor = HSVColor.fromColor(color));
                     widget.onColorChanged(currentHsvColor.toColor());
-                    if (widget.onHsvColorChanged != null) widget.onHsvColorChanged!(currentHsvColor);
+                    if (widget.onHsvColorChanged != null) {
+                      widget.onHsvColorChanged!(currentHsvColor);
+                    }
                   },
                   enableAlpha: widget.enableAlpha,
                   embeddedText: false,
diff --git a/filcnaplo_premium/lib/ui/mobile/settings/theme.dart b/filcnaplo_premium/lib/ui/mobile/settings/theme.dart
index c0658f4..d64efe0 100644
--- a/filcnaplo_premium/lib/ui/mobile/settings/theme.dart
+++ b/filcnaplo_premium/lib/ui/mobile/settings/theme.dart
@@ -24,12 +24,15 @@ class PremiumCustomAccentColorSetting extends StatefulWidget {
   const PremiumCustomAccentColorSetting({Key? key}) : super(key: key);
 
   @override
-  State<PremiumCustomAccentColorSetting> createState() => _PremiumCustomAccentColorSettingState();
+  State<PremiumCustomAccentColorSetting> createState() =>
+      _PremiumCustomAccentColorSettingState();
 }
 
-enum CustomColorMode { theme, accent, background, highlight }
+enum CustomColorMode { theme, saved, accent, background, highlight }
 
-class _PremiumCustomAccentColorSettingState extends State<PremiumCustomAccentColorSetting> with TickerProviderStateMixin {
+class _PremiumCustomAccentColorSettingState
+    extends State<PremiumCustomAccentColorSetting>
+    with TickerProviderStateMixin {
   late final SettingsProvider settings;
   bool colorSelection = false;
   bool customColorMenu = false;
@@ -41,42 +44,48 @@ class _PremiumCustomAccentColorSettingState extends State<PremiumCustomAccentCol
   late TabController _colorsTabController;
   late AnimationController _openAnimController;
 
-  late final Animation<double> backgroundAnimation = Tween<double>(begin: 0, end: 1).animate(
+  late final Animation<double> backgroundAnimation =
+      Tween<double>(begin: 0, end: 1).animate(
     CurvedAnimation(
       parent: _openAnimController,
       curve: const Interval(0.2, 1.0, curve: Curves.easeInOut),
     ),
   );
 
-  late final Animation<double> fullPageAnimation = Tween<double>(begin: 0, end: 1).animate(
+  late final Animation<double> fullPageAnimation =
+      Tween<double>(begin: 0, end: 1).animate(
     CurvedAnimation(
       parent: _openAnimController,
       curve: const Interval(0.0, 0.6, curve: Curves.easeInOut),
     ),
   );
 
-  late final Animation<double> backContainerAnimation = Tween<double>(begin: 100, end: 0).animate(
+  late final Animation<double> backContainerAnimation =
+      Tween<double>(begin: 100, end: 0).animate(
     CurvedAnimation(
       parent: _openAnimController,
       curve: const Interval(0.0, 0.9, curve: Curves.easeInOut),
     ),
   );
 
-  late final Animation<double> backContentAnimation = Tween<double>(begin: 100, end: 0).animate(
+  late final Animation<double> backContentAnimation =
+      Tween<double>(begin: 100, end: 0).animate(
     CurvedAnimation(
       parent: _openAnimController,
       curve: const Interval(0.2, 1.0, curve: Curves.easeInOut),
     ),
   );
 
-  late final Animation<double> backContentScaleAnimation = Tween<double>(begin: 0.8, end: 0.9).animate(
+  late final Animation<double> backContentScaleAnimation =
+      Tween<double>(begin: 0.8, end: 0.9).animate(
     CurvedAnimation(
       parent: _openAnimController,
       curve: const Interval(0.45, 1.0, curve: Curves.easeInOut),
     ),
   );
 
-  late final Animation<double> pickerContainerAnimation = Tween<double>(begin: 0, end: 1).animate(
+  late final Animation<double> pickerContainerAnimation =
+      Tween<double>(begin: 0, end: 1).animate(
     CurvedAnimation(
       parent: _openAnimController,
       curve: const Interval(0.25, 0.8, curve: Curves.easeInOut),
@@ -90,7 +99,8 @@ class _PremiumCustomAccentColorSettingState extends State<PremiumCustomAccentCol
     _testTabController = TabController(length: 4, vsync: this);
     settings = Provider.of<SettingsProvider>(context, listen: false);
 
-    _openAnimController = AnimationController(vsync: this, duration: const Duration(milliseconds: 750));
+    _openAnimController = AnimationController(
+        vsync: this, duration: const Duration(milliseconds: 750));
     _openAnimController.forward();
   }
 
@@ -102,13 +112,20 @@ class _PremiumCustomAccentColorSettingState extends State<PremiumCustomAccentCol
 
   void setTheme(ThemeMode mode, bool store) async {
     await settings.update(theme: mode, store: store);
-    Provider.of<ThemeModeObserver>(context, listen: false).changeTheme(mode, updateNavbarColor: false);
+    Provider.of<ThemeModeObserver>(context, listen: false)
+        .changeTheme(mode, updateNavbarColor: false);
   }
 
-  Color? getCustomColor() {
+  dynamic getCustomColor() {
     switch (colorMode) {
       case CustomColorMode.theme:
         return accentColorMap[settings.accentColor];
+      case CustomColorMode.saved:
+        return [
+          settings.customBackgroundColor,
+          settings.customHighlightColor,
+          settings.customAccentColor
+        ];
       case CustomColorMode.background:
         return settings.customBackgroundColor;
       case CustomColorMode.highlight:
@@ -118,16 +135,30 @@ class _PremiumCustomAccentColorSettingState extends State<PremiumCustomAccentCol
     }
   }
 
-  void updateCustomColor(Color v, bool store) {
-    if (colorMode != CustomColorMode.theme) settings.update(accentColor: AccentColor.custom, store: store);
+  void updateCustomColor(dynamic v, bool store) {
+    if (colorMode != CustomColorMode.theme) {
+      settings.update(accentColor: AccentColor.custom, store: store);
+    }
     switch (colorMode) {
       case CustomColorMode.theme:
         settings.update(
-            accentColor: accentColorMap.keys.firstWhere((element) => accentColorMap[element] == v, orElse: () => AccentColor.filc), store: store);
-        settings.update(customBackgroundColor: AppColors.of(context).background, store: store);
-        settings.update(customHighlightColor: AppColors.of(context).highlight, store: store);
+            accentColor: accentColorMap.keys.firstWhere(
+                (element) => accentColorMap[element] == v,
+                orElse: () => AccentColor.filc),
+            store: store);
+        settings.update(
+            customBackgroundColor: AppColors.of(context).background,
+            store: store);
+        settings.update(
+            customHighlightColor: AppColors.of(context).highlight,
+            store: store);
         settings.update(customAccentColor: v, store: store);
         break;
+      case CustomColorMode.saved:
+        settings.update(customBackgroundColor: v[0], store: store);
+        settings.update(customHighlightColor: v[1], store: store);
+        settings.update(customAccentColor: v[3], store: store);
+        break;
       case CustomColorMode.background:
         settings.update(customBackgroundColor: v, store: store);
         break;
@@ -142,14 +173,19 @@ class _PremiumCustomAccentColorSettingState extends State<PremiumCustomAccentCol
 
   @override
   Widget build(BuildContext context) {
-    bool hasAccess = Provider.of<PremiumProvider>(context).hasScope(PremiumScopes.customColors);
-    bool isBackgroundDifferent = Theme.of(context).colorScheme.background != AppColors.of(context).background;
+    bool hasAccess = Provider.of<PremiumProvider>(context)
+        .hasScope(PremiumScopes.customColors);
+    bool isBackgroundDifferent = Theme.of(context).colorScheme.background !=
+        AppColors.of(context).background;
 
-    ThemeMode currentTheme = Theme.of(context).brightness == Brightness.light ? ThemeMode.light : ThemeMode.dark;
+    ThemeMode currentTheme = Theme.of(context).brightness == Brightness.light
+        ? ThemeMode.light
+        : ThemeMode.dark;
 
     return WillPopScope(
       onWillPop: () async {
-        Provider.of<ThemeModeObserver>(context, listen: false).changeTheme(settings.theme, updateNavbarColor: true);
+        Provider.of<ThemeModeObserver>(context, listen: false)
+            .changeTheme(settings.theme, updateNavbarColor: true);
         return true;
       },
       child: AnimatedBuilder(
@@ -158,7 +194,9 @@ class _PremiumCustomAccentColorSettingState extends State<PremiumCustomAccentCol
           final backgroundGradientBottomColor = isBackgroundDifferent
               ? Theme.of(context).colorScheme.background
               : HSVColor.fromColor(Theme.of(context).colorScheme.background)
-                  .withValue(currentTheme == ThemeMode.dark ? 0.1 * _openAnimController.value : 1.0 - (0.1 * _openAnimController.value))
+                  .withValue(currentTheme == ThemeMode.dark
+                      ? 0.1 * _openAnimController.value
+                      : 1.0 - (0.1 * _openAnimController.value))
                   .withAlpha(1.0)
                   .toColor();
 
@@ -174,13 +212,15 @@ class _PremiumCustomAccentColorSettingState extends State<PremiumCustomAccentCol
                 stops: const [0.0, 0.75],
                 colors: isBackgroundDifferent
                     ? [
-                        Theme.of(context)
-                            .colorScheme
-                            .background
-                            .withOpacity(1 - ((currentTheme == ThemeMode.dark ? 0.65 : 0.45) * backgroundAnimation.value)),
+                        Theme.of(context).colorScheme.background.withOpacity(1 -
+                            ((currentTheme == ThemeMode.dark ? 0.65 : 0.45) *
+                                backgroundAnimation.value)),
                         backgroundGradientBottomColor,
                       ]
-                    : [backgroundGradientBottomColor, backgroundGradientBottomColor],
+                    : [
+                        backgroundGradientBottomColor,
+                        backgroundGradientBottomColor
+                      ],
               ),
             ),
             child: Opacity(
@@ -191,7 +231,7 @@ class _PremiumCustomAccentColorSettingState extends State<PremiumCustomAccentCol
                   surfaceTintColor: Theme.of(context).scaffoldBackgroundColor,
                   leading: BackButton(color: AppColors.of(context).text),
                   title: Text(
-                    "Preview",
+                    "theme_prev".i18n,
                     style: TextStyle(color: AppColors.of(context).text),
                   ),
                   backgroundColor: Colors.transparent,
@@ -208,20 +248,32 @@ class _PremiumCustomAccentColorSettingState extends State<PremiumCustomAccentCol
                           width: double.infinity,
                           decoration: BoxDecoration(
                             borderRadius: BorderRadius.circular(24),
-                            gradient: LinearGradient(begin: Alignment.topCenter, end: Alignment.bottomCenter, stops: const [
-                              0.35,
-                              0.75
-                            ], colors: [
-                              Theme.of(context).colorScheme.background,
-                              isBackgroundDifferent
-                                  ? HSVColor.fromColor(Theme.of(context).colorScheme.background)
-                                      .withSaturation(
-                                          (HSVColor.fromColor(Theme.of(context).colorScheme.background).saturation - 0.15).clamp(0.0, 1.0))
-                                      .toColor()
-                                  : backgroundGradientBottomColor,
-                            ]),
+                            gradient: LinearGradient(
+                                begin: Alignment.topCenter,
+                                end: Alignment.bottomCenter,
+                                stops: const [
+                                  0.35,
+                                  0.75
+                                ],
+                                colors: [
+                                  Theme.of(context).colorScheme.background,
+                                  isBackgroundDifferent
+                                      ? HSVColor.fromColor(Theme.of(context)
+                                              .colorScheme
+                                              .background)
+                                          .withSaturation((HSVColor.fromColor(
+                                                          Theme.of(context)
+                                                              .colorScheme
+                                                              .background)
+                                                      .saturation -
+                                                  0.15)
+                                              .clamp(0.0, 1.0))
+                                          .toColor()
+                                      : backgroundGradientBottomColor,
+                                ]),
                           ),
-                          margin: const EdgeInsets.symmetric(vertical: 30, horizontal: 20),
+                          margin: const EdgeInsets.symmetric(
+                              vertical: 30, horizontal: 20),
                         ),
                       ),
                     ),
@@ -236,13 +288,15 @@ class _PremiumCustomAccentColorSettingState extends State<PremiumCustomAccentCol
                             child: SingleChildScrollView(
                               physics: const BouncingScrollPhysics(),
                               child: Transform.translate(
-                                offset: Offset(0, -24 + backContentAnimation.value),
+                                offset:
+                                    Offset(0, -24 + backContentAnimation.value),
                                 child: Transform.scale(
                                   scale: backContentScaleAnimation.value,
                                   child: Column(
                                     children: [
                                       Padding(
-                                        padding: const EdgeInsets.symmetric(horizontal: 32.0, vertical: 6.0),
+                                        padding: const EdgeInsets.symmetric(
+                                            horizontal: 32.0, vertical: 6.0),
                                         child: FilterBar(
                                           items: const [
                                             Tab(text: "All"),
@@ -256,26 +310,35 @@ class _PremiumCustomAccentColorSettingState extends State<PremiumCustomAccentCol
                                         ),
                                       ),
                                       Padding(
-                                        padding: const EdgeInsets.symmetric(horizontal: 18.0, vertical: 8.0),
+                                        padding: const EdgeInsets.symmetric(
+                                            horizontal: 18.0, vertical: 8.0),
                                         child: NewGradesSurprise(
                                           [
                                             Grade.fromJson(
                                               {
                                                 "Uid": "0,Ertekeles",
-                                                "RogzitesDatuma": "2022-01-01T23:00:00Z",
-                                                "KeszitesDatuma": "2022-01-01T23:00:00Z",
+                                                "RogzitesDatuma":
+                                                    "2022-01-01T23:00:00Z",
+                                                "KeszitesDatuma":
+                                                    "2022-01-01T23:00:00Z",
                                                 "LattamozasDatuma": null,
                                                 "Tantargy": {
                                                   "Uid": "0",
                                                   "Nev": "reFilc szakirodalom",
-                                                  "Kategoria": {"Uid": "0,_", "Nev": "_", "Leiras": "Nem mondom meg"},
+                                                  "Kategoria": {
+                                                    "Uid": "0,_",
+                                                    "Nev": "_",
+                                                    "Leiras": "Nem mondom meg"
+                                                  },
                                                   "SortIndex": 2
                                                 },
-                                                "Tema": "Kupak csomag vásárlás vizsga",
+                                                "Tema":
+                                                    "Kupak csomag vásárlás vizsga",
                                                 "Tipus": {
                                                   "Uid": "0,_",
                                                   "Nev": "_",
-                                                  "Leiras": "Évközi jegy/értékelés",
+                                                  "Leiras":
+                                                      "Évközi jegy/értékelés",
                                                 },
                                                 "Mod": {
                                                   "Uid": "0,_",
@@ -285,14 +348,16 @@ class _PremiumCustomAccentColorSettingState extends State<PremiumCustomAccentCol
                                                 "ErtekFajta": {
                                                   "Uid": "1,Osztalyzat",
                                                   "Nev": "Osztalyzat",
-                                                  "Leiras": "Elégtelen (1) és Jeles (5) között az öt alapértelmezett érték"
+                                                  "Leiras":
+                                                      "Elégtelen (1) és Jeles (5) között az öt alapértelmezett érték"
                                                 },
                                                 "ErtekeloTanarNeve": "Premium",
                                                 "Jelleg": "Ertekeles",
                                                 "SzamErtek": 5,
                                                 "SzovegesErtek": "Jeles(5)",
                                                 "SulySzazalekErteke": 100,
-                                                "SzovegesErtekelesRovidNev": null,
+                                                "SzovegesErtekelesRovidNev":
+                                                    null,
                                                 "OsztalyCsoport": {"Uid": "0"},
                                                 "SortIndex": 2
                                               },
@@ -302,26 +367,35 @@ class _PremiumCustomAccentColorSettingState extends State<PremiumCustomAccentCol
                                         ),
                                       ),
                                       Padding(
-                                        padding: const EdgeInsets.symmetric(horizontal: 24.0, vertical: 6.0),
+                                        padding: const EdgeInsets.symmetric(
+                                            horizontal: 24.0, vertical: 6.0),
                                         child: Panel(
                                           child: GradeTile(
                                             Grade.fromJson(
                                               {
                                                 "Uid": "0,Ertekeles",
-                                                "RogzitesDatuma": "2022-01-01T23:00:00Z",
-                                                "KeszitesDatuma": "2022-01-01T23:00:00Z",
+                                                "RogzitesDatuma":
+                                                    "2022-01-01T23:00:00Z",
+                                                "KeszitesDatuma":
+                                                    "2022-01-01T23:00:00Z",
                                                 "LattamozasDatuma": null,
                                                 "Tantargy": {
                                                   "Uid": "0",
                                                   "Nev": "reFilc szakosztály",
-                                                  "Kategoria": {"Uid": "0,_", "Nev": "_", "Leiras": "Nem mondom meg"},
+                                                  "Kategoria": {
+                                                    "Uid": "0,_",
+                                                    "Nev": "_",
+                                                    "Leiras": "Nem mondom meg"
+                                                  },
                                                   "SortIndex": 2
                                                 },
-                                                "Tema": "Kupak csomag vásárlás vizsga",
+                                                "Tema":
+                                                    "Kupak csomag vásárlás vizsga",
                                                 "Tipus": {
                                                   "Uid": "0,_",
                                                   "Nev": "_",
-                                                  "Leiras": "Évközi jegy/értékelés",
+                                                  "Leiras":
+                                                      "Évközi jegy/értékelés",
                                                 },
                                                 "Mod": {
                                                   "Uid": "0,_",
@@ -331,14 +405,16 @@ class _PremiumCustomAccentColorSettingState extends State<PremiumCustomAccentCol
                                                 "ErtekFajta": {
                                                   "Uid": "1,Osztalyzat",
                                                   "Nev": "Osztalyzat",
-                                                  "Leiras": "Elégtelen (1) és Jeles (5) között az öt alapértelmezett érték"
+                                                  "Leiras":
+                                                      "Elégtelen (1) és Jeles (5) között az öt alapértelmezett érték"
                                                 },
                                                 "ErtekeloTanarNeve": "Premium",
                                                 "Jelleg": "Ertekeles",
                                                 "SzamErtek": 5,
                                                 "SzovegesErtek": "Jeles(5)",
                                                 "SulySzazalekErteke": 100,
-                                                "SzovegesErtekelesRovidNev": null,
+                                                "SzovegesErtekelesRovidNev":
+                                                    null,
                                                 "OsztalyCsoport": {"Uid": "0"},
                                                 "SortIndex": 2
                                               },
@@ -349,7 +425,8 @@ class _PremiumCustomAccentColorSettingState extends State<PremiumCustomAccentCol
                                         ),
                                       ),
                                       Padding(
-                                        padding: const EdgeInsets.symmetric(horizontal: 24.0, vertical: 6.0),
+                                        padding: const EdgeInsets.symmetric(
+                                            horizontal: 24.0, vertical: 6.0),
                                         child: Panel(
                                           child: HomeworkTile(
                                             Homework.fromJson(
@@ -357,22 +434,31 @@ class _PremiumCustomAccentColorSettingState extends State<PremiumCustomAccentCol
                                                 "Uid": "0",
                                                 "Tantargy": {
                                                   "Uid": "0",
-                                                  "Nev": "reFilc premium előnyei",
+                                                  "Nev":
+                                                      "reFilc premium előnyei",
                                                   "Kategoria": {
                                                     "Uid": "0,_",
                                                     "Nev": "_",
-                                                    "Leiras": "reFilc premium előnyei",
+                                                    "Leiras":
+                                                        "reFilc premium előnyei",
                                                   },
                                                   "SortIndex": 0
                                                 },
-                                                "TantargyNeve": "reFilc premium előnyei",
-                                                "RogzitoTanarNeve": "Kupak János",
-                                                "Szoveg": "45 perc filctollal való rajzolás",
-                                                "FeladasDatuma": "2022-01-01T23:00:00Z",
-                                                "HataridoDatuma": "2022-01-01T23:00:00Z",
-                                                "RogzitesIdopontja": "2022-01-01T23:00:00Z",
+                                                "TantargyNeve":
+                                                    "reFilc premium előnyei",
+                                                "RogzitoTanarNeve":
+                                                    "Kupak János",
+                                                "Szoveg":
+                                                    "45 perc filctollal való rajzolás",
+                                                "FeladasDatuma":
+                                                    "2022-01-01T23:00:00Z",
+                                                "HataridoDatuma":
+                                                    "2022-01-01T23:00:00Z",
+                                                "RogzitesIdopontja":
+                                                    "2022-01-01T23:00:00Z",
                                                 "IsTanarRogzitette": true,
-                                                "IsTanuloHaziFeladatEnabled": false,
+                                                "IsTanuloHaziFeladatEnabled":
+                                                    false,
                                                 "IsMegoldva": false,
                                                 "IsBeadhato": false,
                                                 "OsztalyCsoport": {"Uid": "0"},
@@ -385,7 +471,8 @@ class _PremiumCustomAccentColorSettingState extends State<PremiumCustomAccentCol
                                         ),
                                       ),
                                       Padding(
-                                        padding: const EdgeInsets.symmetric(horizontal: 24.0, vertical: 6.0),
+                                        padding: const EdgeInsets.symmetric(
+                                            horizontal: 24.0, vertical: 6.0),
                                         child: Panel(
                                           child: MessageTile(
                                             Message.fromJson(
@@ -396,18 +483,22 @@ class _PremiumCustomAccentColorSettingState extends State<PremiumCustomAccentCol
                                                 "tipus": {
                                                   "azonosito": 1,
                                                   "kod": "BEERKEZETT",
-                                                  "rovidNev": "Beérkezett üzenet",
+                                                  "rovidNev":
+                                                      "Beérkezett üzenet",
                                                   "nev": "Beérkezett üzenet",
                                                   "leiras": "Beérkezett üzenet"
                                                 },
                                                 "uzenet": {
                                                   "azonosito": 0,
-                                                  "kuldesDatum": "2022-01-01T23:00:00",
+                                                  "kuldesDatum":
+                                                      "2022-01-01T23:00:00",
                                                   "feladoNev": "reFilc",
-                                                  "feladoTitulus": "Nagyon magas szintű személy",
+                                                  "feladoTitulus":
+                                                      "Nagyon magas szintű személy",
                                                   "szoveg":
                                                       "<p>Kedves Felhasználó!</p><p><br></p><p>A prémium vásárlásakor kapott filctollal 90%-al több esély van jó jegyek szerzésére.</p>",
-                                                  "targy": "Filctoll használati útmutató",
+                                                  "targy":
+                                                      "Filctoll használati útmutató",
                                                   "statusz": {
                                                     "azonosito": 2,
                                                     "kod": "KIKULDVE",
@@ -430,7 +521,10 @@ class _PremiumCustomAccentColorSettingState extends State<PremiumCustomAccentCol
                                                     },
                                                   ],
                                                   "csatolmanyok": [
-                                                    {"azonosito": 0, "fajlNev": "Filctoll.doc"}
+                                                    {
+                                                      "azonosito": 0,
+                                                      "fajlNev": "Filctoll.doc"
+                                                    }
                                                   ]
                                                 }
                                               },
@@ -462,68 +556,110 @@ class _PremiumCustomAccentColorSettingState extends State<PremiumCustomAccentCol
                                   boxShadow: [
                                     BoxShadow(
                                       color: backgroundGradientBottomColor,
-                                      offset: const Offset(0, -4),
+                                      offset: const Offset(0, -8),
                                       blurRadius: 16,
-                                      spreadRadius: 12,
+                                      spreadRadius: 18,
                                     ),
                                   ],
-                                  gradient: LinearGradient(begin: Alignment.topCenter, end: Alignment.bottomCenter, stops: const [
-                                    0.0,
-                                    0.175
-                                  ], colors: [
-                                    backgroundGradientBottomColor,
-                                    backgroundGradientBottomColor,
-                                  ]),
+                                  gradient: LinearGradient(
+                                      begin: Alignment.topCenter,
+                                      end: Alignment.bottomCenter,
+                                      stops: const [
+                                        0.0,
+                                        0.175
+                                      ],
+                                      colors: [
+                                        backgroundGradientBottomColor,
+                                        backgroundGradientBottomColor,
+                                      ]),
                                 ),
                                 child: Column(
                                   children: [
                                     Padding(
-                                      padding: const EdgeInsets.symmetric(horizontal: 8.0),
+                                      padding: const EdgeInsets.symmetric(
+                                          horizontal: 8.0),
                                       child: FilterBar(
                                         items: [
                                           ColorTab(
-                                              color: accentColorMap[settings.accentColor] ?? unknownColor,
-                                              tab: Tab(text: "colorpicker_presets".i18n)),
+                                              color: accentColorMap[
+                                                      settings.accentColor] ??
+                                                  unknownColor,
+                                              tab: Tab(
+                                                  text: "colorpicker_presets"
+                                                      .i18n)),
+                                          /*ColorTab(
+                                              color:
+                                                  settings.customAccentColor ??
+                                                      unknownColor,
+                                              tab: Tab(
+                                                  text: "colorpicker_saved"
+                                                      .i18n)),*/
                                           ColorTab(
                                               unlocked: hasAccess,
-                                              color: settings.customBackgroundColor ?? unknownColor,
-                                              tab: Tab(text: "colorpicker_background".i18n)),
+                                              color: settings
+                                                      .customBackgroundColor ??
+                                                  unknownColor,
+                                              tab: Tab(
+                                                  text: "colorpicker_background"
+                                                      .i18n)),
                                           ColorTab(
                                               unlocked: hasAccess,
-                                              color: settings.customHighlightColor ?? unknownColor,
-                                              tab: Tab(text: "colorpicker_panels".i18n)),
+                                              color: settings
+                                                      .customHighlightColor ??
+                                                  unknownColor,
+                                              tab: Tab(
+                                                  text: "colorpicker_panels"
+                                                      .i18n)),
                                           ColorTab(
                                               unlocked: hasAccess,
-                                              color: settings.customAccentColor ?? unknownColor,
-                                              tab: Tab(text: "colorpicker_accent".i18n)),
+                                              color:
+                                                  settings.customAccentColor ??
+                                                      unknownColor,
+                                              tab: Tab(
+                                                  text: "colorpicker_accent"
+                                                      .i18n)),
                                         ],
                                         onTap: (index) {
                                           if (!hasAccess) {
                                             index = 0;
-                                            _colorsTabController.animateTo(0, duration: Duration.zero);
+                                            _colorsTabController.animateTo(0,
+                                                duration: Duration.zero);
 
-                                            PremiumLockedFeatureUpsell.show(context: context, feature: PremiumFeature.customcolors);
+                                            PremiumLockedFeatureUpsell.show(
+                                                context: context,
+                                                feature: PremiumFeature
+                                                    .customcolors);
                                           }
 
                                           switch (index) {
                                             case 0:
                                               setState(() {
-                                                colorMode = CustomColorMode.theme;
+                                                colorMode =
+                                                    CustomColorMode.theme;
                                               });
                                               break;
+                                            /*case 1:
+                                              setState(() {
+                                                colorMode =
+                                                    CustomColorMode.saved;
+                                              });
+                                              break;*/
                                             case 1:
                                               setState(() {
-                                                colorMode = CustomColorMode.background;
+                                                colorMode =
+                                                    CustomColorMode.background;
                                               });
                                               break;
                                             case 2:
                                               setState(() {
-                                                colorMode = CustomColorMode.highlight;
+                                                colorMode =
+                                                    CustomColorMode.highlight;
                                               });
                                               break;
                                             case 3:
                                               setState(() {
-                                                colorMode = CustomColorMode.accent;
+                                                colorMode =
+                                                    CustomColorMode.accent;
                                               });
                                               break;
                                           }
@@ -533,17 +669,29 @@ class _PremiumCustomAccentColorSettingState extends State<PremiumCustomAccentCol
                                       ),
                                     ),
                                     Padding(
-                                      padding: const EdgeInsets.symmetric(horizontal: 12.0),
+                                      padding: const EdgeInsets.symmetric(
+                                          horizontal: 12.0),
                                       child: SafeArea(
                                         child: FilcColorPicker(
                                           colorMode: colorMode,
-                                          pickerColor: colorMode == CustomColorMode.accent
-                                              ? settings.customAccentColor ?? unknownColor
-                                              : colorMode == CustomColorMode.background
-                                                  ? settings.customBackgroundColor ?? unknownColor
-                                                  : colorMode == CustomColorMode.theme
-                                                      ? (accentColorMap[settings.accentColor] ?? AppColors.of(context).text) // idk what else
-                                                      : settings.customHighlightColor ?? unknownColor,
+                                          pickerColor: colorMode ==
+                                                  CustomColorMode.accent
+                                              ? settings.customAccentColor ??
+                                                  unknownColor
+                                              : colorMode ==
+                                                      CustomColorMode.background
+                                                  ? settings
+                                                          .customBackgroundColor ??
+                                                      unknownColor
+                                                  : colorMode ==
+                                                          CustomColorMode.theme
+                                                      ? (accentColorMap[settings
+                                                              .accentColor] ??
+                                                          AppColors.of(context)
+                                                              .text) // idk what else
+                                                      : settings
+                                                              .customHighlightColor ??
+                                                          unknownColor,
                                           onColorChanged: (c) {
                                             setState(() {
                                               updateCustomColor(c, false);
@@ -553,9 +701,19 @@ class _PremiumCustomAccentColorSettingState extends State<PremiumCustomAccentCol
                                           onColorChangeEnd: (c, {adaptive}) {
                                             setState(() {
                                               if (adaptive == true) {
-                                                settings.update(accentColor: AccentColor.adaptive);
-                                                settings.update(customBackgroundColor: AppColors.of(context).background, store: true);
-                                                settings.update(customHighlightColor: AppColors.of(context).highlight, store: true);
+                                                settings.update(
+                                                    accentColor:
+                                                        AccentColor.adaptive);
+                                                settings.update(
+                                                    customBackgroundColor:
+                                                        AppColors.of(context)
+                                                            .background,
+                                                    store: true);
+                                                settings.update(
+                                                    customHighlightColor:
+                                                        AppColors.of(context)
+                                                            .highlight,
+                                                    store: true);
                                               } else {
                                                 updateCustomColor(c, true);
                                               }
@@ -585,7 +743,9 @@ class _PremiumCustomAccentColorSettingState extends State<PremiumCustomAccentCol
 }
 
 class ColorTab extends StatelessWidget {
-  const ColorTab({Key? key, required this.tab, required this.color, this.unlocked = true}) : super(key: key);
+  const ColorTab(
+      {Key? key, required this.tab, required this.color, this.unlocked = true})
+      : super(key: key);
 
   final Tab tab;
   final Color color;
@@ -610,7 +770,8 @@ class ColorTab extends StatelessWidget {
                 )
               : const Padding(
                   padding: EdgeInsets.symmetric(horizontal: 2),
-                  child: Icon(Icons.lock, color: Color.fromARGB(255, 82, 82, 82), size: 18),
+                  child: Icon(Icons.lock,
+                      color: Color.fromARGB(255, 82, 82, 82), size: 18),
                 ),
         ),
         tab
@@ -620,7 +781,9 @@ class ColorTab extends StatelessWidget {
 }
 
 class PremiumColorPickerItem extends StatelessWidget {
-  const PremiumColorPickerItem({Key? key, required this.label, this.onTap, required this.color}) : super(key: key);
+  const PremiumColorPickerItem(
+      {Key? key, required this.label, this.onTap, required this.color})
+      : super(key: key);
 
   final String label;
   final void Function()? onTap;
@@ -639,13 +802,16 @@ class PremiumColorPickerItem extends StatelessWidget {
               Expanded(
                 child: Text(
                   label,
-                  style: TextStyle(color: AppColors.of(context).text, fontWeight: FontWeight.w500),
+                  style: TextStyle(
+                      color: AppColors.of(context).text,
+                      fontWeight: FontWeight.w500),
                 ),
               ),
               Container(
                 width: 30,
                 height: 30,
-                decoration: BoxDecoration(color: color, shape: BoxShape.circle, border: Border.all()),
+                decoration: BoxDecoration(
+                    color: color, shape: BoxShape.circle, border: Border.all()),
               ),
             ],
           ),
diff --git a/filcnaplo_premium/lib/ui/mobile/settings/theme.i18n.dart b/filcnaplo_premium/lib/ui/mobile/settings/theme.i18n.dart
index f71bdc2..0bb24c8 100644
--- a/filcnaplo_premium/lib/ui/mobile/settings/theme.i18n.dart
+++ b/filcnaplo_premium/lib/ui/mobile/settings/theme.i18n.dart
@@ -4,25 +4,32 @@ extension SettingsLocalization on String {
   static final _t = Translations.byLocale("hu_hu") +
       {
         "en_en": {
+          "theme_prev": "Preview",
           "colorpicker_presets": "Presets",
           "colorpicker_background": "Background",
           "colorpicker_panels": "Panels",
           "colorpicker_accent": "Accent",
           "need_sub": "You need Kupak subscription to use modify this.",
+          "advanced": "Advanced",
         },
         "hu_hu": {
+          "theme_prev": "Előnézet",
           "colorpicker_presets": "Téma",
           "colorpicker_background": "Háttér",
           "colorpicker_panels": "Panelek",
           "colorpicker_accent": "Színtónus",
           "need_sub": "A módosításhoz Kupak szintű támogatás szükséges.",
+          "advanced": "Fejlett",
         },
         "de_de": {
+          "theme_prev": "Vorschau",
           "colorpicker_presets": "Farben",
           "colorpicker_background": "Hintergrund",
           "colorpicker_panels": "Tafeln",
           "colorpicker_accent": "Akzent",
-          "need_sub": "Sie benötigen ein Kupak-Abonnement, um diese Funktion zu ändern.",
+          "need_sub":
+              "Sie benötigen ein Kupak-Abonnement, um diese Funktion zu ändern.",
+          "advanced": "Fortschrittlich",
         },
       };