From 951855074f9af7749bc8b8ab6116b5f5ec7b7c89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Zieli=C5=84ski?= Date: Sun, 23 Nov 2025 15:01:15 +0100 Subject: [PATCH] Add MAUI project --- src/Backend/.claude/settings.local.json | 10 +- src/Backend/.vscode/tasks.json | 37 +++ src/Backend/DiunaBI.UI.Mobile/App.xaml | 17 ++ src/Backend/DiunaBI.UI.Mobile/App.xaml.cs | 11 + .../DiunaBI.UI.Mobile.csproj | 88 +++++++ src/Backend/DiunaBI.UI.Mobile/MainPage.xaml | 14 ++ .../DiunaBI.UI.Mobile/MainPage.xaml.cs | 9 + src/Backend/DiunaBI.UI.Mobile/MauiProgram.cs | 55 +++++ .../Platforms/Android/AndroidManifest.xml | 6 + .../Platforms/Android/MainActivity.cs | 12 + .../Platforms/Android/MainApplication.cs | 15 ++ .../Android/Resources/values/colors.xml | 6 + .../Platforms/MacCatalyst/AppDelegate.cs | 9 + .../Platforms/MacCatalyst/Entitlements.plist | 14 ++ .../Platforms/MacCatalyst/Info.plist | 38 ++++ .../Platforms/MacCatalyst/Program.cs | 15 ++ .../DiunaBI.UI.Mobile/Platforms/Tizen/Main.cs | 16 ++ .../Platforms/Tizen/tizen-manifest.xml | 15 ++ .../Platforms/Windows/App.xaml | 8 + .../Platforms/Windows/App.xaml.cs | 23 ++ .../Platforms/Windows/Package.appxmanifest | 46 ++++ .../Platforms/Windows/app.manifest | 15 ++ .../Platforms/iOS/AppDelegate.cs | 9 + .../Platforms/iOS/Info.plist | 34 +++ .../Platforms/iOS/Program.cs | 15 ++ .../iOS/Resources/PrivacyInfo.xcprivacy | 51 +++++ .../Properties/launchSettings.json | 8 + .../Resources/AppIcon/appicon.svg | 4 + .../Resources/AppIcon/appiconfg.svg | 8 + .../Resources/Fonts/OpenSans-Regular.ttf | Bin 0 -> 107292 bytes .../Resources/Images/dotnet_bot.svg | 93 ++++++++ .../Resources/Raw/AboutAssets.txt | 15 ++ .../Resources/Splash/splash.svg | 8 + .../DiunaBI.UI.Mobile/appsettings.json | 5 + .../DiunaBI.UI.Mobile/wwwroot/css/app.css | 46 ++++ .../DiunaBI.UI.Mobile/wwwroot/index.html | 27 +++ src/Backend/DiunaBI.sln | 214 ++++++++++++------ 37 files changed, 947 insertions(+), 69 deletions(-) create mode 100644 src/Backend/DiunaBI.UI.Mobile/App.xaml create mode 100644 src/Backend/DiunaBI.UI.Mobile/App.xaml.cs create mode 100644 src/Backend/DiunaBI.UI.Mobile/DiunaBI.UI.Mobile.csproj create mode 100644 src/Backend/DiunaBI.UI.Mobile/MainPage.xaml create mode 100644 src/Backend/DiunaBI.UI.Mobile/MainPage.xaml.cs create mode 100644 src/Backend/DiunaBI.UI.Mobile/MauiProgram.cs create mode 100644 src/Backend/DiunaBI.UI.Mobile/Platforms/Android/AndroidManifest.xml create mode 100644 src/Backend/DiunaBI.UI.Mobile/Platforms/Android/MainActivity.cs create mode 100644 src/Backend/DiunaBI.UI.Mobile/Platforms/Android/MainApplication.cs create mode 100644 src/Backend/DiunaBI.UI.Mobile/Platforms/Android/Resources/values/colors.xml create mode 100644 src/Backend/DiunaBI.UI.Mobile/Platforms/MacCatalyst/AppDelegate.cs create mode 100644 src/Backend/DiunaBI.UI.Mobile/Platforms/MacCatalyst/Entitlements.plist create mode 100644 src/Backend/DiunaBI.UI.Mobile/Platforms/MacCatalyst/Info.plist create mode 100644 src/Backend/DiunaBI.UI.Mobile/Platforms/MacCatalyst/Program.cs create mode 100644 src/Backend/DiunaBI.UI.Mobile/Platforms/Tizen/Main.cs create mode 100644 src/Backend/DiunaBI.UI.Mobile/Platforms/Tizen/tizen-manifest.xml create mode 100644 src/Backend/DiunaBI.UI.Mobile/Platforms/Windows/App.xaml create mode 100644 src/Backend/DiunaBI.UI.Mobile/Platforms/Windows/App.xaml.cs create mode 100644 src/Backend/DiunaBI.UI.Mobile/Platforms/Windows/Package.appxmanifest create mode 100644 src/Backend/DiunaBI.UI.Mobile/Platforms/Windows/app.manifest create mode 100644 src/Backend/DiunaBI.UI.Mobile/Platforms/iOS/AppDelegate.cs create mode 100644 src/Backend/DiunaBI.UI.Mobile/Platforms/iOS/Info.plist create mode 100644 src/Backend/DiunaBI.UI.Mobile/Platforms/iOS/Program.cs create mode 100644 src/Backend/DiunaBI.UI.Mobile/Platforms/iOS/Resources/PrivacyInfo.xcprivacy create mode 100644 src/Backend/DiunaBI.UI.Mobile/Properties/launchSettings.json create mode 100644 src/Backend/DiunaBI.UI.Mobile/Resources/AppIcon/appicon.svg create mode 100644 src/Backend/DiunaBI.UI.Mobile/Resources/AppIcon/appiconfg.svg create mode 100644 src/Backend/DiunaBI.UI.Mobile/Resources/Fonts/OpenSans-Regular.ttf create mode 100644 src/Backend/DiunaBI.UI.Mobile/Resources/Images/dotnet_bot.svg create mode 100644 src/Backend/DiunaBI.UI.Mobile/Resources/Raw/AboutAssets.txt create mode 100644 src/Backend/DiunaBI.UI.Mobile/Resources/Splash/splash.svg create mode 100644 src/Backend/DiunaBI.UI.Mobile/appsettings.json create mode 100644 src/Backend/DiunaBI.UI.Mobile/wwwroot/css/app.css create mode 100644 src/Backend/DiunaBI.UI.Mobile/wwwroot/index.html diff --git a/src/Backend/.claude/settings.local.json b/src/Backend/.claude/settings.local.json index 90cea92..3080234 100644 --- a/src/Backend/.claude/settings.local.json +++ b/src/Backend/.claude/settings.local.json @@ -5,7 +5,15 @@ "Bash(dotnet restore:*)", "Bash(dotnet build:*)", "Bash(dotnet ef:*)", - "Bash(dotnet tool install:*)" + "Bash(dotnet tool install:*)", + "Bash(dotnet sln:*)", + "Bash(dotnet workload:*)", + "Bash(xcode-select:*)", + "Bash(xattr -cr:*)", + "Bash(dotnet clean:*)", + "Bash(xcrun simctl:*)", + "Bash(cat:*)", + "Bash(git checkout:*)" ], "deny": [], "ask": [] diff --git a/src/Backend/.vscode/tasks.json b/src/Backend/.vscode/tasks.json index 9526c19..8c40ed2 100644 --- a/src/Backend/.vscode/tasks.json +++ b/src/Backend/.vscode/tasks.json @@ -72,6 +72,43 @@ "${workspaceFolder}/DiunaBI.UI.Web/DiunaBI.UI.Web.csproj" ], "problemMatcher": "$msCompile" + }, + { + "label": "build-mobile-ios", + "command": "dotnet", + "type": "process", + "args": [ + "build", + "${workspaceFolder}/DiunaBI.UI.Mobile/DiunaBI.UI.Mobile.csproj", + "-f", + "net10.0-ios", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary;ForceNoAlign" + ], + "problemMatcher": "$msCompile" + }, + { + "label": "run-mobile-ios", + "command": "dotnet", + "type": "shell", + "args": [ + "build", + "${workspaceFolder}/DiunaBI.UI.Mobile/DiunaBI.UI.Mobile.csproj", + "-f", + "net10.0-ios", + "-t:Run", + "/p:_DeviceName=:v2:udid=B72F13ED-156F-481D-80EE-6A17494DBB70" + ], + "problemMatcher": [], + "presentation": { + "reveal": "always", + "panel": "dedicated", + "focus": false + }, + "group": { + "kind": "build", + "isDefault": false + } } ] } diff --git a/src/Backend/DiunaBI.UI.Mobile/App.xaml b/src/Backend/DiunaBI.UI.Mobile/App.xaml new file mode 100644 index 0000000..0c0dbda --- /dev/null +++ b/src/Backend/DiunaBI.UI.Mobile/App.xaml @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/src/Backend/DiunaBI.UI.Mobile/App.xaml.cs b/src/Backend/DiunaBI.UI.Mobile/App.xaml.cs new file mode 100644 index 0000000..81ed858 --- /dev/null +++ b/src/Backend/DiunaBI.UI.Mobile/App.xaml.cs @@ -0,0 +1,11 @@ +namespace DiunaBI.UI.Mobile; + +public partial class App : Microsoft.Maui.Controls.Application +{ + public App() + { + InitializeComponent(); + + MainPage = new MainPage(); + } +} \ No newline at end of file diff --git a/src/Backend/DiunaBI.UI.Mobile/DiunaBI.UI.Mobile.csproj b/src/Backend/DiunaBI.UI.Mobile/DiunaBI.UI.Mobile.csproj new file mode 100644 index 0000000..514e0f2 --- /dev/null +++ b/src/Backend/DiunaBI.UI.Mobile/DiunaBI.UI.Mobile.csproj @@ -0,0 +1,88 @@ + + + + net10.0-ios + true + + + + + + + + Exe + DiunaBI.UI.Mobile + true + true + enable + false + enable + + + DiunaBI + + + com.bimit.diunabi + + + 1.0 + 1 + + 14.2 + 14.0 + 24.0 + 10.0.17763.0 + 10.0.17763.0 + 6.5 + + + + com.bimit.diunabi + Apple Development: Michal Zielinski (2F35ZHMBTB) + bimai-local + ios-arm64 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Backend/DiunaBI.UI.Mobile/MainPage.xaml b/src/Backend/DiunaBI.UI.Mobile/MainPage.xaml new file mode 100644 index 0000000..eb099ed --- /dev/null +++ b/src/Backend/DiunaBI.UI.Mobile/MainPage.xaml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/Backend/DiunaBI.UI.Mobile/MainPage.xaml.cs b/src/Backend/DiunaBI.UI.Mobile/MainPage.xaml.cs new file mode 100644 index 0000000..afcebc7 --- /dev/null +++ b/src/Backend/DiunaBI.UI.Mobile/MainPage.xaml.cs @@ -0,0 +1,9 @@ +namespace DiunaBI.UI.Mobile; + +public partial class MainPage : ContentPage +{ + public MainPage() + { + InitializeComponent(); + } +} \ No newline at end of file diff --git a/src/Backend/DiunaBI.UI.Mobile/MauiProgram.cs b/src/Backend/DiunaBI.UI.Mobile/MauiProgram.cs new file mode 100644 index 0000000..d62a5b5 --- /dev/null +++ b/src/Backend/DiunaBI.UI.Mobile/MauiProgram.cs @@ -0,0 +1,55 @@ +using System.Reflection; +using DiunaBI.UI.Mobile; +using DiunaBI.UI.Shared.Extensions; +using DiunaBI.UI.Shared.Services; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using Microsoft.Maui.Controls.Hosting; +using Microsoft.Maui.Devices; +using Microsoft.Maui.Hosting; +using MudBlazor.Services; + +namespace DiunaBI.UI.Mobile; + +public static class MauiProgram +{ + public static MauiApp CreateMauiApp() + { + var builder = MauiApp.CreateBuilder(); + builder + .UseMauiApp() + .ConfigureFonts(fonts => { fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); }); + + builder.Configuration + .AddJsonFile("appsettings.json", optional: true, reloadOnChange: false) + .AddJsonFile($"appsettings.Development.json", optional: true, reloadOnChange: false) + .AddEnvironmentVariables(); + + builder.Services.AddMauiBlazorWebView(); + builder.Services.AddMudServices(); + + builder.Services.AddScoped(); + + var baseUrl = GetApiBaseUrl(); + builder.Services.AddSharedServices(baseUrl); + + +#if DEBUG + builder.Services.AddBlazorWebViewDeveloperTools(); + builder.Logging.AddDebug(); + builder.Logging.SetMinimumLevel(LogLevel.Debug); +#endif + return builder.Build(); + } + + private static string GetApiBaseUrl() + { +#if IOS + // iOS symulator + return "http://192.168.29.140:7142/"; +#else + return "https://localhost:7142/"; +#endif + } +} \ No newline at end of file diff --git a/src/Backend/DiunaBI.UI.Mobile/Platforms/Android/AndroidManifest.xml b/src/Backend/DiunaBI.UI.Mobile/Platforms/Android/AndroidManifest.xml new file mode 100644 index 0000000..dbf9e7e --- /dev/null +++ b/src/Backend/DiunaBI.UI.Mobile/Platforms/Android/AndroidManifest.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/Backend/DiunaBI.UI.Mobile/Platforms/Android/MainActivity.cs b/src/Backend/DiunaBI.UI.Mobile/Platforms/Android/MainActivity.cs new file mode 100644 index 0000000..6332be9 --- /dev/null +++ b/src/Backend/DiunaBI.UI.Mobile/Platforms/Android/MainActivity.cs @@ -0,0 +1,12 @@ +using Android.App; +using Android.Content.PM; +using Android.OS; + +namespace DiunaBI.UI.Mobile; + +[Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, + ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | + ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)] +public class MainActivity : MauiAppCompatActivity +{ +} \ No newline at end of file diff --git a/src/Backend/DiunaBI.UI.Mobile/Platforms/Android/MainApplication.cs b/src/Backend/DiunaBI.UI.Mobile/Platforms/Android/MainApplication.cs new file mode 100644 index 0000000..aacb242 --- /dev/null +++ b/src/Backend/DiunaBI.UI.Mobile/Platforms/Android/MainApplication.cs @@ -0,0 +1,15 @@ +using Android.App; +using Android.Runtime; + +namespace DiunaBI.UI.Mobile; + +[Application] +public class MainApplication : MauiApplication +{ + public MainApplication(IntPtr handle, JniHandleOwnership ownership) + : base(handle, ownership) + { + } + + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); +} \ No newline at end of file diff --git a/src/Backend/DiunaBI.UI.Mobile/Platforms/Android/Resources/values/colors.xml b/src/Backend/DiunaBI.UI.Mobile/Platforms/Android/Resources/values/colors.xml new file mode 100644 index 0000000..c04d749 --- /dev/null +++ b/src/Backend/DiunaBI.UI.Mobile/Platforms/Android/Resources/values/colors.xml @@ -0,0 +1,6 @@ + + + #512BD4 + #2B0B98 + #2B0B98 + \ No newline at end of file diff --git a/src/Backend/DiunaBI.UI.Mobile/Platforms/MacCatalyst/AppDelegate.cs b/src/Backend/DiunaBI.UI.Mobile/Platforms/MacCatalyst/AppDelegate.cs new file mode 100644 index 0000000..5f0214b --- /dev/null +++ b/src/Backend/DiunaBI.UI.Mobile/Platforms/MacCatalyst/AppDelegate.cs @@ -0,0 +1,9 @@ +using Foundation; + +namespace DiunaBI.UI.Mobile; + +[Register("AppDelegate")] +public class AppDelegate : MauiUIApplicationDelegate +{ + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); +} \ No newline at end of file diff --git a/src/Backend/DiunaBI.UI.Mobile/Platforms/MacCatalyst/Entitlements.plist b/src/Backend/DiunaBI.UI.Mobile/Platforms/MacCatalyst/Entitlements.plist new file mode 100644 index 0000000..de4adc9 --- /dev/null +++ b/src/Backend/DiunaBI.UI.Mobile/Platforms/MacCatalyst/Entitlements.plist @@ -0,0 +1,14 @@ + + + + + + + com.apple.security.app-sandbox + + + com.apple.security.network.client + + + + diff --git a/src/Backend/DiunaBI.UI.Mobile/Platforms/MacCatalyst/Info.plist b/src/Backend/DiunaBI.UI.Mobile/Platforms/MacCatalyst/Info.plist new file mode 100644 index 0000000..7b1e6e6 --- /dev/null +++ b/src/Backend/DiunaBI.UI.Mobile/Platforms/MacCatalyst/Info.plist @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + UIDeviceFamily + + 2 + + UIRequiredDeviceCapabilities + + arm64 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + XSAppIconAssets + Assets.xcassets/appicon.appiconset + + diff --git a/src/Backend/DiunaBI.UI.Mobile/Platforms/MacCatalyst/Program.cs b/src/Backend/DiunaBI.UI.Mobile/Platforms/MacCatalyst/Program.cs new file mode 100644 index 0000000..5e63822 --- /dev/null +++ b/src/Backend/DiunaBI.UI.Mobile/Platforms/MacCatalyst/Program.cs @@ -0,0 +1,15 @@ +using ObjCRuntime; +using UIKit; + +namespace DiunaBI.UI.Mobile; + +public class Program +{ + // This is the main entry point of the application. + static void Main(string[] args) + { + // if you want to use a different Application Delegate class from "AppDelegate" + // you can specify it here. + UIApplication.Main(args, null, typeof(AppDelegate)); + } +} \ No newline at end of file diff --git a/src/Backend/DiunaBI.UI.Mobile/Platforms/Tizen/Main.cs b/src/Backend/DiunaBI.UI.Mobile/Platforms/Tizen/Main.cs new file mode 100644 index 0000000..6aa65f1 --- /dev/null +++ b/src/Backend/DiunaBI.UI.Mobile/Platforms/Tizen/Main.cs @@ -0,0 +1,16 @@ +using System; +using Microsoft.Maui; +using Microsoft.Maui.Hosting; + +namespace DiunaBI.UI.Mobile; + +class Program : MauiApplication +{ + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); + + static void Main(string[] args) + { + var app = new Program(); + app.Run(args); + } +} \ No newline at end of file diff --git a/src/Backend/DiunaBI.UI.Mobile/Platforms/Tizen/tizen-manifest.xml b/src/Backend/DiunaBI.UI.Mobile/Platforms/Tizen/tizen-manifest.xml new file mode 100644 index 0000000..d391520 --- /dev/null +++ b/src/Backend/DiunaBI.UI.Mobile/Platforms/Tizen/tizen-manifest.xml @@ -0,0 +1,15 @@ + + + + + + maui-appicon-placeholder + + + + + http://tizen.org/privilege/internet + + + + \ No newline at end of file diff --git a/src/Backend/DiunaBI.UI.Mobile/Platforms/Windows/App.xaml b/src/Backend/DiunaBI.UI.Mobile/Platforms/Windows/App.xaml new file mode 100644 index 0000000..e89524b --- /dev/null +++ b/src/Backend/DiunaBI.UI.Mobile/Platforms/Windows/App.xaml @@ -0,0 +1,8 @@ + + + diff --git a/src/Backend/DiunaBI.UI.Mobile/Platforms/Windows/App.xaml.cs b/src/Backend/DiunaBI.UI.Mobile/Platforms/Windows/App.xaml.cs new file mode 100644 index 0000000..d65d9bc --- /dev/null +++ b/src/Backend/DiunaBI.UI.Mobile/Platforms/Windows/App.xaml.cs @@ -0,0 +1,23 @@ +using Microsoft.UI.Xaml; + +// To learn more about WinUI, the WinUI project structure, +// and more about our project templates, see: http://aka.ms/winui-project-info. + +namespace DiunaBI.UI.Mobile.WinUI; + +/// +/// Provides application-specific behavior to supplement the default Application class. +/// +public partial class App : MauiWinUIApplication +{ + /// + /// Initializes the singleton application object. This is the first line of authored code + /// executed, and as such is the logical equivalent of main() or WinMain(). + /// + public App() + { + this.InitializeComponent(); + } + + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); +} \ No newline at end of file diff --git a/src/Backend/DiunaBI.UI.Mobile/Platforms/Windows/Package.appxmanifest b/src/Backend/DiunaBI.UI.Mobile/Platforms/Windows/Package.appxmanifest new file mode 100644 index 0000000..8c87585 --- /dev/null +++ b/src/Backend/DiunaBI.UI.Mobile/Platforms/Windows/Package.appxmanifest @@ -0,0 +1,46 @@ + + + + + + + + + $placeholder$ + User Name + $placeholder$.png + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Backend/DiunaBI.UI.Mobile/Platforms/Windows/app.manifest b/src/Backend/DiunaBI.UI.Mobile/Platforms/Windows/app.manifest new file mode 100644 index 0000000..556a3cd --- /dev/null +++ b/src/Backend/DiunaBI.UI.Mobile/Platforms/Windows/app.manifest @@ -0,0 +1,15 @@ + + + + + + + + true/PM + PerMonitorV2, PerMonitor + + + diff --git a/src/Backend/DiunaBI.UI.Mobile/Platforms/iOS/AppDelegate.cs b/src/Backend/DiunaBI.UI.Mobile/Platforms/iOS/AppDelegate.cs new file mode 100644 index 0000000..5f0214b --- /dev/null +++ b/src/Backend/DiunaBI.UI.Mobile/Platforms/iOS/AppDelegate.cs @@ -0,0 +1,9 @@ +using Foundation; + +namespace DiunaBI.UI.Mobile; + +[Register("AppDelegate")] +public class AppDelegate : MauiUIApplicationDelegate +{ + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); +} \ No newline at end of file diff --git a/src/Backend/DiunaBI.UI.Mobile/Platforms/iOS/Info.plist b/src/Backend/DiunaBI.UI.Mobile/Platforms/iOS/Info.plist new file mode 100644 index 0000000..4edd2c1 --- /dev/null +++ b/src/Backend/DiunaBI.UI.Mobile/Platforms/iOS/Info.plist @@ -0,0 +1,34 @@ + + + + + LSRequiresIPhoneOS + + UIDeviceFamily + + 1 + 2 + + UIRequiredDeviceCapabilities + + arm64 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + XSAppIconAssets + Assets.xcassets/appicon.appiconset + NSCameraUsageDescription + Ta aplikacja potrzebuje dostępu do kamery w celu skanowania kodów EAN produktów. + + diff --git a/src/Backend/DiunaBI.UI.Mobile/Platforms/iOS/Program.cs b/src/Backend/DiunaBI.UI.Mobile/Platforms/iOS/Program.cs new file mode 100644 index 0000000..5e63822 --- /dev/null +++ b/src/Backend/DiunaBI.UI.Mobile/Platforms/iOS/Program.cs @@ -0,0 +1,15 @@ +using ObjCRuntime; +using UIKit; + +namespace DiunaBI.UI.Mobile; + +public class Program +{ + // This is the main entry point of the application. + static void Main(string[] args) + { + // if you want to use a different Application Delegate class from "AppDelegate" + // you can specify it here. + UIApplication.Main(args, null, typeof(AppDelegate)); + } +} \ No newline at end of file diff --git a/src/Backend/DiunaBI.UI.Mobile/Platforms/iOS/Resources/PrivacyInfo.xcprivacy b/src/Backend/DiunaBI.UI.Mobile/Platforms/iOS/Resources/PrivacyInfo.xcprivacy new file mode 100644 index 0000000..24ab3b4 --- /dev/null +++ b/src/Backend/DiunaBI.UI.Mobile/Platforms/iOS/Resources/PrivacyInfo.xcprivacy @@ -0,0 +1,51 @@ + + + + + + NSPrivacyAccessedAPITypes + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryFileTimestamp + NSPrivacyAccessedAPITypeReasons + + C617.1 + + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategorySystemBootTime + NSPrivacyAccessedAPITypeReasons + + 35F9.1 + + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryDiskSpace + NSPrivacyAccessedAPITypeReasons + + E174.1 + + + + + + diff --git a/src/Backend/DiunaBI.UI.Mobile/Properties/launchSettings.json b/src/Backend/DiunaBI.UI.Mobile/Properties/launchSettings.json new file mode 100644 index 0000000..8d6c11a --- /dev/null +++ b/src/Backend/DiunaBI.UI.Mobile/Properties/launchSettings.json @@ -0,0 +1,8 @@ +{ + "profiles": { + "dev": { + "commandName": "Project", + "dotnetRunMessages": true + } + } +} \ No newline at end of file diff --git a/src/Backend/DiunaBI.UI.Mobile/Resources/AppIcon/appicon.svg b/src/Backend/DiunaBI.UI.Mobile/Resources/AppIcon/appicon.svg new file mode 100644 index 0000000..9d63b65 --- /dev/null +++ b/src/Backend/DiunaBI.UI.Mobile/Resources/AppIcon/appicon.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/Backend/DiunaBI.UI.Mobile/Resources/AppIcon/appiconfg.svg b/src/Backend/DiunaBI.UI.Mobile/Resources/AppIcon/appiconfg.svg new file mode 100644 index 0000000..21dfb25 --- /dev/null +++ b/src/Backend/DiunaBI.UI.Mobile/Resources/AppIcon/appiconfg.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/src/Backend/DiunaBI.UI.Mobile/Resources/Fonts/OpenSans-Regular.ttf b/src/Backend/DiunaBI.UI.Mobile/Resources/Fonts/OpenSans-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..1c861f118b5a36da749fb4d672f37fe46e34413d GIT binary patch literal 107292 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 literal 0 HcmV?d00001 diff --git a/src/Backend/DiunaBI.UI.Mobile/Resources/Images/dotnet_bot.svg b/src/Backend/DiunaBI.UI.Mobile/Resources/Images/dotnet_bot.svg new file mode 100644 index 0000000..abfaff2 --- /dev/null +++ b/src/Backend/DiunaBI.UI.Mobile/Resources/Images/dotnet_bot.svg @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Backend/DiunaBI.UI.Mobile/Resources/Raw/AboutAssets.txt b/src/Backend/DiunaBI.UI.Mobile/Resources/Raw/AboutAssets.txt new file mode 100644 index 0000000..6de1c15 --- /dev/null +++ b/src/Backend/DiunaBI.UI.Mobile/Resources/Raw/AboutAssets.txt @@ -0,0 +1,15 @@ +Any raw assets you want to be deployed with your application can be placed in +this directory (and child directories). Deployment of the asset to your application +is automatically handled by the following `MauiAsset` Build Action within your `.csproj`. + + + +These files will be deployed with your package and will be accessible using Essentials: + + async Task LoadMauiAsset() + { + using var stream = await FileSystem.OpenAppPackageFileAsync("AboutAssets.txt"); + using var reader = new StreamReader(stream); + + var contents = reader.ReadToEnd(); + } diff --git a/src/Backend/DiunaBI.UI.Mobile/Resources/Splash/splash.svg b/src/Backend/DiunaBI.UI.Mobile/Resources/Splash/splash.svg new file mode 100644 index 0000000..21dfb25 --- /dev/null +++ b/src/Backend/DiunaBI.UI.Mobile/Resources/Splash/splash.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/src/Backend/DiunaBI.UI.Mobile/appsettings.json b/src/Backend/DiunaBI.UI.Mobile/appsettings.json new file mode 100644 index 0000000..550f264 --- /dev/null +++ b/src/Backend/DiunaBI.UI.Mobile/appsettings.json @@ -0,0 +1,5 @@ +{ + "GoogleAuth": { + "ClientId": "1037727384847-t1l2au6du34kdckamro81guklk17cjah.apps.googleusercontent.com" + } +} \ No newline at end of file diff --git a/src/Backend/DiunaBI.UI.Mobile/wwwroot/css/app.css b/src/Backend/DiunaBI.UI.Mobile/wwwroot/css/app.css new file mode 100644 index 0000000..64b8186 --- /dev/null +++ b/src/Backend/DiunaBI.UI.Mobile/wwwroot/css/app.css @@ -0,0 +1,46 @@ +#blazor-error-ui { + background: lightyellow; + bottom: 0; + box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2); + display: none; + left: 0; + padding: 0.6rem 1.25rem 0.7rem 1.25rem; + position: fixed; + width: 100%; + z-index: 1000; +} + +#blazor-error-ui .dismiss { + cursor: pointer; + position: absolute; + right: 0.75rem; + top: 0.5rem; +} + +/* iOS Safe Area Support */ +@supports (padding-top: env(safe-area-inset-top)) { + .mud-appbar { + padding-top: env(safe-area-inset-top) !important; + height: calc(64px + env(safe-area-inset-top)) !important; + } + + .mud-drawer { + padding-top: env(safe-area-inset-top); + } + + .mud-main-content { + padding-top: calc(64px + env(safe-area-inset-top)) !important; + } +} + +/* Fallback for older devices */ +@media only screen and (max-device-width: 812px) and (-webkit-device-pixel-ratio: 3) { + .mud-appbar { + padding-top: 44px !important; + height: calc(64px + 44px) !important; + } + + .mud-main-content { + padding-top: calc(64px + 44px) !important; + } +} diff --git a/src/Backend/DiunaBI.UI.Mobile/wwwroot/index.html b/src/Backend/DiunaBI.UI.Mobile/wwwroot/index.html new file mode 100644 index 0000000..bd08252 --- /dev/null +++ b/src/Backend/DiunaBI.UI.Mobile/wwwroot/index.html @@ -0,0 +1,27 @@ + + + + + + + + + + + + DiunaBI + + +
Loading...
+ +
+ An unhandled error has occurred. + Reload + 🗙 +
+ + + + + + diff --git a/src/Backend/DiunaBI.sln b/src/Backend/DiunaBI.sln index 6ceb895..b4135c0 100644 --- a/src/Backend/DiunaBI.sln +++ b/src/Backend/DiunaBI.sln @@ -1,68 +1,146 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiunaBI.API", "DiunaBI.API\DiunaBI.API.csproj", "{D468D3FD-2B0F-4E1E-9BFC-AE32DD3BB4C6}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiunaBI.Plugins.Morska", "DiunaBI.Plugins.Morska\DiunaBI.Plugins.Morska.csproj", "{B5416A3F-550A-468D-852F-20B24243FD68}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiunaBI.Tests", "DiunaBI.Tests\DiunaBI.Tests.csproj", "{7D99AF7E-1FC7-4EC0-A320-F1A81D396F93}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiunaBI.Domain", "DiunaBI.Domain\DiunaBI.Domain.csproj", "{8C701560-EF39-4203-8EB9-16AB32CA2CAB}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiunaBI.Application", "DiunaBI.Application\DiunaBI.Application.csproj", "{5F8C40E9-F51E-48A5-840F-4309C873C6C6}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiunaBI.Infrastructure", "DiunaBI.Infrastructure\DiunaBI.Infrastructure.csproj", "{0B2E03F3-A1F7-4C7F-BCA7-386979C93346}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiunaBI.UI.Shared", "DiunaBI.UI.Shared\DiunaBI.UI.Shared.csproj", "{1F9340A0-8D4F-46C2-80C6-1687778A6D20}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiunaBI.UI.Web", "DiunaBI.UI.Web\DiunaBI.UI.Web.csproj", "{28F6702F-400A-4378-828B-02E111EE7EFE}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {D468D3FD-2B0F-4E1E-9BFC-AE32DD3BB4C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D468D3FD-2B0F-4E1E-9BFC-AE32DD3BB4C6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D468D3FD-2B0F-4E1E-9BFC-AE32DD3BB4C6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D468D3FD-2B0F-4E1E-9BFC-AE32DD3BB4C6}.Release|Any CPU.Build.0 = Release|Any CPU - {B5416A3F-550A-468D-852F-20B24243FD68}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B5416A3F-550A-468D-852F-20B24243FD68}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B5416A3F-550A-468D-852F-20B24243FD68}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B5416A3F-550A-468D-852F-20B24243FD68}.Release|Any CPU.Build.0 = Release|Any CPU - {8C346BEA-A209-4E8F-A6BF-70B42D9106C8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8C346BEA-A209-4E8F-A6BF-70B42D9106C8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8C346BEA-A209-4E8F-A6BF-70B42D9106C8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8C346BEA-A209-4E8F-A6BF-70B42D9106C8}.Release|Any CPU.Build.0 = Release|Any CPU - {7D99AF7E-1FC7-4EC0-A320-F1A81D396F93}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7D99AF7E-1FC7-4EC0-A320-F1A81D396F93}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7D99AF7E-1FC7-4EC0-A320-F1A81D396F93}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7D99AF7E-1FC7-4EC0-A320-F1A81D396F93}.Release|Any CPU.Build.0 = Release|Any CPU - {8C701560-EF39-4203-8EB9-16AB32CA2CAB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8C701560-EF39-4203-8EB9-16AB32CA2CAB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8C701560-EF39-4203-8EB9-16AB32CA2CAB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8C701560-EF39-4203-8EB9-16AB32CA2CAB}.Release|Any CPU.Build.0 = Release|Any CPU - {5F8C40E9-F51E-48A5-840F-4309C873C6C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5F8C40E9-F51E-48A5-840F-4309C873C6C6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5F8C40E9-F51E-48A5-840F-4309C873C6C6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5F8C40E9-F51E-48A5-840F-4309C873C6C6}.Release|Any CPU.Build.0 = Release|Any CPU - {0B2E03F3-A1F7-4C7F-BCA7-386979C93346}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0B2E03F3-A1F7-4C7F-BCA7-386979C93346}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0B2E03F3-A1F7-4C7F-BCA7-386979C93346}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0B2E03F3-A1F7-4C7F-BCA7-386979C93346}.Release|Any CPU.Build.0 = Release|Any CPU - {1F9340A0-8D4F-46C2-80C6-1687778A6D20}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F9340A0-8D4F-46C2-80C6-1687778A6D20}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F9340A0-8D4F-46C2-80C6-1687778A6D20}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F9340A0-8D4F-46C2-80C6-1687778A6D20}.Release|Any CPU.Build.0 = Release|Any CPU - {28F6702F-400A-4378-828B-02E111EE7EFE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28F6702F-400A-4378-828B-02E111EE7EFE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28F6702F-400A-4378-828B-02E111EE7EFE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28F6702F-400A-4378-828B-02E111EE7EFE}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiunaBI.API", "DiunaBI.API\DiunaBI.API.csproj", "{D468D3FD-2B0F-4E1E-9BFC-AE32DD3BB4C6}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiunaBI.Plugins.Morska", "DiunaBI.Plugins.Morska\DiunaBI.Plugins.Morska.csproj", "{B5416A3F-550A-468D-852F-20B24243FD68}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiunaBI.Tests", "DiunaBI.Tests\DiunaBI.Tests.csproj", "{7D99AF7E-1FC7-4EC0-A320-F1A81D396F93}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiunaBI.Domain", "DiunaBI.Domain\DiunaBI.Domain.csproj", "{8C701560-EF39-4203-8EB9-16AB32CA2CAB}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiunaBI.Application", "DiunaBI.Application\DiunaBI.Application.csproj", "{5F8C40E9-F51E-48A5-840F-4309C873C6C6}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiunaBI.Infrastructure", "DiunaBI.Infrastructure\DiunaBI.Infrastructure.csproj", "{0B2E03F3-A1F7-4C7F-BCA7-386979C93346}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiunaBI.UI.Shared", "DiunaBI.UI.Shared\DiunaBI.UI.Shared.csproj", "{1F9340A0-8D4F-46C2-80C6-1687778A6D20}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiunaBI.UI.Web", "DiunaBI.UI.Web\DiunaBI.UI.Web.csproj", "{28F6702F-400A-4378-828B-02E111EE7EFE}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiunaBI.UI.Mobile", "DiunaBI.UI.Mobile\DiunaBI.UI.Mobile.csproj", "{EC6F660B-719A-491C-AE0A-FB7508A881D8}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D468D3FD-2B0F-4E1E-9BFC-AE32DD3BB4C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D468D3FD-2B0F-4E1E-9BFC-AE32DD3BB4C6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D468D3FD-2B0F-4E1E-9BFC-AE32DD3BB4C6}.Debug|x64.ActiveCfg = Debug|Any CPU + {D468D3FD-2B0F-4E1E-9BFC-AE32DD3BB4C6}.Debug|x64.Build.0 = Debug|Any CPU + {D468D3FD-2B0F-4E1E-9BFC-AE32DD3BB4C6}.Debug|x86.ActiveCfg = Debug|Any CPU + {D468D3FD-2B0F-4E1E-9BFC-AE32DD3BB4C6}.Debug|x86.Build.0 = Debug|Any CPU + {D468D3FD-2B0F-4E1E-9BFC-AE32DD3BB4C6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D468D3FD-2B0F-4E1E-9BFC-AE32DD3BB4C6}.Release|Any CPU.Build.0 = Release|Any CPU + {D468D3FD-2B0F-4E1E-9BFC-AE32DD3BB4C6}.Release|x64.ActiveCfg = Release|Any CPU + {D468D3FD-2B0F-4E1E-9BFC-AE32DD3BB4C6}.Release|x64.Build.0 = Release|Any CPU + {D468D3FD-2B0F-4E1E-9BFC-AE32DD3BB4C6}.Release|x86.ActiveCfg = Release|Any CPU + {D468D3FD-2B0F-4E1E-9BFC-AE32DD3BB4C6}.Release|x86.Build.0 = Release|Any CPU + {B5416A3F-550A-468D-852F-20B24243FD68}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B5416A3F-550A-468D-852F-20B24243FD68}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B5416A3F-550A-468D-852F-20B24243FD68}.Debug|x64.ActiveCfg = Debug|Any CPU + {B5416A3F-550A-468D-852F-20B24243FD68}.Debug|x64.Build.0 = Debug|Any CPU + {B5416A3F-550A-468D-852F-20B24243FD68}.Debug|x86.ActiveCfg = Debug|Any CPU + {B5416A3F-550A-468D-852F-20B24243FD68}.Debug|x86.Build.0 = Debug|Any CPU + {B5416A3F-550A-468D-852F-20B24243FD68}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B5416A3F-550A-468D-852F-20B24243FD68}.Release|Any CPU.Build.0 = Release|Any CPU + {B5416A3F-550A-468D-852F-20B24243FD68}.Release|x64.ActiveCfg = Release|Any CPU + {B5416A3F-550A-468D-852F-20B24243FD68}.Release|x64.Build.0 = Release|Any CPU + {B5416A3F-550A-468D-852F-20B24243FD68}.Release|x86.ActiveCfg = Release|Any CPU + {B5416A3F-550A-468D-852F-20B24243FD68}.Release|x86.Build.0 = Release|Any CPU + {7D99AF7E-1FC7-4EC0-A320-F1A81D396F93}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7D99AF7E-1FC7-4EC0-A320-F1A81D396F93}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7D99AF7E-1FC7-4EC0-A320-F1A81D396F93}.Debug|x64.ActiveCfg = Debug|Any CPU + {7D99AF7E-1FC7-4EC0-A320-F1A81D396F93}.Debug|x64.Build.0 = Debug|Any CPU + {7D99AF7E-1FC7-4EC0-A320-F1A81D396F93}.Debug|x86.ActiveCfg = Debug|Any CPU + {7D99AF7E-1FC7-4EC0-A320-F1A81D396F93}.Debug|x86.Build.0 = Debug|Any CPU + {7D99AF7E-1FC7-4EC0-A320-F1A81D396F93}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7D99AF7E-1FC7-4EC0-A320-F1A81D396F93}.Release|Any CPU.Build.0 = Release|Any CPU + {7D99AF7E-1FC7-4EC0-A320-F1A81D396F93}.Release|x64.ActiveCfg = Release|Any CPU + {7D99AF7E-1FC7-4EC0-A320-F1A81D396F93}.Release|x64.Build.0 = Release|Any CPU + {7D99AF7E-1FC7-4EC0-A320-F1A81D396F93}.Release|x86.ActiveCfg = Release|Any CPU + {7D99AF7E-1FC7-4EC0-A320-F1A81D396F93}.Release|x86.Build.0 = Release|Any CPU + {8C701560-EF39-4203-8EB9-16AB32CA2CAB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8C701560-EF39-4203-8EB9-16AB32CA2CAB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8C701560-EF39-4203-8EB9-16AB32CA2CAB}.Debug|x64.ActiveCfg = Debug|Any CPU + {8C701560-EF39-4203-8EB9-16AB32CA2CAB}.Debug|x64.Build.0 = Debug|Any CPU + {8C701560-EF39-4203-8EB9-16AB32CA2CAB}.Debug|x86.ActiveCfg = Debug|Any CPU + {8C701560-EF39-4203-8EB9-16AB32CA2CAB}.Debug|x86.Build.0 = Debug|Any CPU + {8C701560-EF39-4203-8EB9-16AB32CA2CAB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8C701560-EF39-4203-8EB9-16AB32CA2CAB}.Release|Any CPU.Build.0 = Release|Any CPU + {8C701560-EF39-4203-8EB9-16AB32CA2CAB}.Release|x64.ActiveCfg = Release|Any CPU + {8C701560-EF39-4203-8EB9-16AB32CA2CAB}.Release|x64.Build.0 = Release|Any CPU + {8C701560-EF39-4203-8EB9-16AB32CA2CAB}.Release|x86.ActiveCfg = Release|Any CPU + {8C701560-EF39-4203-8EB9-16AB32CA2CAB}.Release|x86.Build.0 = Release|Any CPU + {5F8C40E9-F51E-48A5-840F-4309C873C6C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5F8C40E9-F51E-48A5-840F-4309C873C6C6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5F8C40E9-F51E-48A5-840F-4309C873C6C6}.Debug|x64.ActiveCfg = Debug|Any CPU + {5F8C40E9-F51E-48A5-840F-4309C873C6C6}.Debug|x64.Build.0 = Debug|Any CPU + {5F8C40E9-F51E-48A5-840F-4309C873C6C6}.Debug|x86.ActiveCfg = Debug|Any CPU + {5F8C40E9-F51E-48A5-840F-4309C873C6C6}.Debug|x86.Build.0 = Debug|Any CPU + {5F8C40E9-F51E-48A5-840F-4309C873C6C6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5F8C40E9-F51E-48A5-840F-4309C873C6C6}.Release|Any CPU.Build.0 = Release|Any CPU + {5F8C40E9-F51E-48A5-840F-4309C873C6C6}.Release|x64.ActiveCfg = Release|Any CPU + {5F8C40E9-F51E-48A5-840F-4309C873C6C6}.Release|x64.Build.0 = Release|Any CPU + {5F8C40E9-F51E-48A5-840F-4309C873C6C6}.Release|x86.ActiveCfg = Release|Any CPU + {5F8C40E9-F51E-48A5-840F-4309C873C6C6}.Release|x86.Build.0 = Release|Any CPU + {0B2E03F3-A1F7-4C7F-BCA7-386979C93346}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0B2E03F3-A1F7-4C7F-BCA7-386979C93346}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0B2E03F3-A1F7-4C7F-BCA7-386979C93346}.Debug|x64.ActiveCfg = Debug|Any CPU + {0B2E03F3-A1F7-4C7F-BCA7-386979C93346}.Debug|x64.Build.0 = Debug|Any CPU + {0B2E03F3-A1F7-4C7F-BCA7-386979C93346}.Debug|x86.ActiveCfg = Debug|Any CPU + {0B2E03F3-A1F7-4C7F-BCA7-386979C93346}.Debug|x86.Build.0 = Debug|Any CPU + {0B2E03F3-A1F7-4C7F-BCA7-386979C93346}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0B2E03F3-A1F7-4C7F-BCA7-386979C93346}.Release|Any CPU.Build.0 = Release|Any CPU + {0B2E03F3-A1F7-4C7F-BCA7-386979C93346}.Release|x64.ActiveCfg = Release|Any CPU + {0B2E03F3-A1F7-4C7F-BCA7-386979C93346}.Release|x64.Build.0 = Release|Any CPU + {0B2E03F3-A1F7-4C7F-BCA7-386979C93346}.Release|x86.ActiveCfg = Release|Any CPU + {0B2E03F3-A1F7-4C7F-BCA7-386979C93346}.Release|x86.Build.0 = Release|Any CPU + {1F9340A0-8D4F-46C2-80C6-1687778A6D20}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1F9340A0-8D4F-46C2-80C6-1687778A6D20}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1F9340A0-8D4F-46C2-80C6-1687778A6D20}.Debug|x64.ActiveCfg = Debug|Any CPU + {1F9340A0-8D4F-46C2-80C6-1687778A6D20}.Debug|x64.Build.0 = Debug|Any CPU + {1F9340A0-8D4F-46C2-80C6-1687778A6D20}.Debug|x86.ActiveCfg = Debug|Any CPU + {1F9340A0-8D4F-46C2-80C6-1687778A6D20}.Debug|x86.Build.0 = Debug|Any CPU + {1F9340A0-8D4F-46C2-80C6-1687778A6D20}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1F9340A0-8D4F-46C2-80C6-1687778A6D20}.Release|Any CPU.Build.0 = Release|Any CPU + {1F9340A0-8D4F-46C2-80C6-1687778A6D20}.Release|x64.ActiveCfg = Release|Any CPU + {1F9340A0-8D4F-46C2-80C6-1687778A6D20}.Release|x64.Build.0 = Release|Any CPU + {1F9340A0-8D4F-46C2-80C6-1687778A6D20}.Release|x86.ActiveCfg = Release|Any CPU + {1F9340A0-8D4F-46C2-80C6-1687778A6D20}.Release|x86.Build.0 = Release|Any CPU + {28F6702F-400A-4378-828B-02E111EE7EFE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {28F6702F-400A-4378-828B-02E111EE7EFE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {28F6702F-400A-4378-828B-02E111EE7EFE}.Debug|x64.ActiveCfg = Debug|Any CPU + {28F6702F-400A-4378-828B-02E111EE7EFE}.Debug|x64.Build.0 = Debug|Any CPU + {28F6702F-400A-4378-828B-02E111EE7EFE}.Debug|x86.ActiveCfg = Debug|Any CPU + {28F6702F-400A-4378-828B-02E111EE7EFE}.Debug|x86.Build.0 = Debug|Any CPU + {28F6702F-400A-4378-828B-02E111EE7EFE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {28F6702F-400A-4378-828B-02E111EE7EFE}.Release|Any CPU.Build.0 = Release|Any CPU + {28F6702F-400A-4378-828B-02E111EE7EFE}.Release|x64.ActiveCfg = Release|Any CPU + {28F6702F-400A-4378-828B-02E111EE7EFE}.Release|x64.Build.0 = Release|Any CPU + {28F6702F-400A-4378-828B-02E111EE7EFE}.Release|x86.ActiveCfg = Release|Any CPU + {28F6702F-400A-4378-828B-02E111EE7EFE}.Release|x86.Build.0 = Release|Any CPU + {EC6F660B-719A-491C-AE0A-FB7508A881D8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EC6F660B-719A-491C-AE0A-FB7508A881D8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EC6F660B-719A-491C-AE0A-FB7508A881D8}.Debug|x64.ActiveCfg = Debug|Any CPU + {EC6F660B-719A-491C-AE0A-FB7508A881D8}.Debug|x64.Build.0 = Debug|Any CPU + {EC6F660B-719A-491C-AE0A-FB7508A881D8}.Debug|x86.ActiveCfg = Debug|Any CPU + {EC6F660B-719A-491C-AE0A-FB7508A881D8}.Debug|x86.Build.0 = Debug|Any CPU + {EC6F660B-719A-491C-AE0A-FB7508A881D8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EC6F660B-719A-491C-AE0A-FB7508A881D8}.Release|Any CPU.Build.0 = Release|Any CPU + {EC6F660B-719A-491C-AE0A-FB7508A881D8}.Release|x64.ActiveCfg = Release|Any CPU + {EC6F660B-719A-491C-AE0A-FB7508A881D8}.Release|x64.Build.0 = Release|Any CPU + {EC6F660B-719A-491C-AE0A-FB7508A881D8}.Release|x86.ActiveCfg = Release|Any CPU + {EC6F660B-719A-491C-AE0A-FB7508A881D8}.Release|x86.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal